@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":"cliMcp.js","names":[],"sources":["../../../src/application/mcp/cliMcp.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'path';\nimport {\n defineCommand,\n definePrompt,\n defineResourceTemplate,\n installOp,\n OperationSpecRegistry,\n PromptRegistry,\n ResourceRegistry,\n} from '@contractspec/lib.contracts';\nimport { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\nimport z from 'zod';\nimport { createMcpElysiaHandler } from './common';\nimport { appLogger } from '../../infrastructure/elysia/logger';\n\nconst CLI_DOC_PATHS = {\n quickstart: 'packages/apps/cli-contractspec/QUICK_START.md',\n reference: 'packages/apps/cli-contractspec/QUICK_REFERENCE.md',\n readme: 'packages/apps/cli-contractspec/README.md',\n};\n\nconst CLI_DOC_FALLBACK = {\n quickstart:\n '# ContractSpec CLI quickstart\\n\\ncontractspec create\\ncontractspec build <spec>\\ncontractspec validate <spec>',\n reference:\n '# ContractSpec CLI reference\\n\\nKey commands: create, build, validate. See README for full options.',\n readme:\n '# ContractSpec CLI\\n\\nStabilize AI-generated code across API, DB, UI, events. Use create/build/validate commands.',\n};\n\nconst CLI_DOC_TAGS = ['cli', 'mcp'];\nconst CLI_OWNERS = ['@contractspec'];\n\nconst candidateRoots = (() => {\n const roots = new Set<string>([\n process.cwd(),\n path.resolve(process.cwd(), '..'),\n path.resolve(process.cwd(), '../..'),\n path.resolve(process.cwd(), '../../..'),\n ]);\n if (typeof __dirname === 'string') {\n roots.add(path.resolve(__dirname, '../../../../..'));\n }\n return [...roots];\n})();\n\nconst docCache = new Map<string, string>();\n\nasync function loadCliDoc(key: keyof typeof CLI_DOC_PATHS): Promise<string> {\n if (docCache.has(key)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return docCache.get(key)!;\n }\n\n const relative = CLI_DOC_PATHS[key];\n for (const root of candidateRoots) {\n const candidate = path.resolve(root, relative);\n try {\n const data = await fs.readFile(candidate, 'utf8');\n docCache.set(key, data);\n return data;\n } catch {\n // try next candidate\n }\n }\n\n const fallback = CLI_DOC_FALLBACK[key];\n docCache.set(key, fallback);\n return fallback;\n}\n\nfunction buildCliResources() {\n const resources = new ResourceRegistry();\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'cli://doc/{slug}',\n title: 'CLI documentation',\n description: 'Quickstart, reference, and README for the CLI.',\n mimeType: 'text/markdown',\n tags: CLI_DOC_TAGS,\n },\n input: z.object({\n slug: z.enum(['quickstart', 'reference', 'readme']),\n }),\n resolve: async ({ slug }) => {\n const data = await loadCliDoc(slug);\n return {\n uri: `cli://doc/${slug}`,\n mimeType: 'text/markdown',\n data,\n };\n },\n })\n );\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'cli://commands',\n title: 'CLI commands summary',\n description: 'Key ContractSpec CLI commands and when to use them.',\n mimeType: 'application/json',\n tags: CLI_DOC_TAGS,\n },\n input: z.object({}),\n resolve: async () => {\n const commands = [\n {\n command: 'contractspec create',\n summary: 'Interactive wizard to author specs (with optional AI).',\n doc: 'cli://doc/quickstart',\n },\n {\n command: 'contractspec build <specPath>',\n summary:\n 'Generate implementation code from a ContractSpec (agents + templates).',\n doc: 'cli://doc/reference',\n },\n {\n command: 'contractspec validate <specPath>',\n summary:\n 'Validate specs and optionally check implementations against them.',\n doc: 'cli://doc/reference',\n },\n ];\n\n return {\n uri: 'cli://commands',\n mimeType: 'application/json',\n data: JSON.stringify(commands, null, 2),\n };\n },\n })\n );\n\n return resources;\n}\n\nfunction buildCliPrompts() {\n const prompts = new PromptRegistry();\n\n prompts.register(\n definePrompt({\n meta: {\n key: 'cli.usage',\n version: '1.0.0',\n title: 'Use ContractSpec CLI safely',\n description:\n 'Remind agents to read CLI docs and pick commands from the canonical list.',\n tags: CLI_DOC_TAGS,\n stability: 'beta',\n owners: CLI_OWNERS,\n },\n args: [\n {\n name: 'goal',\n description: 'Task the user wants to achieve.',\n required: false,\n schema: z.string().optional(),\n },\n ],\n input: z.object({ goal: z.string().optional() }),\n render: async ({ goal }) => [\n {\n type: 'text',\n text: `Use CLI commands only from cli://commands. Prefer quickstart for newcomers and reference for options.${goal ? ` Goal: ${goal}.` : ''}`,\n },\n { type: 'resource' as const, uri: 'cli://commands', title: 'Commands' },\n {\n type: 'resource' as const,\n uri: 'cli://doc/quickstart',\n title: 'Quickstart',\n },\n ],\n })\n );\n\n return prompts;\n}\n\nfunction buildCliOps() {\n const registry = new OperationSpecRegistry();\n\n const CliSuggestInput = defineSchemaModel({\n name: 'CliSuggestInput',\n fields: {\n goal: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n prefersAi: { type: ScalarTypeEnum.Boolean(), isOptional: true },\n },\n });\n\n const CliSuggestOutput = defineSchemaModel({\n name: 'CliSuggestOutput',\n fields: {\n command: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n docUri: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n });\n\n const suggestSpec = defineCommand({\n meta: {\n key: 'cli.suggestCommand',\n version: '1.0.0',\n stability: 'stable',\n owners: CLI_OWNERS,\n tags: CLI_DOC_TAGS,\n description: 'Recommend a CLI command for the requested goal.',\n goal: 'Help AI agents choose the correct CLI entrypoint quickly.',\n context: 'Used inside the CLI MCP server.',\n },\n io: {\n input: CliSuggestInput,\n output: CliSuggestOutput,\n },\n policy: {\n auth: 'anonymous',\n },\n });\n\n installOp(registry, suggestSpec, async ({ goal, prefersAi }) => {\n const lower = goal.toLowerCase();\n\n if (lower.includes('create') || lower.includes('new')) {\n return {\n command: prefersAi ? 'contractspec create --ai' : 'contractspec create',\n docUri: 'cli://doc/quickstart',\n reason:\n 'Creates a new ContractSpec interactively (optionally with AI).',\n };\n }\n\n if (lower.includes('build') || lower.includes('generate')) {\n return {\n command: 'contractspec build <path-to-spec>',\n docUri: 'cli://doc/reference',\n reason:\n 'Builds implementation code from a spec using agents + templates.',\n };\n }\n\n if (lower.includes('validate') || lower.includes('check')) {\n return {\n command: 'contractspec validate <path-to-spec>',\n docUri: 'cli://doc/reference',\n reason:\n 'Validates a spec and optionally checks its implementation for drift.',\n };\n }\n\n return {\n command: 'contractspec --help',\n docUri: 'cli://doc/readme',\n reason: 'Fallback when the goal is unclear; read README for options.',\n };\n });\n\n return registry;\n}\n\nexport function createCliMcpHandler(path = '/api/mcp/cli') {\n return createMcpElysiaHandler({\n logger: appLogger,\n path,\n serverName: 'contractspec-cli-mcp',\n ops: buildCliOps(),\n resources: buildCliResources(),\n prompts: buildCliPrompts(),\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","names":[],"sources":["../../../src/application/mcp/common.ts"],"sourcesContent":["import type {\n OperationSpecRegistry,\n PromptRegistry,\n ResourceRegistry,\n} from '@contractspec/lib.contracts';\nimport {\n createMcpServer,\n PresentationRegistry,\n} from '@contractspec/lib.contracts';\nimport type { PresentationSpec } from '@contractspec/lib.contracts/presentations';\nimport { mcp } from 'elysia-mcp';\nimport { Logger } from '@contractspec/lib.logger';\n\nfunction createConsoleLikeLogger(logger: Logger) {\n const isDebug = process.env.CONTRACTSPEC_MCP_DEBUG === '1';\n\n const toMessage = (args: unknown[]) =>\n args.map((a) => (typeof a === 'string' ? a : JSON.stringify(a))).join(' ');\n\n return {\n log: (...args: unknown[]) => {\n if (!isDebug) return;\n logger.info(toMessage(args));\n },\n info: (...args: unknown[]) => {\n if (!isDebug) return;\n logger.info(toMessage(args));\n },\n warn: (...args: unknown[]) => {\n logger.warn(toMessage(args));\n },\n error: (...args: unknown[]) => {\n logger.error(toMessage(args));\n },\n debug: (...args: unknown[]) => {\n if (!isDebug) return;\n logger.debug(toMessage(args));\n },\n };\n}\n\ninterface McpHttpHandlerConfig {\n path: string;\n serverName: string;\n ops: OperationSpecRegistry;\n resources: ResourceRegistry;\n prompts: PromptRegistry;\n presentations?: PresentationSpec[];\n logger: Logger;\n}\n\nconst baseCtx = {\n actor: 'anonymous' as const,\n decide: async () => ({ effect: 'allow' as const }),\n};\n\n// export function createMcpNextjsHandler({\n// path,\n// serverName,\n// ops,\n// resources,\n// prompts,\n// presentationsV2,\n// }: McpHttpHandlerConfig) {\n// return createMcpHandler(\n// (server) => {\n// createMcpServer(server, ops, resources, prompts, {\n// toolCtx: () => baseCtx,\n// promptCtx: () => ({ locale: 'en' }),\n// resourceCtx: () => ({ locale: 'en' }),\n// presentationsV2,\n// });\n// },\n// {\n// serverInfo: {\n// name: serverName,\n// version: '1.0.0',\n// },\n// },\n// {\n// // basePath: path,\n// disableSse: true,\n// verboseLogs: true,\n// }\n// );\n// }\n\nexport function createMcpElysiaHandler({\n logger,\n path,\n serverName,\n ops,\n resources,\n prompts,\n presentations,\n}: McpHttpHandlerConfig) {\n logger.info('Setting up MCP handler...');\n return mcp({\n basePath: path,\n // Do NOT use console.* in production paths; adapt to console-like interface for the plugin.\n logger: createConsoleLikeLogger(logger),\n serverInfo: {\n name: serverName,\n version: '1.0.0',\n },\n // Cursor MCP HTTP clients may not persist Mcp-Session-Id headers reliably.\n // Run in stateless + JSON response mode by default to maximize compatibility.\n // Set CONTRACTSPEC_MCP_STATEFUL=1 to restore sessionful behavior.\n stateless: process.env.CONTRACTSPEC_MCP_STATEFUL !== '1',\n enableJsonResponse: true,\n capabilities: {\n tools: {},\n resources: {},\n prompts: {},\n logging: {},\n },\n setupServer: (server) => {\n logger.info('Setting up MCP server...');\n createMcpServer(server, ops, resources, prompts, {\n logger,\n toolCtx: () => baseCtx,\n promptCtx: () => ({ locale: 'en' }),\n resourceCtx: () => ({ locale: 'en' }),\n presentations: new PresentationRegistry(presentations),\n });\n },\n });\n}\n"],"mappings":";;;;;AAaA,SAAS,wBAAwB,QAAgB;CAC/C,MAAM,UAAU,QAAQ,IAAI,2BAA2B;CAEvD,MAAM,aAAa,SACjB,KAAK,KAAK,MAAO,OAAO,MAAM,WAAW,IAAI,KAAK,UAAU,EAAE,CAAE,CAAC,KAAK,IAAI;AAE5E,QAAO;EACL,MAAM,GAAG,SAAoB;AAC3B,OAAI,CAAC,QAAS;AACd,UAAO,KAAK,UAAU,KAAK,CAAC;;EAE9B,OAAO,GAAG,SAAoB;AAC5B,OAAI,CAAC,QAAS;AACd,UAAO,KAAK,UAAU,KAAK,CAAC;;EAE9B,OAAO,GAAG,SAAoB;AAC5B,UAAO,KAAK,UAAU,KAAK,CAAC;;EAE9B,QAAQ,GAAG,SAAoB;AAC7B,UAAO,MAAM,UAAU,KAAK,CAAC;;EAE/B,QAAQ,GAAG,SAAoB;AAC7B,OAAI,CAAC,QAAS;AACd,UAAO,MAAM,UAAU,KAAK,CAAC;;EAEhC;;AAaH,MAAM,UAAU;CACd,OAAO;CACP,QAAQ,aAAa,EAAE,QAAQ,SAAkB;CAClD;AAiCD,SAAgB,uBAAuB,EACrC,QACA,MACA,YACA,KACA,WACA,SACA,iBACuB;AACvB,QAAO,KAAK,4BAA4B;AACxC,QAAO,IAAI;EACT,UAAU;EAEV,QAAQ,wBAAwB,OAAO;EACvC,YAAY;GACV,MAAM;GACN,SAAS;GACV;EAID,WAAW,QAAQ,IAAI,8BAA8B;EACrD,oBAAoB;EACpB,cAAc;GACZ,OAAO,EAAE;GACT,WAAW,EAAE;GACb,SAAS,EAAE;GACX,SAAS,EAAE;GACZ;EACD,cAAc,WAAW;AACvB,UAAO,KAAK,2BAA2B;AACvC,mBAAgB,QAAQ,KAAK,WAAW,SAAS;IAC/C;IACA,eAAe;IACf,kBAAkB,EAAE,QAAQ,MAAM;IAClC,oBAAoB,EAAE,QAAQ,MAAM;IACpC,eAAe,IAAI,qBAAqB,cAAc;IACvD,CAAC;;EAEL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docsMcp.js","names":[],"sources":["../../../src/application/mcp/docsMcp.ts"],"sourcesContent":["import {\n defaultDocRegistry,\n definePrompt,\n defineResourceTemplate,\n installOp,\n OperationSpecRegistry,\n PromptRegistry,\n ResourceRegistry,\n} from '@contractspec/lib.contracts';\nimport z from 'zod';\nimport type { DocPresentationRoute } from '@contractspec/lib.contracts/docs';\nimport { createMcpElysiaHandler } from './common';\nimport { appLogger } from '../../infrastructure/elysia/logger';\nimport { docsSearchSpec } from '../../features/docs';\n\nconst DOC_OWNERS = ['@contractspec'];\nconst DOC_TAGS = ['docs', 'mcp'];\n\nfunction buildDocResources(routes: DocPresentationRoute[]) {\n const resources = new ResourceRegistry();\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'docs://list',\n title: 'DocBlocks index',\n description:\n 'All registered DocBlocks with route, visibility, tags, and summary.',\n mimeType: 'application/json',\n tags: DOC_TAGS,\n },\n input: z.object({}),\n resolve: async () => {\n const docs = routes.map(({ block, route }) => ({\n id: block.id,\n title: block.title,\n summary: block.summary ?? '',\n tags: block.tags ?? [],\n visibility: block.visibility ?? 'public',\n route,\n }));\n\n return {\n uri: 'docs://list',\n mimeType: 'application/json',\n data: JSON.stringify(docs, null, 2),\n };\n },\n })\n );\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'docs://doc/{id}',\n title: 'DocBlock markdown',\n description: 'Fetch DocBlock body by id as markdown.',\n mimeType: 'text/markdown',\n tags: DOC_TAGS,\n },\n input: z.object({ id: z.string() }),\n resolve: async ({ id }) => {\n const found = defaultDocRegistry.get(id);\n if (!found) {\n return {\n uri: `docs://doc/${encodeURIComponent(id)}`,\n mimeType: 'text/plain',\n data: `DocBlock not found: ${id}`,\n };\n }\n\n return {\n uri: `docs://doc/${encodeURIComponent(id)}`,\n mimeType: 'text/markdown',\n data: String(found.block.body ?? ''),\n };\n },\n })\n );\n\n return resources;\n}\n\nfunction buildDocPrompts() {\n const prompts = new PromptRegistry();\n\n prompts.register(\n definePrompt({\n meta: {\n key: 'docs.navigator',\n version: '1.0.0',\n title: 'Find relevant ContractSpec docs',\n description: 'Guide agents to pick the right DocBlock by topic or tag.',\n tags: DOC_TAGS,\n stability: 'beta',\n owners: DOC_OWNERS,\n },\n args: [\n {\n name: 'topic',\n description: 'Goal or subject to search for.',\n required: false,\n schema: z.string().optional(),\n },\n {\n name: 'tag',\n description: 'Optional tag filter.',\n required: false,\n schema: z.string().optional(),\n },\n ],\n input: z.object({\n topic: z.string().optional(),\n tag: z.string().optional(),\n }),\n render: async ({ topic, tag }) => {\n const parts = [\n {\n type: 'text' as const,\n text: `Use the docs index to choose DocBlocks. If a specific topic is provided, prefer docs whose id/title/summary match it.${topic ? ` Topic: ${topic}.` : ''}${tag ? ` Tag: ${tag}.` : ''}`,\n },\n {\n type: 'resource' as const,\n uri: 'docs://list',\n title: 'DocBlocks index',\n },\n ];\n return parts;\n },\n })\n );\n\n return prompts;\n}\n\nfunction buildDocOps(routes: DocPresentationRoute[]) {\n const registry = new OperationSpecRegistry();\n\n // Use the module-level spec from docs.contracts.ts\n installOp(registry, docsSearchSpec, async (args) => {\n const query = args.query?.toLowerCase().trim();\n const tagsFilter = args.tag?.map((t) => t.toLowerCase().trim()) ?? [];\n const visibility = args.visibility?.toLowerCase().trim();\n\n const docs = routes\n .map(({ block, route }) => ({\n id: block.id,\n title: block.title,\n summary: block.summary ?? '',\n tags: block.tags ?? [],\n visibility: (block.visibility ?? 'public').toLowerCase(),\n route,\n }))\n .filter((doc) => {\n const matchesQuery = query\n ? doc.id.toLowerCase().includes(query) ||\n doc.title.toLowerCase().includes(query) ||\n doc.summary.toLowerCase().includes(query)\n : true;\n const matchesTags = tagsFilter.length\n ? tagsFilter.every((t) =>\n doc.tags.some((tag) => tag.toLowerCase().includes(t))\n )\n : true;\n const matchesVisibility = visibility\n ? doc.visibility === visibility\n : true;\n return matchesQuery && matchesTags && matchesVisibility;\n });\n\n return {\n docs,\n items: docs,\n total: docs.length,\n };\n });\n\n return registry;\n}\n\nexport function createDocsMcpHandler(path = '/api/mcp/docs') {\n const routes = defaultDocRegistry.list();\n\n return createMcpElysiaHandler({\n logger: appLogger,\n path,\n serverName: 'contractspec-docs-mcp',\n ops: buildDocOps(routes),\n resources: buildDocResources(routes),\n prompts: buildDocPrompts(),\n presentations: routes.map(({ descriptor }) => descriptor),\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"internalMcp.js","names":[],"sources":["../../../src/application/mcp/internalMcp.ts"],"sourcesContent":["import {\n defineCommand,\n definePrompt,\n defineResourceTemplate,\n installOp,\n OperationSpecRegistry,\n PromptRegistry,\n ResourceRegistry,\n} from '@contractspec/lib.contracts';\nimport { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\nimport z from 'zod';\nimport { createMcpElysiaHandler } from './common';\nimport { appLogger } from '../../infrastructure/elysia/logger';\nimport {\n getExample,\n listExamples,\n searchExamples,\n} from '@contractspec/module.examples';\n\nconst INTERNAL_TAGS = ['internal', 'mcp'];\nconst INTERNAL_OWNERS = ['@contractspec'];\n\nconst ENDPOINTS = {\n docs: '/api/mcp/docs',\n cli: '/api/mcp/cli',\n internal: '/api/mcp/internal',\n graphql: '/graphql',\n health: '/health',\n};\n\nfunction buildInternalResources() {\n const resources = new ResourceRegistry();\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'examples://list{?q}',\n title: 'ContractSpec examples registry',\n description:\n 'List available examples (templates, integrations, knowledge, scripts). Optional query `q` filters results.',\n mimeType: 'application/json',\n tags: ['examples', ...INTERNAL_TAGS],\n },\n input: z.object({ q: z.string().optional() }),\n resolve: async ({ q }) => {\n const items = q ? searchExamples(q) : [...listExamples()];\n return {\n uri: q\n ? `examples://list?q=${encodeURIComponent(q)}`\n : 'examples://list',\n mimeType: 'application/json',\n data: JSON.stringify(items, null, 2),\n };\n },\n })\n );\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'examples://example/{id}',\n title: 'ContractSpec example (by id)',\n description: 'Fetch a single example manifest by id.',\n mimeType: 'application/json',\n tags: ['examples', ...INTERNAL_TAGS],\n },\n input: z.object({ id: z.string().min(1) }),\n resolve: async ({ id }) => {\n const example = getExample(id);\n if (!example) {\n return {\n uri: `examples://example/${encodeURIComponent(id)}`,\n mimeType: 'application/json',\n data: JSON.stringify(\n { error: 'not_found', id, message: `Unknown example id: ${id}` },\n null,\n 2\n ),\n };\n }\n return {\n uri: `examples://example/${encodeURIComponent(id)}`,\n mimeType: 'application/json',\n data: JSON.stringify(example, null, 2),\n };\n },\n })\n );\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'internal://endpoints',\n title: 'ContractSpec MCP endpoints',\n description: 'Endpoints for docs, CLI, internal MCP servers.',\n mimeType: 'application/json',\n tags: INTERNAL_TAGS,\n },\n input: z.object({}),\n resolve: async () => ({\n uri: 'internal://endpoints',\n mimeType: 'application/json',\n data: JSON.stringify(ENDPOINTS, null, 2),\n }),\n })\n );\n\n resources.register(\n defineResourceTemplate({\n meta: {\n uriTemplate: 'internal://playbook',\n title: 'Internal MCP usage playbook',\n description:\n 'How internal agents should discover docs, CLI usage, and endpoints.',\n mimeType: 'text/markdown',\n tags: INTERNAL_TAGS,\n },\n input: z.object({}),\n resolve: async () => ({\n uri: 'internal://playbook',\n mimeType: 'text/markdown',\n data: [\n '# Internal MCP playbook',\n '- Connect to docs MCP first for canonical specs.',\n '- Use CLI MCP to surface quickstart/reference before running commands.',\n '- Keep calls read-only unless explicitly approved.',\n `- Endpoints: ${ENDPOINTS.docs}, ${ENDPOINTS.cli}, ${ENDPOINTS.internal}.`,\n '- For API work, GraphQL at /graphql; health at /health.',\n ].join('\\n'),\n }),\n })\n );\n\n return resources;\n}\n\nfunction buildInternalPrompts() {\n const prompts = new PromptRegistry();\n\n prompts.register(\n definePrompt({\n meta: {\n key: 'internal.bootstrap',\n version: '1.0.0',\n title: 'Bootstrap internal ContractSpec agent',\n description:\n 'Points agents to the correct MCP endpoints and guardrails.',\n tags: INTERNAL_TAGS,\n owners: INTERNAL_OWNERS,\n stability: 'beta',\n },\n args: [],\n input: z.object({}),\n render: async () => [\n {\n type: 'text',\n text: 'Start with internal://endpoints to pick the right MCP. Use docs MCP for specifications and CLI MCP for commands. Keep actions read-only unless explicitly approved.',\n },\n {\n type: 'resource' as const,\n uri: 'internal://endpoints',\n title: 'Endpoints',\n },\n ],\n })\n );\n\n return prompts;\n}\n\nfunction buildInternalOps() {\n const registry = new OperationSpecRegistry();\n\n const InternalDescribeOutput = defineSchemaModel({\n name: 'InternalDescribeOutput',\n fields: {\n endpoints: {\n type: ScalarTypeEnum.JSONObject(),\n isOptional: false,\n },\n notes: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n });\n\n const describeSpec = defineCommand({\n meta: {\n key: 'internal.describe',\n version: '1.0.0',\n stability: 'stable',\n owners: INTERNAL_OWNERS,\n tags: INTERNAL_TAGS,\n description:\n 'Return MCP endpoints and guidance for internal ContractSpec agents.',\n goal: 'Speed up internal development with the correct MCP entrypoints.',\n context: 'Used by internal MCP surface; read-only.',\n },\n io: {\n input: defineSchemaModel({\n name: 'InternalDescribeInput',\n fields: {},\n }),\n output: InternalDescribeOutput,\n },\n policy: {\n auth: 'anonymous',\n },\n });\n\n installOp(registry, describeSpec, async () => ({\n endpoints: ENDPOINTS,\n notes:\n 'Use docs MCP for canonical specs, CLI MCP for contractspec commands, and keep side-effecting actions gated behind human review.',\n }));\n\n return registry;\n}\n\nexport function createInternalMcpHandler(path = '/api/mcp/internal') {\n return createMcpElysiaHandler({\n logger: appLogger,\n path,\n serverName: 'contractspec-internal-mcp',\n ops: buildInternalOps(),\n resources: buildInternalResources(),\n prompts: buildInternalPrompts(),\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocsIndexPage.js","names":[],"sources":["../../../src/components/docs/DocsIndexPage.tsx"],"sourcesContent":["import { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { BookOpen, ChevronRight, Shield, Zap } from 'lucide-react';\n\n// export const metadata: Metadata = {\n// title: 'Documentation – ContractSpec',\n// description:\n// 'Learn to stabilize your AI-generated code. Define contracts, generate consistent code across all surfaces, regenerate safely.',\n// keywords: [\n// 'documentation',\n// 'guides',\n// 'API reference',\n// 'spec-first compiler',\n// 'AI code stabilization',\n// 'TypeScript',\n// 'contracts',\n// ],\n// openGraph: {\n// title: 'Documentation – ContractSpec',\n// description:\n// 'Learn to stabilize your AI-generated code with spec-first development.',\n// url: 'https://contractspec.io/docs',\n// type: 'website',\n// },\n// alternates: {\n// canonical: 'https://contractspec.io/docs',\n// },\n// };\n\nexport function DocsIndexPage() {\n return (\n <div className=\"space-y-12\">\n {/* Hero */}\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold md:text-5xl\">Documentation</h1>\n <p className=\"text-muted-foreground max-w-2xl text-lg\">\n Stabilize your AI-generated code. Define contracts once, generate\n consistent code across all surfaces, regenerate safely anytime.\n </p>\n </div>\n\n {/* Quick Links */}\n <div className=\"grid gap-6 md:grid-cols-3\">\n <Link\n href=\"/docs/getting-started/installation\"\n className=\"card-subtle group space-y-3 p-6 transition-colors hover:border-violet-500/50\"\n >\n <div className=\"flex items-start justify-between\">\n <div>\n <h3 className=\"text-lg font-bold transition-colors group-hover:text-violet-400\">\n Get started\n </h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Install ContractSpec and define your first contract in minutes.\n </p>\n </div>\n <Zap size={20} className=\"shrink-0 text-violet-400\" />\n </div>\n </Link>\n\n <Link\n href=\"/docs/specs/capabilities\"\n className=\"card-subtle group space-y-3 p-6 transition-colors hover:border-violet-500/50\"\n >\n <div className=\"flex items-start justify-between\">\n <div>\n <h3 className=\"text-lg font-bold transition-colors group-hover:text-violet-400\">\n Core contracts\n </h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Commands, queries, events, and presentations. The building\n blocks.\n </p>\n </div>\n <BookOpen size={20} className=\"shrink-0 text-violet-400\" />\n </div>\n </Link>\n\n <Link\n href=\"/docs/safety/signing\"\n className=\"card-subtle group space-y-3 p-6 transition-colors hover:border-violet-500/50\"\n >\n <div className=\"flex items-start justify-between\">\n <div>\n <h3 className=\"text-lg font-bold transition-colors group-hover:text-violet-400\">\n Safe regeneration\n </h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Golden tests, migrations, signing, and audit trails.\n </p>\n </div>\n <Shield size={20} className=\"shrink-0 text-violet-400\" />\n </div>\n </Link>\n\n <Link\n href=\"/studio\"\n className=\"card-subtle group space-y-3 p-6 transition-colors hover:border-violet-500/50\"\n >\n <div className=\"flex items-start justify-between\">\n <div>\n <h3 className=\"text-lg font-bold transition-colors group-hover:text-violet-400\">\n Studio (managed)\n </h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Visual builder, deployments, and team collaboration.\n </p>\n </div>\n <Zap size={20} className=\"shrink-0 text-violet-400\" />\n </div>\n </Link>\n </div>\n\n {/* Quick Start */}\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Quick start</h2>\n <div className=\"card-subtle space-y-4 p-6\">\n <p className=\"text-muted-foreground\">\n Add ContractSpec to your project and define your first contract:\n </p>\n <CodeBlock\n language=\"bash\"\n filename=\"docs-quick-start\"\n code={`# Install the CLI and core libraries\nbun add -D contractspec\nbun add @contractspec/lib.contracts @contractspec/lib.schema\n\n# Create your first contract\nbun contractspec create --type operation\n\n# Generate implementation\nbun contractspec build src/contracts/mySpec.ts`}\n />\n\n <div className=\"flex flex-wrap gap-2\">\n <Link\n href=\"/docs/getting-started/installation\"\n className=\"btn-primary text-sm\"\n >\n Installation guide <ChevronRight size={16} />\n </Link>\n <Link\n href=\"/docs/getting-started/hello-world\"\n className=\"btn-ghost text-sm\"\n >\n First contract tutorial\n </Link>\n </div>\n\n {/*<Link*/}\n {/* href=\"/docs/libraries/ai-agent\"*/}\n {/* className=\"card-subtle group space-y-3 p-6 transition-colors hover:border-violet-500/50\"*/}\n {/*>*/}\n {/* <div className=\"flex items-start justify-between\">*/}\n {/* <div>*/}\n {/* <p className=\"text-xs font-semibold tracking-[0.2em] text-violet-500 uppercase\">*/}\n {/* Featured*/}\n {/* </p>*/}\n {/* <h3 className=\"text-lg font-bold transition-colors group-hover:text-violet-400\">*/}\n {/* AI Governance*/}\n {/* </h3>*/}\n {/* <p className=\"text-muted-foreground mt-1 text-sm\">*/}\n {/* Constrain what AI agents can change. Enforce contracts they*/}\n {/* must respect. Human-in-the-loop guardrails.*/}\n {/* </p>*/}\n {/* </div>*/}\n {/* <Activity size={20} className=\"shrink-0 text-violet-400\" />*/}\n {/* </div>*/}\n {/*</Link>*/}\n </div>\n </div>\n\n {/* Browse All Docs */}\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Browse all documentation</h2>\n <p className=\"text-muted-foreground\">\n Use the sidebar or choose a topic to explore spec-first development.\n </p>\n <div className=\"mt-6 grid gap-4 md:grid-cols-2\">\n {[\n {\n title: 'Getting Started',\n description: 'Installation, first contract, and CLI usage',\n href: '/docs/getting-started/installation',\n },\n {\n title: 'Guides',\n description: 'Runnable adoption scenarios with examples',\n href: '/docs/guides',\n },\n {\n title: 'Intent Pages',\n description: 'SEO-optimized pages for specific developer needs',\n href: '/docs/intent',\n },\n {\n title: 'Ecosystem',\n description: 'Plugin API, templates, and integrations',\n href: '/docs/ecosystem/plugins',\n },\n {\n title: 'Core Contracts',\n description:\n 'Commands, queries, events, presentations, workflows',\n href: '/docs/specs/capabilities',\n },\n {\n title: 'Safe Regeneration',\n description: 'Signing, migrations, golden tests, compliance',\n href: '/docs/safety/signing',\n },\n {\n title: 'Multi-Surface Output',\n description: 'REST, GraphQL, Prisma, MCP tools, React',\n href: '/docs/advanced/renderers',\n },\n {\n title: 'Libraries',\n description: 'Core runtime libraries and utilities',\n href: '/docs/libraries',\n },\n {\n title: 'AI Governance',\n description: 'Agents, contract enforcement, approval workflows',\n href: '/docs/libraries/ai-agent',\n },\n {\n title: 'Architecture',\n description: 'Multi-tenancy, integrations, knowledge sources',\n href: '/docs/architecture',\n },\n {\n title: 'Manifesto',\n description: 'Our philosophy: compiler not prison',\n href: '/docs/manifesto',\n },\n ].map((topic, i) => (\n <Link\n key={i}\n href={topic.href}\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h3 className=\"font-bold transition-colors group-hover:text-violet-400\">\n {topic.title}\n </h3>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n {topic.description}\n </p>\n </Link>\n ))}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AA6BA,SAAgB,gBAAgB;AAC9B,QACE,qBAAC;EAAI,WAAU;;GAEb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAiC;MAAkB,EACjE,oBAAC;KAAE,WAAU;eAA0C;MAGnD;KACA;GAGN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MACC,MAAK;MACL,WAAU;gBAEV,qBAAC;OAAI,WAAU;kBACb,qBAAC,oBACC,oBAAC;QAAG,WAAU;kBAAkE;SAE3E,EACL,oBAAC;QAAE,WAAU;kBAAqC;SAE9C,IACA,EACN,oBAAC;QAAI,MAAM;QAAI,WAAU;SAA6B;QAClD;OACD;KAEP,oBAAC;MACC,MAAK;MACL,WAAU;gBAEV,qBAAC;OAAI,WAAU;kBACb,qBAAC,oBACC,oBAAC;QAAG,WAAU;kBAAkE;SAE3E,EACL,oBAAC;QAAE,WAAU;kBAAqC;SAG9C,IACA,EACN,oBAAC;QAAS,MAAM;QAAI,WAAU;SAA6B;QACvD;OACD;KAEP,oBAAC;MACC,MAAK;MACL,WAAU;gBAEV,qBAAC;OAAI,WAAU;kBACb,qBAAC,oBACC,oBAAC;QAAG,WAAU;kBAAkE;SAE3E,EACL,oBAAC;QAAE,WAAU;kBAAqC;SAE9C,IACA,EACN,oBAAC;QAAO,MAAM;QAAI,WAAU;SAA6B;QACrD;OACD;KAEP,oBAAC;MACC,MAAK;MACL,WAAU;gBAEV,qBAAC;OAAI,WAAU;kBACb,qBAAC,oBACC,oBAAC;QAAG,WAAU;kBAAkE;SAE3E,EACL,oBAAC;QAAE,WAAU;kBAAqC;SAE9C,IACA,EACN,oBAAC;QAAI,MAAM;QAAI,WAAU;SAA6B;QAClD;OACD;;KACH;GAGN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAgB,EACnD,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAE,WAAU;iBAAwB;QAEjC;MACJ,oBAAC;OACC,UAAS;OACT,UAAS;OACT,MAAM;;;;;;;;;QASN;MAEF,qBAAC;OAAI,WAAU;kBACb,qBAAC;QACC,MAAK;QACL,WAAU;mBACX,uBACoB,oBAAC,gBAAa,MAAM,KAAM;SACxC,EACP,oBAAC;QACC,MAAK;QACL,WAAU;kBACX;SAEM;QACH;;MAsBF;KACF;GAGN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA6B;KAChE,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACZ;OACC;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aACE;QACF,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACD;QACE,OAAO;QACP,aAAa;QACb,MAAM;QACP;OACF,CAAC,KAAK,OAAO,MACZ,qBAAC;OAEC,MAAM,MAAM;OACZ,WAAU;kBAEV,oBAAC;QAAG,WAAU;kBACX,MAAM;SACJ,EACL,oBAAC;QAAE,WAAU;kBACV,MAAM;SACL;SATC,EAUA,CACP;OACE;;KACF;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedMCPPage.js","names":[],"sources":["../../../../src/components/docs/advanced/AdvancedMCPPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function AdvancedMCPPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">MCP Adapters</h1>\n <p className=\"text-muted-foreground\">\n The <strong>Model Context Protocol (MCP)</strong> is an open standard\n for connecting AI models to external tools and data sources.\n ContractSpec provides MCP adapters that allow you to expose your\n capabilities as MCP tools and consume external MCP servers as\n capabilities.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Why MCP integration matters</h2>\n <p className=\"text-muted-foreground\">\n AI agents need access to real-world tools and data to be useful. MCP\n provides a standardized way to expose these capabilities. By\n integrating ContractSpec with MCP, you can:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Let AI agents invoke your ContractSpec capabilities safely and\n securely\n </li>\n <li>\n Use external MCP servers (databases, APIs, search engines) as\n capability providers in your workflows\n </li>\n <li>\n Build AI-powered features without writing custom integration code\n </li>\n <li>Enforce policies on AI agent actions just like any other user</li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n Exposing capabilities as MCP tools\n </h2>\n <p className=\"text-muted-foreground\">\n Any{' '}\n <Link\n href=\"/docs/specs/capabilities\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n CapabilitySpec\n </Link>{' '}\n can be automatically exposed as an MCP tool. ContractSpec generates:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n A tool schema describing the capability's inputs, outputs, and\n purpose\n </li>\n <li>An MCP server endpoint that AI agents can connect to</li>\n <li>\n Policy enforcement ensuring agents can only invoke capabilities\n they're authorized to use\n </li>\n <li>\n Audit logging of all agent actions for compliance and debugging\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example: Exposing a capability</h2>\n <p className=\"text-muted-foreground\">\n Here's how to expose ContractSpec operations as MCP tools:\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 { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { createMcpServer } from '@contractspec/lib.contracts/server/provider-mcp';\nimport { registry, resources, prompts } from './lib/registry';\n\nconst server = new McpServer({\n name: 'my-app-mcp',\n version: '1.0.0',\n});\n\ncreateMcpServer(server, registry, resources, prompts, {\n toolCtx: () => ({ actor: 'ai-agent' }),\n promptCtx: () => ({ userId: null, orgId: null }),\n resourceCtx: () => ({ userId: null, orgId: null }),\n});\n\nconst transport = new StdioServerTransport();\nawait server.connect(transport);`}</pre>\n </div>\n <p className=\"text-muted-foreground\">\n AI agents can now discover and invoke your operations through the MCP\n protocol. ContractSpec handles authentication, authorization, and\n execution automatically via the `OperationSpecRegistry`.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Consuming external MCP servers</h2>\n <p className=\"text-muted-foreground\">\n You can integrate external MCP servers into your workflows. Define an\n integration spec and use it in your operations:\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 { defineIntegration } from '@contractspec/lib.contracts';\nimport { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\nconst SearchProductsIntegration = defineIntegration({\n meta: {\n key: 'products.search',\n version: '1.0.0',\n category: 'mcp',\n description: 'Search products via external MCP server',\n },\n connection: {\n serverUrl: 'https://api.example.com/mcp',\n toolName: 'search_products',\n },\n io: {\n input: new SchemaModel({\n name: 'SearchProductsInput',\n fields: {\n query: { type: ScalarTypeEnum.String(), isOptional: false },\n category: { type: ScalarTypeEnum.String(), isOptional: true },\n },\n }),\n output: new SchemaModel({\n name: 'ProductResults',\n fields: {\n products: { type: ScalarTypeEnum.JSON(), isOptional: false, isArray: true },\n },\n }),\n },\n});`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Policy enforcement for AI agents</h2>\n <p className=\"text-muted-foreground\">\n AI agents are treated like any other actor in ContractSpec. They must\n authenticate, and all their actions are subject to{' '}\n <Link\n href=\"/docs/specs/policy\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n PolicySpecs\n </Link>\n . You can define specific policies 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 { definePolicy } from '@contractspec/lib.contracts';\n\nexport const AIAgentRestrictions = definePolicy({\n meta: {\n key: 'ai.agent.restrictions',\n version: '1.0.0',\n description: 'Restrict AI agent actions',\n },\n rules: [\n {\n id: 'agents-read-only',\n effect: 'DENY',\n condition: (ctx) => ctx.actor === 'ai-agent' && ctx.action === 'write',\n },\n {\n id: 'agents-require-approval',\n effect: 'DENY',\n condition: (ctx, spec) => \n ctx.actor === 'ai-agent' && \n spec.policy.escalate === 'human_review' &&\n !ctx.approvalGranted,\n },\n ],\n});`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Human-in-the-loop workflows</h2>\n <p className=\"text-muted-foreground\">\n For sensitive operations, you can require human approval before an AI\n agent can proceed. ContractSpec provides built-in approval workflows:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Agent requests permission to invoke a capability</li>\n <li>\n Request is sent to designated approvers (via email, Slack, etc.)\n </li>\n <li>Approver reviews the request and approves or denies it</li>\n <li>Agent receives the decision and can proceed if approved</li>\n </ul>\n <p className=\"text-muted-foreground\">\n All approval decisions are logged in the{' '}\n <Link\n href=\"/docs/safety/auditing\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n audit log\n </Link>\n .\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 read-only capabilities for AI agents—only grant write\n access when necessary.\n </li>\n <li>\n Use human-in-the-loop approval for any capability that modifies\n critical data or triggers financial transactions.\n </li>\n <li>\n Set rate limits to prevent runaway agents from overwhelming your\n system.\n </li>\n <li>\n Provide clear, detailed descriptions for each capability so agents\n know when to use them.\n </li>\n <li>\n Monitor agent actions closely in production and adjust policies as\n needed.\n </li>\n <li>\n Test agent integrations thoroughly with realistic scenarios before\n deploying.\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/advanced/renderers\" className=\"btn-ghost\">\n Previous: Custom Renderers\n </Link>\n <Link href=\"/docs/advanced/telemetry\" className=\"btn-primary\">\n Next: Telemetry <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAGA,SAAgB,kBAAkB;AAChC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAiB,EACpD,qBAAC;KAAE,WAAU;;MAAwB;MAC/B,oBAAC,sBAAO,iCAAqC;;;MAK/C;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAgC;KACnE,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,4EAGC;OACL,oBAAC,kBAAG,yGAGC;OACL,oBAAC,kBAAG,sEAEC;OACL,oBAAC,kBAAG,kEAAkE;;OACnE;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAE9B;KACL,qBAAC;MAAE,WAAU;;OAAwB;OAC/B;OACJ,oBAAC;QACC,MAAK;QACL,WAAU;kBACX;SAEM;OAAC;OAAI;;OAEV;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,2EAGC;OACL,oBAAC,kBAAG,yDAAyD;OAC7D,oBAAC,kBAAG,8FAGC;OACL,oBAAC,kBAAG,oEAEC;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAmC;KACtE,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;oCAiBwB;OAC1B;KACN,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAmC;KACtE,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BL;OACG;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAqC;KACxE,qBAAC;MAAE,WAAU;;OAAwB;OAEgB;OACnD,oBAAC;QACC,MAAK;QACL,WAAU;kBACX;SAEM;;;OAEL;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;OAuBL;OACG;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAgC;KACnE,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,qDAAqD;OACzD,oBAAC,kBAAG,qEAEC;OACL,oBAAC,kBAAG,2DAA2D;OAC/D,oBAAC,kBAAG,4DAA4D;;OAC7D;KACL,qBAAC;MAAE,WAAU;;OAAwB;OACM;OACzC,oBAAC;QACC,MAAK;QACL,WAAU;kBACX;SAEM;;;OAEL;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,4FAGC;MACL,oBAAC,kBAAG,sHAGC;MACL,oBAAC,kBAAG,6EAGC;MACL,oBAAC,kBAAG,8FAGC;MACL,oBAAC,kBAAG,+EAGC;MACL,oBAAC,kBAAG,kFAGC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA2B,WAAU;eAAY;MAErD,EACP,qBAAC;KAAK,MAAK;KAA2B,WAAU;gBAAc,oBAC5C,oBAAC,gBAAa,MAAM,KAAM;MACrC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedOverlayEditorPage.js","names":[],"sources":["../../../../src/components/docs/advanced/AdvancedOverlayEditorPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\n\nexport function AdvancedOverlayEditorPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Overlay Editor</h1>\n <p className=\"text-muted-foreground text-lg\">\n A Next.js app (`@contractspec/app.overlay-editor`) that lets tenant\n admins tweak field visibility, labels, and ordering, then sign\n OverlaySpecs.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Features</h2>\n <ul className=\"list-disc space-y-2 pl-6\">\n <li>Toggle visibility and rename labels without touching code.</li>\n <li>Move fields up/down to define the overlay order.</li>\n <li>\n Preview JSON output powered by `@contractspec/lib.overlay-engine`.\n </li>\n <li>Server action for PEM signing (Ed25519/RSA-PSS).</li>\n </ul>\n <p>\n Project path: <code>packages/apps/overlay-editor</code>\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Provisioning flow</h2>\n <ol className=\"list-decimal space-y-2 pl-6\">\n <li>\n Clone the repo and run <code>bun dev</code> inside the app.\n </li>\n <li>Use the UI to craft the overlay for a tenant.</li>\n <li>\n Paste the tenant's PEM private key (stored in Vault/KMS).\n </li>\n <li>Click “Sign overlay” to get the final JSON payload.</li>\n <li>\n Persist in the `Overlay` table and register with `OverlayRegistry`.\n </li>\n </ol>\n <p>\n See also:{' '}\n <Link\n href=\"/docs/ops/tenant-customization\"\n className=\"text-violet-400 underline\"\n >\n Tenant customization runbook\n </Link>\n .\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AAEA,SAAgB,4BAA4B;AAC1C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,oBAAC;KAAE,WAAU;eAAgC;MAIzC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAa;KAChD,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,+DAA+D;OACnE,oBAAC,kBAAG,qDAAqD;OACzD,oBAAC,kBAAG,uEAEC;OACL,oBAAC,kBAAG,qDAAqD;;OACtD;KACL,qBAAC,kBAAE,kBACa,oBAAC,oBAAK,iCAAmC,IACrD;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,qBAAC;MAAG,WAAU;;OACZ,qBAAC;QAAG;QACqB,oBAAC,oBAAK,YAAc;;WACxC;OACL,oBAAC,kBAAG,kDAAkD;OACtD,oBAAC,kBAAG,8DAEC;OACL,oBAAC,kBAAG,wDAAwD;OAC5D,oBAAC,kBAAG,wEAEC;;OACF;KACL,qBAAC;MAAE;MACS;MACV,oBAAC;OACC,MAAK;OACL,WAAU;iBACX;QAEM;;SAEL;;KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedRenderersPage.js","names":[],"sources":["../../../../src/components/docs/advanced/AdvancedRenderersPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function AdvancedRenderersPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-2\">\n <h1 className=\"text-4xl font-bold\">Custom Renderers</h1>\n <p className=\"text-muted-foreground text-lg\">\n ContractSpec ships with React and React Native renderers. You can\n build custom renderers for any framework.\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 The presentation runtime libraries (\n <code>@contractspec/lib.presentation-runtime-react</code> and\n <code>@contractspec/lib.presentation-runtime-react-native</code>)\n provide hooks and components to render ContractSpec-defined UI like\n workflows and data views. You can extend these or create custom\n implementations for other frameworks.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Using the React Renderer</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 { useWorkflow, WorkflowStepRenderer } from '@contractspec/lib.presentation-runtime-react';\nimport { MyWorkflowSpec } from './specs';\n\nexport function WorkflowPage() {\n const workflow = useWorkflow(MyWorkflowSpec);\n\n return (\n <div>\n <h1>{workflow.currentStep.title}</h1>\n <WorkflowStepRenderer workflow={workflow} />\n <button onClick={workflow.next} disabled={!workflow.canProceed}>\n Next\n </button>\n </div>\n );\n}`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Custom Platform Support</h2>\n <p className=\"text-muted-foreground\">\n To support a new platform (e.g., Vue, Svelte), you would:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-2\">\n <li>\n Implement the core workflow state machine (from{' '}\n <code>@contractspec/lib.presentation-runtime-core</code>)\n </li>\n <li>\n Create framework-specific hooks/components for step rendering\n </li>\n <li>\n Handle validation and submission via the ContractSpec I/O schemas\n </li>\n </ol>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs\" className=\"btn-primary\">\n Back to docs <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAGA,SAAgB,wBAAwB;AACtC,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAqB;KAAqB,EACxD,oBAAC;IAAE,WAAU;cAAgC;KAGzC;IACA,EAEN,qBAAC;GAAI,WAAU;;IACb,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBAAqB;OAAa,EAChD,qBAAC;MAAE,WAAU;;OAAwB;OAEnC,oBAAC,oBAAK,iDAAmD;;OACzD,oBAAC,oBAAK,wDAA0D;;;OAI9D;MACA;IAEN,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBAAqB;OAA6B,EAChE,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;KAeT;OACO;MACF;IAEN,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAqB;QAA4B;MAC/D,oBAAC;OAAE,WAAU;iBAAwB;QAEjC;MACJ,qBAAC;OAAG,WAAU;;QACZ,qBAAC;SAAG;SAC8C;SAChD,oBAAC,oBAAK,gDAAkD;;YACrD;QACL,oBAAC,kBAAG,kEAEC;QACL,oBAAC,kBAAG,sEAEC;;QACF;;MACD;IAEN,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAK,MAAK;MAAQ,WAAU;iBAAc,iBAC5B,oBAAC,gBAAa,MAAM,KAAM;OAClC;MACH;;IACF;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedSpecExperimentsPage.js","names":[],"sources":["../../../../src/components/docs/advanced/AdvancedSpecExperimentsPage.tsx"],"sourcesContent":["export function AdvancedSpecExperimentsPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Spec Experiments</h1>\n <p className=\"text-muted-foreground text-lg\">\n Run controlled experiments on ContractSpec operations, gradually shift\n traffic, and roll back automatically when guardrails trip.\n </p>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Define control + variants</h2>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`import { SpecExperimentRegistry } from '@contractspec/lib.growth/spec-experiments';\n\nconst registry = new SpecExperimentRegistry().register({\n target: { name: 'billing.createInvoice', version: 4 },\n experiment: {\n key: 'billing.createInvoice.evolution',\n version: '1.0.0',\n goal: 'Reduce PO validation failures',\n primaryMetric: 'latency_ms',\n variants: [\n { id: 'control' },\n { id: 'po-required', description: 'Force PO field', weight: 1 },\n ],\n },\n control: BillingCreateInvoiceV4,\n variants: [\n { id: 'po-required', spec: BillingCreateInvoiceForAcme },\n ],\n rolloutStages: [0.01, 0.1, 0.5, 1],\n guardrails: { errorRateThreshold: 0.02, latencyP99ThresholdMs: 500 },\n});`}\n </pre>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Attach to runtime</h2>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`import { createSpecVariantResolver } from '@contractspec/lib.growth/spec-experiments';\n\nadapterContext.specVariantResolver = createSpecVariantResolver({\n adapter,\n resolveUserId: (ctx) => ctx.userId ?? ctx.organizationId ?? 'anon',\n});`}\n </pre>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Track outcomes + auto-rollback</h2>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`import {\n SpecExperimentAnalyzer,\n SpecExperimentController,\n} from '@contractspec/lib.growth/spec-experiments';\n\nconst analyzer = new SpecExperimentAnalyzer(tracker);\nconst controller = new SpecExperimentController({\n registry,\n analyzer,\n onRollback: (target, evaluation) => notifyOps(target, evaluation.reasons),\n});`}\n </pre>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n {[\n {\n title: 'Deterministic bucketing',\n description:\n 'ExperimentRunner reuses the same hashing logic as growth experiments—every user sticks to a variant.',\n },\n {\n title: 'Multi-stage rollouts',\n description:\n 'Use `rolloutStages` to shift 1% → 10% → 50% → 100%. Guardrails trigger rollbacks automatically.',\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":";;;AAAA,SAAgB,8BAA8B;AAC5C,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;MAA8B,EACjE,oBAAC;KAAI,WAAU;eACZ;;;;;;;;;;;;;;;;;;;;;MAqBG;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAsB,EACzD,oBAAC;KAAI,WAAU;eACZ;;;;;;MAMG;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmC,EACtE,oBAAC;KAAI,WAAU;eACZ;;;;;;;;;;;MAWG;KACF;GAEN,oBAAC;IAAI,WAAU;cACZ,CACC;KACE,OAAO;KACP,aACE;KACH,EACD;KACE,OAAO;KACP,aACE;KACH,CACF,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":"AdvancedTelemetryPage.js","names":[],"sources":["../../../../src/components/docs/advanced/AdvancedTelemetryPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function AdvancedTelemetryPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Telemetry</h1>\n <p className=\"text-muted-foreground\">\n A <strong>TelemetrySpec</strong> defines what metrics, logs, and\n traces to collect for observability. ContractSpec automatically\n instruments your application based on these specs, ensuring you have\n the visibility you need to monitor, debug, and optimize your system.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Why telemetry matters</h2>\n <p className=\"text-muted-foreground\">\n You can't fix what you can't see. Telemetry provides visibility into\n how your application is performing, where errors are occurring, and\n how users are interacting with your system. Without proper\n instrumentation, you're flying blind in production.\n </p>\n <p className=\"text-muted-foreground\">\n ContractSpec takes a spec-first approach to telemetry: you declare\n what you want to observe, and runtime adapters instrument operations\n automatically. This ensures consistent, comprehensive coverage without\n manual effort.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Three pillars of observability</h2>\n <div className=\"space-y-3\">\n <div>\n <h3 className=\"text-lg font-semibold\">Metrics</h3>\n <p className=\"text-muted-foreground\">\n Numerical measurements collected over time. Examples: request\n count, error rate, latency percentiles, active users, queue depth.\n Metrics are cheap to collect and store, making them ideal for\n high-level monitoring and alerting.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Logs</h3>\n <p className=\"text-muted-foreground\">\n Timestamped text records of events. Examples: \"User 123 logged\n in\", \"Payment failed for order 456\", \"Database connection pool\n exhausted\". Logs provide detailed context for debugging specific\n issues.\n </p>\n </div>\n <div>\n <h3 className=\"text-lg font-semibold\">Traces</h3>\n <p className=\"text-muted-foreground\">\n Records of requests as they flow through your system. A trace\n shows the complete path of a request—which services it touched,\n how long each step took, and where errors occurred. Traces are\n essential for debugging distributed systems.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example TelemetrySpec</h2>\n <p className=\"text-muted-foreground\">\n Here's how telemetry is configured 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 { defineTelemetry } from '@contractspec/lib.contracts';\n\nexport const OrderProcessingTelemetry = defineTelemetry({\n meta: {\n key: 'order.processing.observability',\n version: '1.0.0',\n },\n metrics: [\n {\n name: 'orders_created_total',\n type: 'counter',\n description: 'Total number of orders created',\n labels: ['status', 'payment_method'],\n },\n {\n name: 'order_processing_duration_seconds',\n type: 'histogram',\n description: 'Time to process an order',\n buckets: [0.1, 0.5, 1.0, 2.0, 5.0, 10.0],\n labels: ['status'],\n },\n ],\n traces: [\n {\n operation: 'createOrder',\n sampleRate: 1.0, // Trace 100% of requests\n includeInputs: true,\n includeOutputs: true,\n redactFields: ['creditCard', 'ssn'],\n },\n {\n operation: 'processPayment',\n sampleRate: 0.1, // Trace 10% of requests\n includeInputs: false, // Don't log payment details\n },\n ],\n alerts: [\n {\n name: 'high-error-rate',\n condition: 'error_rate > 0.05',\n duration: '5m',\n severity: 'critical',\n notify: ['pagerduty', 'slack'],\n },\n ],\n});`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Automatic instrumentation</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec automatically instruments:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>All operations</strong> – Request count, latency, error rate\n per Command/Query\n </li>\n <li>\n <strong>All workflows</strong> – Step execution time, retry counts,\n compensation events\n </li>\n <li>\n <strong>All data views</strong> – Query execution time, result set\n size\n </li>\n <li>\n <strong>All policy decisions</strong> – Decision time, permit/deny\n ratio\n </li>\n <li>\n <strong>System resources</strong> – CPU, memory, disk, network usage\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n You don't need to add instrumentation code manually—the runtime\n handles it based on your specs.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n Integration with observability platforms\n </h2>\n <p className=\"text-muted-foreground\">\n ContractSpec supports multiple observability backends:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Prometheus</strong> – For metrics collection and alerting\n </li>\n <li>\n <strong>Grafana</strong> – For dashboards and visualization\n </li>\n <li>\n <strong>Jaeger / Tempo</strong> – For distributed tracing\n </li>\n <li>\n <strong>Loki</strong> – For log aggregation\n </li>\n <li>\n <strong>Datadog</strong> – All-in-one observability platform\n </li>\n <li>\n <strong>New Relic</strong> – Application performance monitoring\n </li>\n <li>\n <strong>Honeycomb</strong> – Observability for complex systems\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n You can configure multiple backends and send telemetry to all of them\n simultaneously.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Sampling and performance</h2>\n <p className=\"text-muted-foreground\">\n Collecting telemetry has a cost—CPU, memory, network bandwidth, and\n storage. ContractSpec provides several mechanisms to control overhead:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Sampling</strong> – Trace only a percentage of requests\n (e.g., 10%)\n </li>\n <li>\n <strong>Adaptive sampling</strong> – Automatically reduce sampling\n rate under high load\n </li>\n <li>\n <strong>Tail-based sampling</strong> – Keep traces for failed\n requests, sample successful ones\n </li>\n <li>\n <strong>Field redaction</strong> – Remove sensitive data from traces\n and logs\n </li>\n <li>\n <strong>Aggregation</strong> – Pre-aggregate metrics before sending\n to reduce network traffic\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 Start with high-level metrics (request rate, error rate, latency)\n and add more detailed instrumentation as needed.\n </li>\n <li>\n Use structured logging—log events with structured fields, not\n free-form text.\n </li>\n <li>\n Set up alerts for critical metrics so you're notified when things go\n wrong.\n </li>\n <li>\n Use traces to debug complex issues—they show the complete picture of\n a request.\n </li>\n <li>\n Redact sensitive data from logs and traces to comply with privacy\n regulations.\n </li>\n <li>\n Review dashboards regularly to understand normal behavior—this makes\n anomalies easier to spot.\n </li>\n <li>\n Use sampling to control costs, but always trace errors and slow\n requests.\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/advanced/mcp\" className=\"btn-ghost\">\n Previous: MCP Adapters\n </Link>\n <Link href=\"/docs/comparison\" className=\"btn-primary\">\n Next: Comparison <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedWorkflowMonitoringPage.js","names":[],"sources":["../../../../src/components/docs/advanced/AdvancedWorkflowMonitoringPage.tsx"],"sourcesContent":["export function AdvancedWorkflowMonitoringPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Workflow Monitoring</h1>\n <p className=\"text-muted-foreground text-lg\">\n Production workflows need robust observability. ContractSpec provides\n SLA monitoring, distributed tracing, and audit logging out of the box.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">SLA Monitoring</h2>\n <p>\n Use the <code>SLAMonitor</code> to detect when workflows or individual\n steps exceed their budgeted duration.\n </p>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`import { SLAMonitor } from '@contractspec/lib.contracts/workflow/sla-monitor';\n\nconst monitor = new SLAMonitor((event, payload) => {\n if (event === 'workflow.sla_breach') {\n console.error('SLA Breach!', payload);\n // Send to PagerDuty / Slack\n }\n});\n\n// Check periodically\nmonitor.check(currentState, workflowSpec);`}\n </pre>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Telemetry & Tracing</h2>\n <p>Workflows automatically generate OpenTelemetry spans for:</p>\n <ul className=\"list-disc space-y-2 pl-6\">\n <li>Overall workflow execution</li>\n <li>Individual steps</li>\n <li>Retries and compensation</li>\n </ul>\n <p>\n Configure your OpenTelemetry exporter to send traces to Jaeger,\n Datadog, or Honeycomb.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Dashboarding</h2>\n <p>\n You can build a custom dashboard using <code>DataViews</code> over\n your workflow state database. See the DataViews tutorial for how to\n visualize <code>WorkflowState</code> records.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAAA,SAAgB,iCAAiC;AAC/C,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;OAAmB;KACtD,qBAAC;MAAE;MACO,oBAAC,oBAAK,eAAiB;;SAE7B;KACJ,oBAAC;MAAI,WAAU;gBACZ;;;;;;;;;;;OAWG;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAwB;KAC3D,oBAAC,iBAAE,8DAA6D;KAChE,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,+BAA+B;OACnC,oBAAC,kBAAG,qBAAqB;OACzB,oBAAC,kBAAG,6BAA6B;;OAC9B;KACL,oBAAC,iBAAE,2FAGC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAiB,EACpD,qBAAC;KAAE;KACsC,oBAAC,oBAAK,cAAgB;;KAEnD,oBAAC,oBAAK,kBAAoB;;QAClC;KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ArchitectureAppConfigPage.js","names":[],"sources":["../../../../src/components/docs/architecture/ArchitectureAppConfigPage.tsx"],"sourcesContent":["import { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function ArchitectureAppConfigPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">App Configuration</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec uses a three-tier configuration model that separates\n global app definitions from tenant-specific settings and runtime\n resolution.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">AppBlueprintSpec</h2>\n <p className=\"text-muted-foreground\">\n The <strong>AppBlueprintSpec</strong> is the global, versioned\n definition of your application. It contains no tenant-specific\n information and is stored in version control.\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`type AppBlueprintSpec = {\n id: string;\n version: string;\n name: string;\n description: string;\n \n // Core specs\n capabilities: CapabilitySpec[];\n dataViews: DataViewSpec[];\n workflows: WorkflowSpec[];\n policies: PolicySpec[];\n \n // Required integrations\n requiredIntegrations: {\n integrationId: string;\n category: IntegrationCategory;\n purpose: string;\n optional?: boolean;\n }[];\n \n // Expected knowledge spaces\n knowledgeSpaces: {\n spaceId: string;\n category: KnowledgeCategory;\n required: boolean;\n purpose: string;\n }[];\n \n // UI/UX\n theme: ThemeSpec;\n overlays: OverlaySpec[];\n \n // Observability\n telemetry: TelemetrySpec;\n \n // Schema evolution\n migrations: MigrationSpec[];\n};`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">TenantAppConfig</h2>\n <p className=\"text-muted-foreground\">\n The <strong>TenantAppConfig</strong> is the per-tenant,\n per-environment configuration that customizes how a specific tenant\n uses the app.\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`type TenantAppConfig = {\n tenantId: string;\n blueprintId: string;\n blueprintVersion: string;\n environment: \"sandbox\" | \"staging\" | \"production\";\n status: \"draft\" | \"preview\" | \"published\" | \"archived\" | \"superseded\";\n \n // Integration bindings\n integrationBindings: AppIntegrationBinding[];\n \n // Knowledge bindings\n knowledgeBindings: AppKnowledgeBinding[];\n \n // Tenant-specific overrides\n featureFlags: Record<string, boolean>;\n limits: {\n maxUsers?: number;\n maxStorage?: number;\n rateLimit?: number;\n };\n \n // Tenant customization\n branding: {\n logo?: string;\n colors?: Record<string, string>;\n domain?: string;\n };\n \n metadata: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n};`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">AppIntegrationBinding</h2>\n <p className=\"text-muted-foreground\">\n Defines how a tenant connects specific integration instances to\n satisfy capabilities and workflows.\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`type AppIntegrationBinding = {\n slotId: string; // References AppIntegrationSlot.slotId\n connectionId: string; // References IntegrationConnection.meta.id\n scope?: {\n workflows?: string[];\n operations?: string[];\n features?: string[];\n };\n priority?: number; // Lower number = higher priority\n};\n\n// Example:\n{\n slotId: \"payments.primary\",\n connectionId: \"conn_stripe_acme_prod\",\n scope: {\n workflows: [\"checkout\", \"subscription-renewal\"],\n operations: [\"payments.stripe.*\"]\n },\n priority: 1\n}`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">AppKnowledgeBinding</h2>\n <p className=\"text-muted-foreground\">\n Defines which knowledge spaces a tenant's app can access and how.\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`type AppKnowledgeBinding = {\n spaceId: string;\n enabled: boolean;\n \n // Which workflows/agents can read this space\n allowedConsumers: {\n workflowIds?: string[];\n agentIds?: string[];\n roles?: string[];\n };\n \n // Category-based access control\n allowedCategories: KnowledgeCategory[];\n \n // Sources feeding this space for this tenant\n sources: string[]; // References KnowledgeSourceConfig IDs\n \n metadata?: Record<string, unknown>;\n};\n\n// Example:\n{\n spaceId: \"product-canon\",\n enabled: true,\n allowedConsumers: {\n workflowIds: [\"invoice-generation\", \"quote-creation\"],\n agentIds: [\"support-agent\"]\n },\n allowedCategories: [\"canonical\", \"operational\"],\n sources: [\"src_notion_product_docs\", \"src_database_schema\"]\n}`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">ResolvedAppConfig</h2>\n <p className=\"text-muted-foreground\">\n The <strong>ResolvedAppConfig</strong> is the runtime result of\n merging AppBlueprintSpec with TenantAppConfig. It's computed on-demand\n and never persisted.\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`type ResolvedAppConfig = {\n appId: string;\n tenantId: string;\n blueprintName: string;\n blueprintVersion: number;\n environment?: string;\n configVersion: number;\n\n capabilities: { enabled: CapabilityRef[]; disabled: CapabilityRef[] };\n features: { include: FeatureRef[]; exclude: FeatureRef[] };\n dataViews: Record<string, SpecPointer>;\n workflows: Record<string, SpecPointer>;\n policies: PolicyRef[];\n theme?: AppThemeBinding;\n telemetry?: TelemetryBinding;\n experiments: {\n catalog: ExperimentRef[];\n active: ExperimentRef[];\n paused: ExperimentRef[];\n };\n featureFlags: FeatureFlagState[];\n routes: AppRouteConfig[];\n\n integrations: ResolvedIntegration[]; // [{ slot, binding, connection, spec }]\n knowledge: ResolvedKnowledge[]; // [{ binding, space, sources }]\n branding: ResolvedBranding; // { appName, assets, colors, domain }\n notes?: string;\n};`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Configuration flow</h2>\n <p className=\"text-muted-foreground\">\n Here's how configuration flows from definition to runtime:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-3\">\n <li>\n <strong>Development</strong> - Define AppBlueprintSpec with required\n integrations and knowledge spaces\n </li>\n <li>\n <strong>Deployment</strong> - Deploy blueprint to environment\n (sandbox, staging, production)\n </li>\n <li>\n <strong>Tenant Setup</strong> - Create TenantAppConfig with specific\n integration connections and knowledge sources\n </li>\n <li>\n <strong>Runtime</strong> - Resolve configuration on-demand when\n tenant accesses the app\n </li>\n <li>\n <strong>Execution</strong> - Use ResolvedAppConfig to execute\n capabilities, workflows, and enforce policies\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 Keep AppBlueprintSpec environment-agnostic - no secrets or\n tenant-specific data\n </li>\n <li>\n Use TenantAppConfig for all tenant-specific settings and connections\n </li>\n <li>\n Cache ResolvedAppConfig per request to avoid repeated resolution\n </li>\n <li>Version blueprints carefully - migrations affect all tenants</li>\n <li>\n Test blueprint changes in sandbox before promoting to production\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/architecture\" className=\"btn-ghost\">\n Back to Architecture\n </Link>\n <Link\n href=\"/docs/architecture/integration-binding\"\n className=\"btn-primary\"\n >\n Integration Binding <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAIA,SAAgB,4BAA4B;AAC1C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAsB,EACzD,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAqB;KACxD,qBAAC;MAAE,WAAU;;OAAwB;OAC/B,oBAAC,sBAAO,qBAAyB;;;OAGnC;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCN;;KACE;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAoB;KACvD,qBAAC;MAAE,WAAU;;OAAwB;OAC/B,oBAAC,sBAAO,oBAAwB;;;OAGlC;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCN;;KACE;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA0B;KAC7D,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;OAqBN;;KACE;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAwB;KAC3D,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BN;;KACE;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,qBAAC;MAAE,WAAU;;OAAwB;OAC/B,oBAAC,sBAAO,sBAA0B;;;OAGpC;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BN;;KACE;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAuB;KAC1D,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,gBAAoB,kFAEzB;OACL,qBAAC,mBACC,oBAAC,sBAAO,eAAmB,yEAExB;OACL,qBAAC,mBACC,oBAAC,sBAAO,iBAAqB,6FAE1B;OACL,qBAAC,mBACC,oBAAC,sBAAO,YAAgB,uEAErB;OACL,qBAAC,mBACC,oBAAC,sBAAO,cAAkB,yFAEvB;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,oFAGC;MACL,oBAAC,kBAAG,yEAEC;MACL,oBAAC,kBAAG,qEAEC;MACL,oBAAC,kBAAG,iEAAiE;MACrE,oBAAC,kBAAG,qEAEC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAqB,WAAU;eAAY;MAE/C,EACP,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,wBACqB,oBAAC,gBAAa,MAAM,KAAM;MACzC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ArchitectureIntegrationBindingPage.js","names":[],"sources":["../../../../src/components/docs/architecture/ArchitectureIntegrationBindingPage.tsx"],"sourcesContent":["import { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function ArchitectureIntegrationBindingPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Integration Binding</h1>\n <p className=\"text-muted-foreground\">\n Integration binding connects your app's capabilities to external\n service providers. Each tenant can configure their own integration\n connections while sharing the same app blueprint.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">How it works</h2>\n <p className=\"text-muted-foreground\">\n Integration binding follows a three-layer model:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-3\">\n <li>\n <strong>IntegrationSpec</strong> (global) - Defines what an\n integration provides\n </li>\n <li>\n <strong>IntegrationConnection</strong> (per-tenant) - A tenant's\n configured connection\n </li>\n <li>\n <strong>AppIntegrationBinding</strong> (per-app) - Maps named slots\n to concrete tenant connections\n </li>\n </ol>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example: Payment processing</h2>\n <p className=\"text-muted-foreground\">\n Let's walk through a complete example of binding Stripe for payments.\n </p>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 1: Blueprint declares requirement\n </h3>\n <CodeBlock\n language=\"typescript\"\n code={`// AppBlueprintSpec\n{\n meta: { name: \"invoice-app\", version: '1.0.0', appId: \"invoice\" },\n integrationSlots: [\n {\n slotId: \"payments.primary\",\n requiredCategory: \"payments\",\n allowedModes: [\"managed\", \"byok\"],\n requiredCapabilities: [\n { key: \"payments.createPaymentIntent\", version: '1.0.0' },\n { key: \"payments.createRefund\", version: '1.0.0' }\n ],\n required: true,\n description: \"Primary PSP used for Checkout and Subscription flows\"\n }\n ],\n workflows: {\n checkout: { name: \"invoice.checkout\", version: '1.0.0' }\n },\n branding: {\n appNameKey: \"invoice.appName\",\n assets: [{ type: \"logo\", url: \"https://cdn.acme.dev/logo.png\" }],\n colorTokens: { primary: \"colors.brand.primary\" }\n }\n}`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 2: Tenant creates connection\n </h3>\n <CodeBlock\n language=\"typescript\"\n code={`// IntegrationConnection\n{\n meta: {\n id: \"conn_stripe_acme_prod\",\n tenantId: \"acme-corp\",\n integrationKey: \"payments.stripe\",\n integrationVersion: 1,\n label: \"Stripe Production\",\n environment: \"production\",\n createdAt: \"2025-01-15T09:00:00Z\",\n updatedAt: \"2025-01-15T10:30:00Z\"\n },\n ownershipMode: \"byok\",\n externalAccountId: \"acct_123\",\n config: {\n accountId: \"acct_123\",\n webhookUrl: \"https://acme.app/webhooks/stripe\"\n },\n secretRef: \"vault://integrations/acme/conn_stripe_acme_prod\",\n status: \"active\"\n}`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 3: TenantAppConfig binds connection\n </h3>\n <CodeBlock\n language=\"typescript\"\n code={`// TenantAppConfig\n{\n meta: {\n tenantId: \"acme-corp\",\n blueprintName: \"invoice-app\",\n blueprintVersion: 1,\n environment: \"production\",\n version: 4,\n status: \"published\"\n },\n integrations: [\n {\n slotId: \"payments.primary\",\n connectionId: \"conn_stripe_acme_prod\",\n scope: {\n workflows: [\"checkout\", \"subscription-renewal\", \"refund-process\"],\n operations: [\"payments.stripe.*\"]\n },\n priority: 1\n }\n ],\n branding: {\n appName: { en: \"Acme Billing Portal\" },\n customDomain: \"billing.acme.com\",\n assets: [{ type: \"logo\", url: \"https://assets.acme.com/logo.svg\" }]\n }\n}`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 4: Runtime resolves and executes\n </h3>\n <CodeBlock\n language=\"typescript\"\n code={`// ResolvedAppConfig (runtime)\n{\n integrations: {\n \"payments.createPaymentIntent\": {\n provider: { /* IntegrationSpec for Stripe */ },\n connection: { /* IntegrationConnection */ },\n config: { /* Merged configuration */ }\n }\n }\n}\n\n// When workflow executes:\nconst result = await executeCapability(\n \"payments.createPaymentIntent\",\n { amount: 5000, currency: \"usd\" },\n resolvedConfig\n);\n// → Uses Stripe connection automatically`}\n />\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Multi-integration scenarios</h2>\n <p className=\"text-muted-foreground\">\n A single app can use multiple integrations across different\n categories:\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`integrations: [\n {\n slotId: \"payments.primary\",\n connectionId: \"conn_stripe_prod\",\n scope: {\n workflows: [\"checkout\", \"subscription-*\"]\n }\n },\n {\n slotId: \"email.outbound\",\n connectionId: \"conn_postmark_prod\"\n },\n {\n slotId: \"email.inbound\",\n connectionId: \"conn_gmail_support\",\n scope: {\n workflows: [\"support-ticket-creation\"]\n }\n },\n {\n slotId: \"knowledge.vector-store\",\n connectionId: \"conn_qdrant_prod\",\n scope: {\n workflows: [\"semantic-search\", \"rag-query\"]\n }\n }\n]`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Sandbox vs Production</h2>\n <p className=\"text-muted-foreground\">\n Tenants typically maintain separate connections for sandbox and\n production environments:\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`// Sandbox environment\n{\n meta: { environment: \"sandbox\", status: \"preview\" },\n integrations: [\n {\n slotId: \"payments.primary\",\n connectionId: \"conn_stripe_acme_test\"\n }\n ]\n}\n\n// Production environment\n{\n meta: { environment: \"production\", status: \"published\" },\n integrations: [\n {\n slotId: \"payments.primary\",\n connectionId: \"conn_stripe_acme_prod\"\n }\n ]\n}`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Security & validation</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Integration connections are validated before binding - health checks\n ensure connectivity\n </li>\n <li>\n Secrets are never stored in TenantAppConfig - only references to\n encrypted secrets\n </li>\n <li>\n Policy Decision Point (PDP) enforces which workflows can use which\n integrations\n </li>\n <li>\n All integration calls are audited with full request/response logging\n </li>\n <li>Rate limiting and quotas are enforced per connection</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 Use wildcard patterns sparingly in <code>allowedWorkflows</code> -\n be explicit about access\n </li>\n <li>Always maintain separate sandbox and production connections</li>\n <li>\n Monitor integration health checks and set up alerts for failures\n </li>\n <li>\n Document the purpose of each integration binding for your team\n </li>\n <li>\n Test integration changes in sandbox before promoting to production\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/architecture/app-config\" className=\"btn-ghost\">\n Previous: App Configuration\n </Link>\n <Link\n href=\"/docs/architecture/knowledge-binding\"\n className=\"btn-primary\"\n >\n Knowledge Binding <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAIA,SAAgB,qCAAqC;AACnD,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAwB,EAC3D,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAiB;KACpD,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,oBAAwB,wDAE7B;OACL,qBAAC,mBACC,oBAAC,sBAAO,0BAA8B,wDAEnC;OACL,qBAAC,mBACC,oBAAC,sBAAO,0BAA8B,oEAEnC;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAgC;KACnE,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KAEJ,qBAAC;MAAI,WAAU;iBACb,oBAAC;OAAG,WAAU;iBAAwB;QAEjC,EACL,oBAAC;OACC,UAAS;OACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;QAyBN;OACE;KAEN,qBAAC;MAAI,WAAU;iBACb,oBAAC;OAAG,WAAU;iBAAwB;QAEjC,EACL,oBAAC;OACC,UAAS;OACT,MAAM;;;;;;;;;;;;;;;;;;;;;QAqBN;OACE;KAEN,qBAAC;MAAI,WAAU;iBACb,oBAAC;OAAG,WAAU;iBAAwB;QAEjC,EACL,oBAAC;OACC,UAAS;OACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2BN;OACE;KAEN,qBAAC;MAAI,WAAU;iBACb,oBAAC;OAAG,WAAU;iBAAwB;QAEjC,EACL,oBAAC;OACC,UAAS;OACT,MAAM;;;;;;;;;;;;;;;;;;QAkBN;OACE;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAgC;KACnE,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BN;;KACE;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA0B;KAC7D,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;;;;;;;;;;;;;;OAqBN;;KACE;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA0B,EAC7D,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,6FAGC;MACL,oBAAC,kBAAG,uFAGC;MACL,oBAAC,kBAAG,oFAGC;MACL,oBAAC,kBAAG,yEAEC;MACL,oBAAC,kBAAG,yDAAyD;;MAC1D;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,qBAAC;OAAG;OACiC,oBAAC,oBAAK,qBAAuB;;UAE7D;MACL,oBAAC,kBAAG,gEAAgE;MACpE,oBAAC,kBAAG,qEAEC;MACL,oBAAC,kBAAG,mEAEC;MACL,oBAAC,kBAAG,uEAEC;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAgC,WAAU;eAAY;MAE1D,EACP,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,sBACmB,oBAAC,gBAAa,MAAM,KAAM;MACvC;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ArchitectureKnowledgeBindingPage.js","names":[],"sources":["../../../../src/components/docs/architecture/ArchitectureKnowledgeBindingPage.tsx"],"sourcesContent":["import { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function ArchitectureKnowledgeBindingPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Knowledge Binding</h1>\n <p className=\"text-muted-foreground\">\n Knowledge binding connects your app's workflows and agents to\n structured knowledge spaces. This enables semantic search, RAG\n (Retrieval-Augmented Generation), and context-aware decision-making.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">How it works</h2>\n <p className=\"text-muted-foreground\">\n Knowledge binding follows a three-layer model:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-3\">\n <li>\n <strong>KnowledgeSpaceSpec</strong> (global) - Defines a logical\n knowledge domain\n </li>\n <li>\n <strong>KnowledgeSourceConfig</strong> (per-tenant) - Tenant's data\n sources feeding spaces\n </li>\n <li>\n <strong>AppKnowledgeBinding</strong> (per-app) - Maps spaces to\n workflows/agents\n </li>\n </ol>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example: Support agent with RAG</h2>\n <p className=\"text-muted-foreground\">\n Let's build a support agent that uses canonical product documentation\n and operational support history.\n </p>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 1: Blueprint declares knowledge needs\n </h3>\n <CodeBlock\n language=\"typescript\"\n code={`// AppBlueprintSpec\n{\n id: \"support-app\",\n version: \"1.0.0\",\n knowledgeSpaces: [\n {\n spaceId: \"product-canon\",\n category: \"canonical\",\n required: true,\n purpose: \"Official product documentation and specs\"\n },\n {\n spaceId: \"support-history\",\n category: \"operational\",\n required: true,\n purpose: \"Past support tickets and resolutions\"\n },\n {\n spaceId: \"external-docs\",\n category: \"external\",\n required: false,\n purpose: \"Third-party integration documentation\"\n }\n ]\n}`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 2: Tenant configures sources\n </h3>\n <CodeBlock\n language=\"typescript\"\n code={`// KnowledgeSourceConfig (per-tenant)\n[\n {\n id: \"src_notion_product_docs\",\n tenantId: \"acme-corp\",\n spaceId: \"product-canon\",\n kind: \"notion\",\n location: \"https://notion.so/acme/product-docs\",\n syncPolicy: { interval: \"1h\" },\n lastSyncedAt: \"2025-01-15T10:00:00Z\"\n },\n {\n id: \"src_gmail_support_threads\",\n tenantId: \"acme-corp\",\n spaceId: \"support-history\",\n kind: \"gmail\",\n location: \"support@acme.com\",\n syncPolicy: { webhook: true },\n lastSyncedAt: \"2025-01-15T10:30:00Z\"\n },\n {\n id: \"src_stripe_docs\",\n tenantId: \"acme-corp\",\n spaceId: \"external-docs\",\n kind: \"url\",\n location: \"https://stripe.com/docs\",\n syncPolicy: { interval: \"24h\" },\n lastSyncedAt: \"2025-01-15T00:00:00Z\"\n }\n]`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 3: TenantAppConfig binds spaces\n </h3>\n <CodeBlock\n language=\"typescript\"\n code={`// TenantAppConfig\n{\n tenantId: \"acme-corp\",\n blueprintId: \"support-app\",\n blueprintVersion: \"1.0.0\",\n knowledgeBindings: [\n {\n spaceId: \"product-canon\",\n enabled: true,\n allowedConsumers: {\n workflowIds: [\"answer-question\", \"generate-docs\"],\n agentIds: [\"support-agent\", \"docs-agent\"]\n },\n allowedCategories: [\"canonical\"],\n sources: [\"src_notion_product_docs\"]\n },\n {\n spaceId: \"support-history\",\n enabled: true,\n allowedConsumers: {\n workflowIds: [\"answer-question\", \"escalate-ticket\"],\n agentIds: [\"support-agent\"]\n },\n allowedCategories: [\"operational\"],\n sources: [\"src_gmail_support_threads\"]\n },\n {\n spaceId: \"external-docs\",\n enabled: true,\n allowedConsumers: {\n agentIds: [\"support-agent\"]\n },\n allowedCategories: [\"external\"],\n sources: [\"src_stripe_docs\"]\n }\n ]\n}`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">\n Step 4: Workflow uses knowledge\n </h3>\n <CodeBlock\n language=\"yaml\"\n code={`// WorkflowSpec\nworkflowId: answer-question\nversion: '1.0.0'.0.0\n\nsteps:\n - id: generate-embedding\n capability: openai-embeddings\n inputs:\n text: \\${input.question}\n \n - id: search-canonical\n capability: vector.search\n inputs:\n collection: \"product-canon\"\n vector: \\${steps.generate-embedding.output.embedding}\n limit: 5\n \n - id: search-support-history\n capability: vector.search\n inputs:\n collection: \"support-history\"\n vector: \\${steps.generate-embedding.output.embedding}\n limit: 3\n \n - id: generate-answer\n capability: openai-chat\n inputs:\n messages:\n - role: \"system\"\n content: |\n You are a support agent. Answer based on:\n 1. Canonical docs (authoritative)\n 2. Support history (helpful context)\n Only use external docs for integration questions.\n - role: \"user\"\n content: |\n Question: \\${input.question}\n \n Canonical docs:\n \\${steps.search-canonical.output.results}\n \n Support history:\n \\${steps.search-support-history.output.results}`}\n />\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Category-based access control</h2>\n <p className=\"text-muted-foreground\">\n Different knowledge categories have different trust levels and access\n patterns:\n </p>\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\">Category</th>\n <th className=\"px-4 py-3 font-semibold\">Trust Level</th>\n <th className=\"px-4 py-3 font-semibold\">Use Cases</th>\n <th className=\"px-4 py-3 font-semibold\">Policy Impact</th>\n </tr>\n </thead>\n <tbody className=\"divide-border/50 divide-y\">\n <tr>\n <td className=\"px-4 py-3 font-mono text-xs\">canonical</td>\n <td className=\"px-4 py-3\">Highest</td>\n <td className=\"px-4 py-3\">\n Product specs, schemas, official policies\n </td>\n <td className=\"px-4 py-3\">Can drive policy decisions</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-mono text-xs\">operational</td>\n <td className=\"px-4 py-3\">High</td>\n <td className=\"px-4 py-3\">\n Support tickets, sales docs, internal runbooks\n </td>\n <td className=\"px-4 py-3\">Can inform decisions</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-mono text-xs\">external</td>\n <td className=\"px-4 py-3\">Medium</td>\n <td className=\"px-4 py-3\">\n Third-party docs, regulations, PSP guides\n </td>\n <td className=\"px-4 py-3\">Reference only, not authoritative</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-mono text-xs\">ephemeral</td>\n <td className=\"px-4 py-3\">Low</td>\n <td className=\"px-4 py-3\">\n Agent scratchpads, session context, drafts\n </td>\n <td className=\"px-4 py-3\">Never used for decisions</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\">Multi-space workflows</h2>\n <p className=\"text-muted-foreground\">\n Workflows can query multiple knowledge spaces and combine results:\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`knowledgeBindings: [\n {\n spaceId: \"product-canon\",\n enabled: true,\n allowedConsumers: {\n workflowIds: [\"invoice-generation\", \"quote-creation\"]\n },\n allowedCategories: [\"canonical\"],\n sources: [\"src_database_schema\", \"src_product_catalog\"]\n },\n {\n spaceId: \"pricing-rules\",\n enabled: true,\n allowedConsumers: {\n workflowIds: [\"invoice-generation\", \"quote-creation\"]\n },\n allowedCategories: [\"canonical\", \"operational\"],\n sources: [\"src_pricing_database\", \"src_discount_policies\"]\n },\n {\n spaceId: \"customer-history\",\n enabled: true,\n allowedConsumers: {\n workflowIds: [\"quote-creation\"]\n },\n allowedCategories: [\"operational\"],\n sources: [\"src_crm_data\", \"src_past_invoices\"]\n }\n]`}\n />\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Security & validation</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Knowledge sources are validated before sync - credentials and\n permissions checked\n </li>\n <li>PDP enforces which workflows/agents can access which spaces</li>\n <li>\n All knowledge queries are audited with search terms and results\n </li>\n <li>\n Canonical knowledge is immutable once indexed - changes require\n re-sync\n </li>\n <li>\n Ephemeral knowledge is automatically purged based on retention\n policies\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 Use canonical spaces for policy-critical decisions, operational for\n suggestions\n </li>\n <li>\n Never allow workflows to write to canonical spaces - maintain\n read-only access\n </li>\n <li>\n Set up monitoring for sync failures and stale knowledge sources\n </li>\n <li>Document the purpose and trust level of each knowledge space</li>\n <li>\n Test knowledge queries in sandbox before promoting to production\n </li>\n <li>\n Use explicit <code>allowedConsumers</code> - avoid wildcard access\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link\n href=\"/docs/architecture/integration-binding\"\n className=\"btn-ghost\"\n >\n Previous: Integration Binding\n </Link>\n <Link href=\"/docs/knowledge\" className=\"btn-primary\">\n Knowledge & Context <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ArchitectureMultiTenancyPage.js","names":[],"sources":["../../../../src/components/docs/architecture/ArchitectureMultiTenancyPage.tsx"],"sourcesContent":["// export const metadata: Metadata = {\n// title: 'Multi-Tenancy Architecture | ContractSpec',\n// description:\n// 'Learn how ContractSpec handles data isolation and tenant management.',\n// };\n\nimport { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function ArchitectureMultiTenancyPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Multi-Tenancy</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec is designed from the ground up for multi-tenancy. Apps\n built with ContractSpec can serve multiple organizations (tenants)\n from a single deployment, while ensuring strict data isolation and\n configuration separation.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Core Concepts</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Tenant</strong>: An organization or customer that uses your\n app. Each tenant has a unique <code>tenantId</code>.\n </li>\n <li>\n <strong>Tenant Isolation</strong>: Data and configuration for one\n tenant is never accessible to another tenant unless explicitly\n shared.\n </li>\n <li>\n <strong>Tenant Context</strong>: Every request and operation runs\n within the context of a specific tenant.\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Tenant Resolution</h2>\n <p className=\"text-muted-foreground\">\n The runtime automatically resolves the tenant context for every\n request based on:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Subdomain (e.g., <code>acme.app.com</code>)\n </li>\n <li>\n Custom Domain (e.g., <code>portal.acme.com</code>)\n </li>\n <li>\n Header (e.g., <code>x-tenant-id: acme-corp</code>)\n </li>\n <li>Authentication Token (embedded tenant claim)</li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Configuration Isolation</h2>\n <p className=\"text-muted-foreground\">\n Each tenant has its own <code>TenantAppConfig</code> which defines:\n </p>\n <CodeBlock\n language=\"typescript\"\n code={`type TenantAppConfig = {\n tenantId: string;\n blueprintId: string;\n // ...\n integrationBindings: AppIntegrationBinding[];\n knowledgeBindings: AppKnowledgeBinding[];\n featureFlags: Record<string, boolean>;\n};`}\n />\n <p className=\"text-muted-foreground mt-2\">\n This allows you to customize feature flags, integration connections,\n and knowledge sources per tenant without changing the application\n code.\n </p>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/architecture\" className=\"btn-ghost\">\n Back to Architecture\n </Link>\n <Link href=\"/docs/libraries/multi-tenancy\" className=\"btn-primary\">\n Multi-Tenancy Library <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAUA,SAAgB,+BAA+B;AAC7C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAkB,EACrD,oBAAC;KAAE,WAAU;eAAwB;MAKjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAkB,EACrD,qBAAC;KAAG,WAAU;;MACZ,qBAAC;OACC,oBAAC,sBAAO,WAAe;;OACO,oBAAC,oBAAK,aAAe;;UAChD;MACL,qBAAC,mBACC,oBAAC,sBAAO,qBAAyB,+GAG9B;MACL,qBAAC,mBACC,oBAAC,sBAAO,mBAAuB,mFAE5B;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC;QAAG;QACe,oBAAC,oBAAK,iBAAmB;;WACvC;OACL,qBAAC;QAAG;QACmB,oBAAC,oBAAK,oBAAsB;;WAC9C;OACL,qBAAC;QAAG;QACY,oBAAC,oBAAK,2BAA6B;;WAC9C;OACL,oBAAC,kBAAG,iDAAiD;;OAClD;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA4B;KAC/D,qBAAC;MAAE,WAAU;;OAAwB;OACX,oBAAC,oBAAK,oBAAsB;;;OAClD;KACJ,oBAAC;MACC,UAAS;MACT,MAAM;;;;;;;;OAQN;KACF,oBAAC;MAAE,WAAU;gBAA6B;OAItC;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAqB,WAAU;eAAY;MAE/C,EACP,qBAAC;KAAK,MAAK;KAAgC,WAAU;gBAAc,0BAC3C,oBAAC,gBAAa,MAAM,KAAM;MAC3C;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ArchitectureOverviewPage.js","names":[],"sources":["../../../../src/components/docs/architecture/ArchitectureOverviewPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Architecture: ContractSpec Docs',\n// description:\n// \"Understand ContractSpec's architecture: app configuration, integrations, knowledge, and runtime resolution.\",\n// };\n\nexport function ArchitectureOverviewPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Architecture</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec's architecture is built on a foundation of typed\n specifications served by runtime adapters. This section covers the\n core architectural concepts: app configuration, integration binding,\n and knowledge management.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Core layers</h2>\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">1. Specification Layer</h3>\n <p className=\"text-muted-foreground\">\n The foundation of ContractSpec. Typed specifications define what\n your application can do:\n </p>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-2\">\n <li>\n <Link\n href=\"/docs/specs/capabilities\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n CapabilitySpec\n </Link>{' '}\n - Operations and their inputs/outputs\n </li>\n <li>\n <Link\n href=\"/docs/specs/dataviews\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n DataViewSpec\n </Link>{' '}\n - Data queries and presentation\n </li>\n <li>\n <Link\n href=\"/docs/specs/workflows\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n WorkflowSpec\n </Link>{' '}\n - Multi-step processes\n </li>\n <li>\n <Link\n href=\"/docs/specs/policy\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n PolicySpec\n </Link>{' '}\n - Access control and data protection\n </li>\n <li>\n <Link\n href=\"/docs/integrations/spec-model\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n IntegrationSpec\n </Link>{' '}\n - External service providers\n </li>\n <li>\n <Link\n href=\"/docs/knowledge/spaces\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n KnowledgeSpaceSpec\n </Link>{' '}\n - Knowledge and context management\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">2. Configuration Layer</h3>\n <p className=\"text-muted-foreground\">\n How applications are configured and customized:\n </p>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-2\">\n <li>\n <Link\n href=\"/docs/architecture/app-config\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n AppBlueprintSpec\n </Link>{' '}\n - Global, versioned app definition\n </li>\n <li>\n <Link\n href=\"/docs/architecture/app-config\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n TenantAppConfig\n </Link>{' '}\n - Per-tenant, per-environment configuration\n </li>\n <li>\n <Link\n href=\"/docs/architecture/integration-binding\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n AppIntegrationBinding\n </Link>{' '}\n - How apps use integrations\n </li>\n <li>\n <Link\n href=\"/docs/architecture/knowledge-binding\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n AppKnowledgeBinding\n </Link>{' '}\n - How apps access knowledge\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">3. Runtime Layer</h3>\n <p className=\"text-muted-foreground\">\n How specifications are executed at runtime:\n </p>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-2\">\n <li>\n <strong>ResolvedAppConfig</strong> - Merged blueprint + tenant\n config\n </li>\n <li>\n <strong>Policy Decision Point (PDP)</strong> - Enforces policies\n on every operation\n </li>\n <li>\n <strong>Presentation Runtime</strong> - React and React Native\n renderers\n </li>\n <li>\n <strong>Integration Connectors</strong> - Execute external API\n calls\n </li>\n <li>\n <strong>Knowledge Retrieval</strong> - Query vector databases\n and knowledge sources\n </li>\n </ul>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Configuration model</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec uses a three-tier configuration model:\n </p>\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\">Layer</th>\n <th className=\"px-4 py-3 font-semibold\">Type</th>\n <th className=\"px-4 py-3 font-semibold\">Scope</th>\n <th className=\"px-4 py-3 font-semibold\">Storage</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 <strong>Blueprint</strong>\n </td>\n <td className=\"px-4 py-3 align-top font-mono text-xs\">\n AppBlueprintSpec\n </td>\n <td className=\"px-4 py-3 align-top\">\n Global, versioned, no tenant info\n </td>\n <td className=\"px-4 py-3 align-top\">\n Version control, immutable\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Tenant Config</strong>\n </td>\n <td className=\"px-4 py-3 align-top font-mono text-xs\">\n TenantAppConfig\n </td>\n <td className=\"px-4 py-3 align-top\">\n Per-tenant, per-environment\n </td>\n <td className=\"px-4 py-3 align-top\">Database, mutable</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Resolved Config</strong>\n </td>\n <td className=\"px-4 py-3 align-top font-mono text-xs\">\n ResolvedAppConfig\n </td>\n <td className=\"px-4 py-3 align-top\">Runtime, ephemeral</td>\n <td className=\"px-4 py-3 align-top\">\n In-memory, not persisted\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\">Key architectural principles</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Spec-first</strong> - Everything is defined declaratively\n before code generation\n </li>\n <li>\n <strong>Type-safe</strong> - All specifications are strongly typed\n and validated at compile time\n </li>\n <li>\n <strong>Policy-enforced</strong> - Every operation passes through\n the PDP\n </li>\n <li>\n <strong>Multi-tenant by default</strong> - Tenant isolation is\n built-in, not bolted on\n </li>\n <li>\n <strong>Environment-aware</strong> - Separate configurations for\n sandbox, staging, production\n </li>\n <li>\n <strong>Auditable</strong> - All operations are logged for\n compliance and debugging\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/architecture/app-config\" className=\"btn-primary\">\n App Configuration <ChevronRight size={16} />\n </Link>\n <Link href=\"/docs/integrations\" className=\"btn-ghost\">\n Integrations\n </Link>\n <Link href=\"/docs/knowledge\" className=\"btn-ghost\">\n Knowledge & Context\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,2BAA2B;AACzC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAiB,EACpD,oBAAC;KAAE,WAAU;eAAwB;MAKjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAgB,EACnD,qBAAC;KAAI,WAAU;;MACb,qBAAC;OAAI,WAAU;;QACb,oBAAC;SAAG,WAAU;mBAAwB;UAA2B;QACjE,oBAAC;SAAE,WAAU;mBAAwB;UAGjC;QACJ,qBAAC;SAAG,WAAU;;UACZ,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;;UACF;;QACD;MAEN,qBAAC;OAAI,WAAU;;QACb,oBAAC;SAAG,WAAU;mBAAwB;UAA2B;QACjE,oBAAC;SAAE,WAAU;mBAAwB;UAEjC;QACJ,qBAAC;SAAG,WAAU;;UACZ,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;UACL,qBAAC;WACC,oBAAC;YACC,MAAK;YACL,WAAU;sBACX;aAEM;WAAC;WAAI;cAET;;UACF;;QACD;MAEN,qBAAC;OAAI,WAAU;;QACb,oBAAC;SAAG,WAAU;mBAAwB;UAAqB;QAC3D,oBAAC;SAAE,WAAU;mBAAwB;UAEjC;QACJ,qBAAC;SAAG,WAAU;;UACZ,qBAAC,mBACC,oBAAC,sBAAO,sBAA0B,2CAE/B;UACL,qBAAC,mBACC,oBAAC,sBAAO,gCAAoC,+CAEzC;UACL,qBAAC,mBACC,oBAAC,sBAAO,yBAA6B,2CAElC;UACL,qBAAC,mBACC,oBAAC,sBAAO,2BAA+B,qCAEpC;UACL,qBAAC,mBACC,oBAAC,sBAAO,wBAA4B,uDAEjC;;UACF;;QACD;;MACF;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAwB;KAC3D,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,qBAAC;OAAM,WAAU;kBACf,oBAAC;QAAM,WAAU;kBACf,qBAAC;SAAG,WAAU;;UACZ,oBAAC;WAAG,WAAU;qBAA0B;YAAU;UAClD,oBAAC;WAAG,WAAU;qBAA0B;YAAS;UACjD,oBAAC;WAAG,WAAU;qBAA0B;YAAU;UAClD,oBAAC;WAAG,WAAU;qBAA0B;YAAY;;UACjD;SACC,EACR,qBAAC;QAAM,WAAU;;SACf,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,cAAkB;YACvB;UACL,oBAAC;WAAG,WAAU;qBAAwC;YAEjD;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,kBAAsB;YAC3B;UACL,oBAAC;WAAG,WAAU;qBAAwC;YAEjD;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAAsB;aACvD;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,oBAAwB;YAC7B;UACL,oBAAC;WAAG,WAAU;qBAAwC;YAEjD;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAAuB;UAC3D,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;aACF;;SACC;QACF;OACJ;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAiC,EACpE,qBAAC;KAAG,WAAU;;MACZ,qBAAC,mBACC,oBAAC,sBAAO,eAAmB,qEAExB;MACL,qBAAC,mBACC,oBAAC,sBAAO,cAAkB,8EAEvB;MACL,qBAAC,mBACC,oBAAC,sBAAO,oBAAwB,iDAE7B;MACL,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,sDAErC;MACL,qBAAC,mBACC,oBAAC,sBAAO,sBAA0B,mEAE/B;MACL,qBAAC,mBACC,oBAAC,sBAAO,cAAkB,iEAEvB;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAK,MAAK;MAAgC,WAAU;iBAAc,sBAC/C,oBAAC,gBAAa,MAAM,KAAM;OACvC;KACP,oBAAC;MAAK,MAAK;MAAqB,WAAU;gBAAY;OAE/C;KACP,oBAAC;MAAK,MAAK;MAAkB,WAAU;gBAAY;OAE5C;;KACH;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ComparisonAutomationPlatformsPage.js","names":[],"sources":["../../../../src/components/docs/comparison/ComparisonAutomationPlatformsPage.tsx"],"sourcesContent":["// export const metadata = {\n// title: 'Automation Platforms Comparison: ContractSpec Docs',\n// description:\n// 'Compare automation platforms like Zapier, Make, n8n, and Pipedream with ContractSpec.',\n// };\n\nexport function ComparisonAutomationPlatformsPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Automation platforms</h1>\n <p className=\"text-muted-foreground\">\n Automation platforms connect apps and automate tasks through triggers\n and actions. They serve operations and non-technical users well but\n stop short of generating full applications or enforcing fine-grained\n policies.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Feature comparison</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\">Feature</th>\n <th className=\"px-4 py-3 font-semibold\">Zapier</th>\n <th className=\"px-4 py-3 font-semibold\">Make (Integromat)</th>\n <th className=\"px-4 py-3 font-semibold\">n8n</th>\n <th className=\"px-4 py-3 font-semibold\">Pipedream</th>\n </tr>\n </thead>\n <tbody className=\"divide-border/50 divide-y\">\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Workflow model\n </td>\n <td className=\"px-4 py-3 align-top\">\n Zaps: trigger + one or more actions\n </td>\n <td className=\"px-4 py-3 align-top\">\n Real-time visual orchestration for AI agents and automations\n </td>\n <td className=\"px-4 py-3 align-top\">\n Node-based workflow builder with drag-and-drop and code; build\n multi-step AI agents\n </td>\n <td className=\"px-4 py-3 align-top\">\n Workflows connect any API; Pipedream Connect SDK adds\n integrations quickly\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Visual builder?\n </td>\n <td className=\"px-4 py-3 align-top\">\n Yes (simple; web-based).\n </td>\n <td className=\"px-4 py-3 align-top\">Yes; AI-assisted editor</td>\n <td className=\"px-4 py-3 align-top\">Yes; visual canvas.</td>\n <td className=\"px-4 py-3 align-top\">\n Code-centric editor; no visual UI builder\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Self-host?\n </td>\n <td className=\"px-4 py-3 align-top\">No (cloud only).</td>\n <td className=\"px-4 py-3 align-top\">Cloud only.</td>\n <td className=\"px-4 py-3 align-top\">Yes (Docker, self-host)</td>\n <td className=\"px-4 py-3 align-top\">Cloud only (hosted).</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Integrations & AI\n </td>\n <td className=\"px-4 py-3 align-top\">\n Connects almost 8 000 apps; limited AI features.\n </td>\n <td className=\"px-4 py-3 align-top\">\n 3 000+ pre-built apps; supports GenAI tools; GDPR/SOC2 and SSO\n </td>\n <td className=\"px-4 py-3 align-top\">\n Integrates LLMs; allows JS or Python code and library imports;\n chatbots with Slack/Teams\n </td>\n <td className=\"px-4 py-3 align-top\">\n MCP servers add 3 000+ APIs and 10 000+ tools to agents; AI\n agent builder prompts and deploys agents; SOC 2/ HIPAA/GDPR\n compliant\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Policy & UI generation\n </td>\n <td className=\"px-4 py-3 align-top\">\n No policy engine; does not generate user interfaces.\n </td>\n <td className=\"px-4 py-3 align-top\">\n No policy engine; does not generate UIs beyond a workflow\n dashboard.\n </td>\n <td className=\"px-4 py-3 align-top\">\n No policy engine; no UI builder\n </td>\n <td className=\"px-4 py-3 align-top\">\n No policy engine; does not generate UI.\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Why ContractSpec differs</h2>\n <ul className=\"text-muted-foreground space-y-2\">\n <li>\n <strong>Full application generation</strong> – ContractSpec compiles\n specs into back-end, events and user interfaces for both web and\n mobile.\n </li>\n <li>\n <strong>Policy enforcement</strong> – A built-in policy engine\n governs PII access and mutations across the UI.\n </li>\n <li>\n <strong>Customisation via overlays</strong> – Non-technical users\n can safely personalise layouts while respecting policies.\n </li>\n <li>\n <strong>Extensible capabilities</strong> – Connect to external APIs\n and services via capability providers while maintaining type safety.\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n Automation tools simplify integrations and tasks; ContractSpec goes\n further by generating a complete, policy-safe application around your\n data and processes.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAMA,SAAgB,oCAAoC;AAClD,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAyB,EAC5D,oBAAC;KAAE,WAAU;eAAwB;MAKjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAuB,EAC1D,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAM,WAAU;iBACf,oBAAC;OAAM,WAAU;iBACf,qBAAC;QAAG,WAAU;;SACZ,oBAAC;UAAG,WAAU;oBAA0B;WAAY;SACpD,oBAAC;UAAG,WAAU;oBAA0B;WAAW;SACnD,oBAAC;UAAG,WAAU;oBAA0B;WAAsB;SAC9D,oBAAC;UAAG,WAAU;oBAA0B;WAAQ;SAChD,oBAAC;UAAG,WAAU;oBAA0B;WAAc;;SACnD;QACC,EACR,qBAAC;OAAM,WAAU;;QACf,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAA4B;SAChE,oBAAC;UAAG,WAAU;oBAAsB;WAAwB;SAC5D,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAAqB;SACzD,oBAAC;UAAG,WAAU;oBAAsB;WAAgB;SACpD,oBAAC;UAAG,WAAU;oBAAsB;WAA4B;SAChE,oBAAC;UAAG,WAAU;oBAAsB;WAAyB;YAC1D;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAI/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;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;OAA6B;KAChE,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,gCAAoC,yGAGzC;OACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,mFAEhC;OACL,qBAAC,mBACC,oBAAC,sBAAO,+BAAmC,wFAExC;OACL,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,wGAErC;;OACF;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ComparisonEnterprisePlatformsPage.js","names":[],"sources":["../../../../src/components/docs/comparison/ComparisonEnterprisePlatformsPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\n\n// export const metadata = {\n// title: 'Enterprise Orchestration Comparison: ContractSpec Docs',\n// description:\n// 'See how Redwood RunMyJobs compares to ContractSpec for enterprise orchestration.',\n// };\n\nexport function ComparisonEnterprisePlatformsPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">\n Enterprise orchestration platforms\n </h1>\n <p className=\"text-muted-foreground\">\n Enterprise orchestration platforms manage mission-critical workloads\n and integrate deeply with ERP systems. They prioritise governance,\n reliability and compliance, but they do not provide spec-driven app\n generation or per-user customisation.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Redwood RunMyJobs</h2>\n <p className=\"text-muted-foreground\">\n <Link\n href=\"https://www.redwood.com/workload-automation/\"\n className=\"hover:text-foreground underline decoration-dotted underline-offset-4\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n RunMyJobs by Redwood\n </Link>{' '}\n is a cloud-native service orchestration and automation platform. Key\n attributes include:\n </p>\n <ul className=\"text-muted-foreground space-y-2\">\n <li>\n <strong>Self-service portal.</strong> Business users can run and\n customise workloads while IT ensures governance and compliance\n </li>\n <li>\n <strong>Full-stack orchestration.</strong> Integrates with both SAP\n and non-SAP systems; Redwood is recognised as a Leader in Gartner’s\n Magic Quadrant for service orchestration\n </li>\n <li>\n <strong>Observability and AI insights.</strong> Dashboards and\n AI-enhanced analytics identify bottlenecks and forecast issues\n </li>\n <li>\n <strong>Deep SAP integration.</strong> Supports SAP’s latest\n technologies and orchestrates mission-critical business processes\n </li>\n <li>\n <strong>Connectors & wizard.</strong> Provides pre-built\n connectors and a wizard to link on-prem and cloud systems\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h3 className=\"text-xl font-semibold\">Comparison with ContractSpec</h3>\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\">Aspect</th>\n <th className=\"px-4 py-3 font-semibold\">RunMyJobs</th>\n <th className=\"px-4 py-3 font-semibold\">ContractSpec</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 <strong>Target user</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Enterprise IT and operations teams automating SAP and\n mission-critical workflows.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Developers, product teams and SMBs wanting to generate\n policy-safe apps with customisable UIs.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Workload focus</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Service orchestration and job scheduling across ERP/legacy\n systems\n </td>\n <td className=\"px-4 py-3 align-top\">\n End-to-end application generation with back-end, UI and\n policies.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>User interface</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Self-service portal to run/monitor jobs; no custom UI\n generation for new apps.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Generates React/React-Native UIs from specs; users can\n personalise layout via overlays.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Open source</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Proprietary SaaS; enterprise agreements.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Core compiler is proprietary; SDK and certain modules may be\n open-source; offers hosted and on-prem options.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Policy & personalisation</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n IT controls governance; no per-user overlay concept.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Built-in policy engine and per-user overlays for safe\n personalisation.\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <p className=\"text-muted-foreground\">\n Redwood RunMyJobs is designed for orchestrating enterprise workloads\n and SAP processes. ContractSpec targets a different problem:\n generating complete applications from typed specs and letting end\n users adapt them safely.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AAQA,SAAgB,oCAAoC;AAClD,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAE9B,EACL,oBAAC;KAAE,WAAU;eAAwB;MAKjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,qBAAC;MAAE,WAAU;;OACX,oBAAC;QACC,MAAK;QACL,WAAU;QACV,QAAO;QACP,KAAI;kBACL;SAEM;OAAC;OAAI;;OAGV;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,yBAA6B,kGAElC;OACL,qBAAC,mBACC,oBAAC,sBAAO,8BAAkC,8IAGvC;OACL,qBAAC,mBACC,oBAAC,sBAAO,mCAAuC,sFAE5C;OACL,qBAAC,mBACC,oBAAC,sBAAO,0BAA8B,gGAEnC;OACL,qBAAC,mBACC,oBAAC,sBAAO,yBAAiC,qFAEtC;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAwB;OAAiC;KACvE,oBAAC;MAAI,WAAU;gBACb,qBAAC;OAAM,WAAU;kBACf,oBAAC;QAAM,WAAU;kBACf,qBAAC;SAAG,WAAU;;UACZ,oBAAC;WAAG,WAAU;qBAA0B;YAAW;UACnD,oBAAC;WAAG,WAAU;qBAA0B;YAAc;UACtD,oBAAC;WAAG,WAAU;qBAA0B;YAAiB;;UACtD;SACC,EACR,qBAAC;QAAM,WAAU;;SACf,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,gBAAoB;YACzB;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,mBAAuB;YAC5B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,mBAAuB;YAC5B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,gBAAoB;YACzB;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,6BAAqC;YAC1C;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;;SACC;QACF;OACJ;KACN,oBAAC;MAAE,WAAU;gBAAwB;OAKjC;;KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ComparisonInternalToolBuildersPage.js","names":[],"sources":["../../../../src/components/docs/comparison/ComparisonInternalToolBuildersPage.tsx"],"sourcesContent":["// export const metadata = {\n// title: 'Internal-Tool Builders Comparison: ContractSpec Docs',\n// description:\n// 'See how popular internal-tool builders compare to ContractSpec on UI generation, policies, and personalisation.',\n// };\n\nexport function ComparisonInternalToolBuildersPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Internal-tool builders</h1>\n <p className=\"text-muted-foreground\">\n Internal-tool builders let teams quickly assemble dashboards and admin\n panels. These platforms often provide drag-and-drop UIs and connectors\n to databases and APIs, but they rely on developers to write custom\n code for business logic and seldom enforce policies across surfaces.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Feature comparison</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\">Feature</th>\n <th className=\"px-4 py-3 font-semibold\">Retool</th>\n <th className=\"px-4 py-3 font-semibold\">Appsmith</th>\n <th className=\"px-4 py-3 font-semibold\">ToolJet</th>\n <th className=\"px-4 py-3 font-semibold\">Budibase</th>\n </tr>\n </thead>\n <tbody className=\"divide-border/50 divide-y\">\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n UI builder\n </td>\n <td className=\"px-4 py-3 align-top\">\n Drag-and-drop canvas; shape UI components easily\n </td>\n <td className=\"px-4 py-3 align-top\">\n Visual builder with drag-and-drop widgets\n </td>\n <td className=\"px-4 py-3 align-top\">\n Drag-and-drop UI widgets (tables, charts, forms)\n </td>\n <td className=\"px-4 py-3 align-top\">\n Pre-built components and templates for mobile/desktop\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Custom code & logic\n </td>\n <td className=\"px-4 py-3 align-top\">\n Full code insertion anywhere via IDE\n </td>\n <td className=\"px-4 py-3 align-top\">\n Logic via JavaScript or natural-language prompts in a central\n IDE\n </td>\n <td className=\"px-4 py-3 align-top\">\n Supports business logic in JavaScript or Python queries\n </td>\n <td className=\"px-4 py-3 align-top\">\n Custom logic via JavaScript; plugins and external embeds\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Data connectors\n </td>\n <td className=\"px-4 py-3 align-top\">\n Wide support for databases and APIs (PostgreSQL, MongoDB,\n GraphQL, etc.).\n </td>\n <td className=\"px-4 py-3 align-top\">\n Connects to LLMs and databases\n </td>\n <td className=\"px-4 py-3 align-top\">\n Built-in database; connects to PostgreSQL, MongoDB, APIs,\n GraphQL, SaaS\n </td>\n <td className=\"px-4 py-3 align-top\">\n Connects to external databases, REST, CSV or built-in DB\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Open source & self-host\n </td>\n <td className=\"px-4 py-3 align-top\">\n Proprietary; cloud or on-prem subscription.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Open source (Apache-2.0); self-host or cloud.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Open source; self-host via Docker or cloud.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Open source; self-host via Docker/Kubernetes\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top font-semibold\">\n Policy & personalisation\n </td>\n <td className=\"px-4 py-3 align-top\">\n No built-in policy engine; personalisation limited to user\n roles.\n </td>\n <td className=\"px-4 py-3 align-top\">\n No typed policy engine; customisation depends on user roles.\n </td>\n <td className=\"px-4 py-3 align-top\">\n No policy engine; personalisation via user roles.\n </td>\n <td className=\"px-4 py-3 align-top\">\n No policy engine; personalisation via RBAC & SSO\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">ContractSpec’s differences</h2>\n <ul className=\"text-muted-foreground space-y-2\">\n <li>\n <strong>Typed specifications</strong> produce both the API and UI.\n You define capabilities, data views and workflows, and the compiler\n generates code, forms and screens—no manual widget wiring.\n </li>\n <li>\n <strong>Policy enforcement</strong> at run time ensures PII and ABAC\n rules across the entire app.\n </li>\n <li>\n <strong>Overlay personalisation</strong> allows tenants and users to\n change layouts safely without code.\n </li>\n <li>\n <strong>Unified mobile/web runtime</strong> means you don’t need\n separate builders for React Native vs web.\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n Internal-tool builders are useful for quick dashboards. ContractSpec\n extends this by generating the whole stack from specs and enforcing\n policies throughout.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAMA,SAAgB,qCAAqC;AACnD,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA2B,EAC9D,oBAAC;KAAE,WAAU;eAAwB;MAKjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAuB,EAC1D,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAM,WAAU;iBACf,oBAAC;OAAM,WAAU;iBACf,qBAAC;QAAG,WAAU;;SACZ,oBAAC;UAAG,WAAU;oBAA0B;WAAY;SACpD,oBAAC;UAAG,WAAU;oBAA0B;WAAW;SACnD,oBAAC;UAAG,WAAU;oBAA0B;WAAa;SACrD,oBAAC;UAAG,WAAU;oBAA0B;WAAY;SACpD,oBAAC;UAAG,WAAU;oBAA0B;WAAa;;SAClD;QACC,EACR,qBAAC;OAAM,WAAU;;QACf,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBAAoC;WAE7C;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;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;OAA+B;KAClE,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,yBAA6B,oKAGlC;OACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,sEAEhC;OACL,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,wEAErC;OACL,qBAAC,mBACC,oBAAC,sBAAO,+BAAmC,wEAExC;;OACF;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAIjC;;KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ComparisonOverviewPage.js","names":[],"sources":["../../../../src/components/docs/comparison/ComparisonOverviewPage.tsx"],"sourcesContent":["// export const metadata = {\n// title: 'Comparison Overview: ContractSpec Docs',\n// description:\n// 'See how ContractSpec relates to workflow engines, internal-tool builders, automation platforms, and enterprise orchestrators.',\n// };\n\nexport function ComparisonOverviewPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Comparison overview</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec sits at the intersection of several tool categories. To\n appreciate its unique offering—typed specifications for back-end,\n front-end, workflows and policies with a unified web/mobile\n runtime—this section compares it to related products.\n </p>\n <p className=\"text-muted-foreground\">\n ContractSpec uses <strong>runtime adapters</strong> to serve typed{' '}\n <strong>Operations</strong> (Commands/Queries),{' '}\n <strong>DataViews</strong>, <strong>Workflows</strong>, and{' '}\n <strong>Policies</strong> as REST/GraphQL/MCP endpoints. A{' '}\n <strong>policy decision point</strong> governs every operation, and{' '}\n <strong>OverlaySpecs</strong> allow non-technical users to personalise\n screens safely. Few competitors offer this combination of runtime type\n safety, policy enforcement, and end-user customisation.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Tool categories</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\">Category</th>\n <th className=\"px-4 py-3 font-semibold\">Examples</th>\n <th className=\"px-4 py-3 font-semibold\">What they do</th>\n <th className=\"px-4 py-3 font-semibold\">Limitations</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 <strong>Workflow engines</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Prefect, Kestra, Temporal, Airflow, Dagster, Hatchet, Windmill\n </td>\n <td className=\"px-4 py-3 align-top\">\n Orchestrate code or data pipelines; handle retries, scheduling\n and observability\n </td>\n <td className=\"px-4 py-3 align-top\">\n Require writing code; no automatic UI generation or policy\n enforcement.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Internal-tool builders</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Retool, Appsmith, ToolJet, Budibase\n </td>\n <td className=\"px-4 py-3 align-top\">\n Drag-and-drop dashboards and admin panels; connect to\n databases/APIs\n </td>\n <td className=\"px-4 py-3 align-top\">\n No typed back-end spec; limited enforcement of policies;\n custom code glues logic.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Automation platforms</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Zapier, Make, n8n, Pipedream\n </td>\n <td className=\"px-4 py-3 align-top\">\n Connect apps via triggers and actions; visual or low-code\n interfaces\n </td>\n <td className=\"px-4 py-3 align-top\">\n Automate tasks but do not generate full apps or enforce\n per-field policies.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Enterprise orchestrators</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">Redwood RunMyJobs</td>\n <td className=\"px-4 py-3 align-top\">\n Automate mission-critical workloads with self-service portals\n and SAP integrations\n </td>\n <td className=\"px-4 py-3 align-top\">\n Focus on IT workloads; not built for custom app creation or\n per-user customisation.\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <p className=\"text-muted-foreground\">\n Use the pages below to explore each group in detail and see how\n ContractSpec compares.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAMA,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;;IACb,oBAAC;KAAG,WAAU;eAAqB;MAAwB;IAC3D,oBAAC;KAAE,WAAU;eAAwB;MAKjC;IACJ,qBAAC;KAAE,WAAU;;MAAwB;MACjB,oBAAC,sBAAO,qBAAyB;;MAAgB;MACnE,oBAAC,sBAAO,eAAmB;;MAAqB;MAChD,oBAAC,sBAAO,cAAkB;;MAAE,oBAAC,sBAAO,cAAkB;;MAAM;MAC5D,oBAAC,sBAAO,aAAiB;;MAAkC;MAC3D,oBAAC,sBAAO,0BAA8B;;MAA8B;MACpE,oBAAC,sBAAO,iBAAqB;;;MAG3B;;IACA,EAEN,qBAAC;GAAI,WAAU;;IACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB;IACvD,oBAAC;KAAI,WAAU;eACb,qBAAC;MAAM,WAAU;iBACf,oBAAC;OAAM,WAAU;iBACf,qBAAC;QAAG,WAAU;;SACZ,oBAAC;UAAG,WAAU;oBAA0B;WAAa;SACrD,oBAAC;UAAG,WAAU;oBAA0B;WAAa;SACrD,oBAAC;UAAG,WAAU;oBAA0B;WAAiB;SACzD,oBAAC;UAAG,WAAU;oBAA0B;WAAgB;;SACrD;QACC,EACR,qBAAC;OAAM,WAAU;;QACf,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,qBAAyB;WAC9B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,2BAA+B;WACpC;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,yBAA6B;WAClC;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAE/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;QACL,qBAAC;SACC,oBAAC;UAAG,WAAU;oBACZ,oBAAC,sBAAO,6BAAiC;WACtC;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAAsB;SAC1D,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;SACL,oBAAC;UAAG,WAAU;oBAAsB;WAG/B;YACF;;QACC;OACF;MACJ;IACN,oBAAC;KAAE,WAAU;eAAwB;MAGjC;;IACA;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ComparisonWindmillPage.js","names":[],"sources":["../../../../src/components/docs/comparison/ComparisonWindmillPage.tsx"],"sourcesContent":["// export const metadata = {\n// title: 'Windmill Comparison: ContractSpec Docs',\n// description:\n// 'Understand how Windmill compares to ContractSpec across entry model, policy enforcement, and personalisation.',\n// };\n\nexport function ComparisonWindmillPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Windmill</h1>\n <p className=\"text-muted-foreground\">\n Windmill is an open-source platform that turns{' '}\n <strong>scripts</strong> into endpoints, workflows and UIs. It seeks\n to remove boilerplate by generating interfaces and workflows around\n existing code\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Platform features</h2>\n <ul className=\"text-muted-foreground space-y-3\">\n <li>\n <strong>Script-driven model.</strong> Write scripts in TypeScript,\n Python, Go, PHP, Bash, C#, SQL or Rust; Windmill infers\n dependencies, creates lockfiles and JSON schemas, then serves\n minimal UIs automatically\n </li>\n <li>\n <strong>Visual flow editor.</strong> Compose scripts into workflows\n with retries, error handling, loops, branching, suspending flows and\n approval steps\n </li>\n <li>\n <strong>Low-code UI builder.</strong> Build dashboards and admin\n panels using inline scripts and trigger flows from the UI\n </li>\n <li>\n <strong>Enterprise readiness.</strong> Features include RBAC\n permissions, secret management, OAuth handling, CLI/git sync,\n scheduling and webhooks\n </li>\n <li>\n <strong>Use cases.</strong> Deploy scripts as webhooks or cron jobs;\n create “applicative workflows” combining external APIs; build ETLs\n and interactive dashboards\n </li>\n <li>\n <strong>Open source & self-hosting.</strong> Windmill emphasises\n an open-source codebase and self-hosting options\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Comparison with ContractSpec</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\">Feature</th>\n <th className=\"px-4 py-3 font-semibold\">Windmill</th>\n <th className=\"px-4 py-3 font-semibold\">ContractSpec</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 <strong>Entry model</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Write scripts; platform auto-generates UI and workflows\n </td>\n <td className=\"px-4 py-3 align-top\">\n Define typed specs (Capabilities, DataViews, Workflows,\n Policies); compiler outputs back-end, front-end and forms.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Language support</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n 20+ languages via embedded runtimes\n </td>\n <td className=\"px-4 py-3 align-top\">\n Uses TypeScript/JavaScript for providers; supports other\n back-ends through capability providers.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>UI generation</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Minimal UI forms from script parameters; low-code app builder\n </td>\n <td className=\"px-4 py-3 align-top\">\n Generates full web and mobile UIs from specs; user layouts can\n be customised via signed overlays.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Policy & personalization</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n RBAC and secret management; no per-user overlay concept\n </td>\n <td className=\"px-4 py-3 align-top\">\n Built-in policy engine enforcing ABAC/PII on every\n render/mutate; overlays allow safe per-user customisation.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Open source</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Fully open source and self-hostable\n </td>\n <td className=\"px-4 py-3 align-top\">\n Closed-source core (SDK is open); offers hosted and on-prem\n modes.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Ideal for</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Teams wanting to expose scripts as APIs, workflows or\n dashboards without heavy infrastructure.\n </td>\n <td className=\"px-4 py-3 align-top\">\n Teams needing a spec-driven platform that generates code and\n UI, enforces policies and lets non-technical users tailor the\n experience.\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <p className=\"text-muted-foreground\">\n Windmill excels at converting scripts into workflows and admin panels.\n ContractSpec takes a <strong>spec-first</strong> approach, generating\n the entire stack and enforcing policies, making it suitable for\n long-lived applications that must evolve safely.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAMA,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAa,EAChD,qBAAC;KAAE,WAAU;;MAAwB;MACY;MAC/C,oBAAC,sBAAO,YAAgB;;;MAGtB;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAsB,EACzD,qBAAC;KAAG,WAAU;;MACZ,qBAAC,mBACC,oBAAC,sBAAO,yBAA6B,qLAIlC;MACL,qBAAC,mBACC,oBAAC,sBAAO,wBAA4B,2HAGjC;MACL,qBAAC,mBACC,oBAAC,sBAAO,yBAA6B,6FAElC;MACL,qBAAC,mBACC,oBAAC,sBAAO,0BAA8B,oHAGnC;MACL,qBAAC,mBACC,oBAAC,sBAAO,eAAmB,+IAGxB;MACL,qBAAC,mBACC,oBAAC,sBAAO,gCAAwC,6EAE7C;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAiC;KACpE,oBAAC;MAAI,WAAU;gBACb,qBAAC;OAAM,WAAU;kBACf,oBAAC;QAAM,WAAU;kBACf,qBAAC;SAAG,WAAU;;UACZ,oBAAC;WAAG,WAAU;qBAA0B;YAAY;UACpD,oBAAC;WAAG,WAAU;qBAA0B;YAAa;UACrD,oBAAC;WAAG,WAAU;qBAA0B;YAAiB;;UACtD;SACC,EACR,qBAAC;QAAM,WAAU;;SACf,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,gBAAoB;YACzB;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,qBAAyB;YAC9B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,kBAAsB;YAC3B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,6BAAqC;YAC1C;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,gBAAoB;YACzB;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAE/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;aACF;SACL,qBAAC;UACC,oBAAC;WAAG,WAAU;qBACZ,oBAAC,sBAAO,cAAkB;YACvB;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAG/B;UACL,oBAAC;WAAG,WAAU;qBAAsB;YAI/B;aACF;;SACC;QACF;OACJ;KACN,qBAAC;MAAE,WAAU;;OAAwB;OAEd,oBAAC,sBAAO,eAAmB;;;OAG9C;;KACA;;GACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ComparisonWorkflowEnginesPage.js","names":[],"sources":["../../../../src/components/docs/comparison/ComparisonWorkflowEnginesPage.tsx"],"sourcesContent":["// export const metadata = {\n// title: 'Workflow Engines Comparison: ContractSpec Docs',\n// description:\n// 'Compare popular workflow engines with ContractSpec to understand core strengths and differences.',\n// };\n\nexport function ComparisonWorkflowEnginesPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Workflow engines</h1>\n <p className=\"text-muted-foreground\">\n Workflow engines orchestrate long-running tasks and data pipelines.\n They provide retries, scheduling and visibility, but most expect\n developers to write code and do not generate user interfaces. Here’s\n how the major engines compare to ContractSpec.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Key differences summary</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\">Engine</th>\n <th className=\"px-4 py-3 font-semibold\">Core strengths</th>\n <th className=\"px-4 py-3 font-semibold\">UI generation?</th>\n <th className=\"px-4 py-3 font-semibold\">\n Policy/PII enforcement?\n </th>\n <th className=\"px-4 py-3 font-semibold\">Self-host?</th>\n <th className=\"px-4 py-3 font-semibold\">Primary use</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 <strong>Prefect</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Python-native; dynamic DAGs adapt to change; annotate code\n without rewriting; strong observability and audit logs\n </td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">Yes</td>\n <td className=\"px-4 py-3 align-top\">\n Data pipelines and dynamic workflows.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Kestra</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Declarative YAML; event-driven triggers; mix of code and\n no-code; write logic in Python/R/Java/Julia/Ruby; deploy\n anywhere\n </td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">Yes</td>\n <td className=\"px-4 py-3 align-top\">\n Data pipelines and hybrid orchestration.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Temporal</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Durable execution; workflows never lose state; multi-language\n SDKs; automatic retries\n </td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">Yes</td>\n <td className=\"px-4 py-3 align-top\">\n Durable microservice and business workflows.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Airflow</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Open-source; define workflows as Python code; schedule and\n monitor via UI; extensible via custom operators\n </td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">Yes</td>\n <td className=\"px-4 py-3 align-top\">Data ETL pipelines.</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Dagster</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Data-asset model; local testing and reusable components;\n built-in data quality and catalog; orchestrates AI/data\n pipelines across multiple tools\n </td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">Yes</td>\n <td className=\"px-4 py-3 align-top\">\n Data/AI pipelines with strong observability.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Hatchet</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Modern engine focused on performance and durability; tasks and\n workflows as code; durable functions with guardrails and\n retries\n </td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">No</td>\n <td className=\"px-4 py-3 align-top\">Yes</td>\n <td className=\"px-4 py-3 align-top\">\n High-throughput background jobs and microservices.\n </td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 align-top\">\n <strong>Windmill</strong>\n </td>\n <td className=\"px-4 py-3 align-top\">\n Multi-language scripts; auto-generates UI; integrated flow\n editor\n </td>\n <td className=\"px-4 py-3 align-top\">Yes (basic)</td>\n <td className=\"px-4 py-3 align-top\">RBAC & secrets only</td>\n <td className=\"px-4 py-3 align-top\">Yes</td>\n <td className=\"px-4 py-3 align-top\">\n Scripts into workflows and dashboards.\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Why ContractSpec differs</h2>\n <ul className=\"text-muted-foreground space-y-2\">\n <li>\n <strong>Spec-first generation</strong> – Instead of writing code,\n you define typed specs for capabilities, data views and workflows;\n the compiler outputs both back-end and front-end.\n </li>\n <li>\n <strong>Policy engine</strong> – Every render and mutate passes\n through an ABAC/PII policy decision point.\n </li>\n <li>\n <strong>Personalisation</strong> – Signed OverlaySpecs allow\n tenant/user-specific UI changes without touching code.\n </li>\n <li>\n <strong>Unified runtime</strong> – React/React-Native rendering\n ensures consistent experiences across web and mobile.\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n Workflow engines are excellent for orchestrating back-end tasks.\n ContractSpec builds on this by serving complete applications with\n runtime policy enforcement and user personalisation via TypeScript\n specs.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|