@contractspec/bundle.library 3.4.3 → 3.5.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 +494 -488
- package/CHANGELOG.md +36 -0
- package/dist/application/index.js +8 -8
- package/dist/application/mcp/cliMcp.js +8 -8
- package/dist/application/mcp/contractsMcp.js +8 -8
- package/dist/application/mcp/docsMcp.js +8 -8
- package/dist/application/mcp/index.js +8 -8
- package/dist/application/mcp/internalMcp.js +8 -8
- package/dist/application/mcp/providerRankingMcp.js +8 -8
- package/dist/bundles/LibraryBundle.d.ts +126 -0
- package/dist/bundles/LibraryBundle.js +139 -0
- package/dist/bundles/index.d.ts +1 -0
- package/dist/bundles/index.js +139 -0
- package/dist/components/docs/DocsIndexPage.js +91 -91
- package/dist/components/docs/advanced/AdvancedMCPPage.js +125 -125
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +51 -51
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
- package/dist/components/docs/advanced/index.js +482 -482
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
- package/dist/components/docs/architecture/index.js +748 -748
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +97 -97
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +125 -125
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
- package/dist/components/docs/comparison/index.js +738 -738
- package/dist/components/docs/ecosystem/IntegrationsPage.js +45 -45
- package/dist/components/docs/ecosystem/PluginsPage.js +73 -73
- package/dist/components/docs/ecosystem/RegistryPage.js +37 -37
- package/dist/components/docs/ecosystem/TemplatesPage.js +56 -56
- package/dist/components/docs/ecosystem/index.js +211 -211
- package/dist/components/docs/examples/DocsExamplesPage.js +21 -21
- package/dist/components/docs/examples/index.js +21 -21
- package/dist/components/docs/getting-started/CLIPage.js +95 -95
- package/dist/components/docs/getting-started/CompatibilityPage.js +81 -81
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +57 -57
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +61 -61
- package/dist/components/docs/getting-started/HelloWorldPage.js +77 -77
- package/dist/components/docs/getting-started/InstallationPage.js +65 -65
- package/dist/components/docs/getting-started/StartHerePage.js +51 -51
- package/dist/components/docs/getting-started/TroubleshootingPage.js +73 -73
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
- package/dist/components/docs/getting-started/index.js +731 -731
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
- package/dist/components/docs/guides/GuideContractTypesPage.js +232 -232
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +82 -82
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +106 -106
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
- package/dist/components/docs/guides/GuidesIndexPage.js +43 -43
- package/dist/components/docs/guides/index.js +975 -975
- package/dist/components/docs/index.js +10791 -10791
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +61 -61
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +49 -49
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +69 -69
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +121 -121
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
- package/dist/components/docs/integrations/IntegrationsResendPage.js +45 -45
- package/dist/components/docs/integrations/IntegrationsS3Page.js +57 -57
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +63 -63
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
- package/dist/components/docs/integrations/IntegrationsStripePage.js +159 -159
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
- package/dist/components/docs/integrations/index.js +1642 -1642
- package/dist/components/docs/intent/ContractFirstApiPage.js +51 -51
- package/dist/components/docs/intent/DeterministicCodegenPage.js +59 -59
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
- package/dist/components/docs/intent/OpenapiAlternativePage.js +91 -91
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
- package/dist/components/docs/intent/index.js +396 -396
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
- package/dist/components/docs/knowledge/index.js +963 -963
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +43 -43
- package/dist/components/docs/libraries/LibrariesContractsPage.js +125 -125
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +35 -35
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +191 -191
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +49 -49
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +87 -87
- package/dist/components/docs/libraries/LibrariesSLOPage.js +47 -47
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +139 -139
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
- package/dist/components/docs/libraries/LibrariesTestingPage.js +49 -49
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +107 -107
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
- package/dist/components/docs/libraries/index.js +1919 -1919
- package/dist/components/docs/manifesto/ManifestoPage.js +79 -79
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +33 -33
- package/dist/components/docs/ops/index.js +92 -92
- package/dist/components/docs/reference/DocsMarkdownContent.js +27 -27
- package/dist/components/docs/reference/DocsReferenceContent.js +34 -34
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +23 -23
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +26 -26
- package/dist/components/docs/reference/DocsReferencePage.js +37 -37
- package/dist/components/docs/reference/index.js +63 -63
- package/dist/components/docs/safety/SafetyAuditingPage.js +161 -161
- package/dist/components/docs/safety/SafetyMigrationsPage.js +169 -169
- package/dist/components/docs/safety/SafetyOverviewPage.js +99 -99
- package/dist/components/docs/safety/SafetyPDPPage.js +137 -137
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +95 -95
- package/dist/components/docs/safety/SafetySigningPage.js +39 -39
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
- package/dist/components/docs/safety/index.js +733 -733
- package/dist/components/docs/shared/StudioPrompt.js +9 -9
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
- package/dist/components/docs/specs/SpecsDataViewsPage.js +119 -119
- package/dist/components/docs/specs/SpecsOverlaysPage.js +171 -171
- package/dist/components/docs/specs/SpecsOverviewPage.js +167 -167
- package/dist/components/docs/specs/SpecsPolicyPage.js +179 -179
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +141 -141
- package/dist/components/docs/specs/index.js +838 -838
- package/dist/components/docs/studio/StudioBYOKPage.js +9 -9
- package/dist/components/docs/studio/StudioDeploymentsPage.js +9 -9
- package/dist/components/docs/studio/StudioGettingStartedPage.js +9 -9
- package/dist/components/docs/studio/StudioIntegrationsPage.js +9 -9
- package/dist/components/docs/studio/StudioOverviewPage.js +33 -33
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +9 -9
- package/dist/components/docs/studio/index.js +78 -78
- package/dist/components/integrations/index.js +209 -209
- package/dist/components/integrations/molecules/IntegrationCard.js +33 -33
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +71 -71
- package/dist/components/integrations/organisms/IntegrationSettings.js +98 -98
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +40 -40
- package/dist/components/legal/PrivacyTemplate.js +477 -477
- package/dist/components/legal/TermsTemplate.js +421 -421
- package/dist/components/legal/index.js +898 -898
- package/dist/components/shared/FeatureGateNotice.js +13 -13
- package/dist/components/shared/index.js +13 -13
- package/dist/components/shell/WorkspaceHeader.js +37 -37
- package/dist/components/shell/WorkspaceProjectShellLayout.js +77 -77
- package/dist/components/shell/WorkspaceShellRenderer.d.ts +17 -0
- package/dist/components/shell/WorkspaceShellRenderer.js +229 -0
- package/dist/components/shell/WorkspaceSidebar.js +27 -27
- package/dist/components/shell/index.d.ts +1 -0
- package/dist/components/shell/index.js +140 -77
- package/dist/components/templates/index.js +272 -272
- package/dist/components/templates/messaging/ConversationList.js +27 -27
- package/dist/components/templates/messaging/MessageComposer.js +27 -27
- package/dist/components/templates/messaging/MessageThread.js +18 -18
- package/dist/components/templates/messaging/MessagingWorkspace.js +65 -65
- package/dist/components/templates/messaging/index.js +65 -65
- package/dist/components/templates/recipes/LanguageSwitcher.js +5 -5
- package/dist/components/templates/recipes/RecipeCard.js +26 -26
- package/dist/components/templates/recipes/RecipeDetail.js +33 -33
- package/dist/components/templates/recipes/RecipeList.js +80 -80
- package/dist/components/templates/recipes/index.js +80 -80
- package/dist/components/templates/todos/FilterBar.js +39 -39
- package/dist/components/templates/todos/TaskForm.js +43 -43
- package/dist/components/templates/todos/TaskItem.js +30 -30
- package/dist/components/templates/todos/TaskList.js +127 -127
- package/dist/components/templates/todos/index.js +127 -127
- package/dist/index.js +12323 -12260
- package/dist/infrastructure/elysia/index.js +8 -8
- package/dist/infrastructure/elysia/logger.js +8 -8
- package/dist/infrastructure/index.js +8 -8
- package/dist/libs/posthog/client.js +2 -2
- package/dist/node/application/index.js +8 -8
- package/dist/node/application/mcp/cliMcp.js +8 -8
- package/dist/node/application/mcp/contractsMcp.js +8 -8
- package/dist/node/application/mcp/docsMcp.js +8 -8
- package/dist/node/application/mcp/index.js +8 -8
- package/dist/node/application/mcp/internalMcp.js +8 -8
- package/dist/node/application/mcp/providerRankingMcp.js +8 -8
- package/dist/node/bundles/LibraryBundle.js +138 -0
- package/dist/node/bundles/index.js +138 -0
- package/dist/node/components/docs/DocsIndexPage.js +91 -91
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +125 -125
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +49 -49
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +51 -51
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +35 -35
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +177 -177
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +45 -45
- package/dist/node/components/docs/advanced/index.js +482 -482
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +107 -107
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +73 -73
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +117 -117
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +175 -175
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +71 -71
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +205 -205
- package/dist/node/components/docs/architecture/index.js +748 -748
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +117 -117
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +111 -111
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +117 -117
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +97 -97
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +125 -125
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +171 -171
- package/dist/node/components/docs/comparison/index.js +738 -738
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +45 -45
- package/dist/node/components/docs/ecosystem/PluginsPage.js +73 -73
- package/dist/node/components/docs/ecosystem/RegistryPage.js +37 -37
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +56 -56
- package/dist/node/components/docs/ecosystem/index.js +211 -211
- package/dist/node/components/docs/examples/DocsExamplesPage.js +21 -21
- package/dist/node/components/docs/examples/index.js +21 -21
- package/dist/node/components/docs/getting-started/CLIPage.js +95 -95
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +81 -81
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +57 -57
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +61 -61
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +77 -77
- package/dist/node/components/docs/getting-started/InstallationPage.js +65 -65
- package/dist/node/components/docs/getting-started/StartHerePage.js +51 -51
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +73 -73
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +171 -171
- package/dist/node/components/docs/getting-started/index.js +731 -731
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +80 -80
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +232 -232
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +82 -82
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +84 -84
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +324 -324
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +106 -106
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +78 -78
- package/dist/node/components/docs/guides/GuidesIndexPage.js +43 -43
- package/dist/node/components/docs/guides/index.js +975 -975
- package/dist/node/components/docs/index.js +10791 -10791
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +17 -17
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +47 -47
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +61 -61
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +49 -49
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +33 -33
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +65 -65
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +69 -69
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +65 -65
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +313 -313
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +101 -101
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +121 -121
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +49 -49
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +45 -45
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +57 -57
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +63 -63
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +139 -139
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +159 -159
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +61 -61
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +63 -63
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +65 -65
- package/dist/node/components/docs/integrations/index.js +1642 -1642
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +51 -51
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +59 -59
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +85 -85
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +91 -91
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +59 -59
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +51 -51
- package/dist/node/components/docs/intent/index.js +396 -396
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +371 -371
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +79 -79
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +185 -185
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +187 -187
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +141 -141
- package/dist/node/components/docs/knowledge/index.js +963 -963
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +85 -85
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +63 -63
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +33 -33
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +43 -43
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +125 -125
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +45 -45
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +69 -69
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +79 -79
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +129 -129
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +73 -73
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +35 -35
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +43 -43
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +53 -53
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +45 -45
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +191 -191
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +47 -47
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +53 -53
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +87 -87
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +47 -47
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +139 -139
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +57 -57
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +49 -49
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +107 -107
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +35 -35
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +89 -89
- package/dist/node/components/docs/libraries/index.js +1919 -1919
- package/dist/node/components/docs/manifesto/ManifestoPage.js +79 -79
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +59 -59
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +33 -33
- package/dist/node/components/docs/ops/index.js +92 -92
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +27 -27
- package/dist/node/components/docs/reference/DocsReferenceContent.js +34 -34
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +23 -23
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +26 -26
- package/dist/node/components/docs/reference/DocsReferencePage.js +37 -37
- package/dist/node/components/docs/reference/index.js +63 -63
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +161 -161
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +169 -169
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +99 -99
- package/dist/node/components/docs/safety/SafetyPDPPage.js +137 -137
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +95 -95
- package/dist/node/components/docs/safety/SafetySigningPage.js +39 -39
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +33 -33
- package/dist/node/components/docs/safety/index.js +733 -733
- package/dist/node/components/docs/shared/StudioPrompt.js +9 -9
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +61 -61
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +119 -119
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +171 -171
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +167 -167
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +179 -179
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +141 -141
- package/dist/node/components/docs/specs/index.js +838 -838
- package/dist/node/components/docs/studio/StudioBYOKPage.js +9 -9
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +9 -9
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +9 -9
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +9 -9
- package/dist/node/components/docs/studio/StudioOverviewPage.js +33 -33
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +9 -9
- package/dist/node/components/docs/studio/index.js +78 -78
- package/dist/node/components/integrations/index.js +209 -209
- package/dist/node/components/integrations/molecules/IntegrationCard.js +33 -33
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +71 -71
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +98 -98
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +40 -40
- package/dist/node/components/legal/PrivacyTemplate.js +477 -477
- package/dist/node/components/legal/TermsTemplate.js +421 -421
- package/dist/node/components/legal/index.js +898 -898
- package/dist/node/components/shared/FeatureGateNotice.js +13 -13
- package/dist/node/components/shared/index.js +13 -13
- package/dist/node/components/shell/WorkspaceHeader.js +37 -37
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +77 -77
- package/dist/node/components/shell/WorkspaceShellRenderer.js +228 -0
- package/dist/node/components/shell/WorkspaceSidebar.js +27 -27
- package/dist/node/components/shell/index.js +140 -77
- package/dist/node/components/templates/index.js +272 -272
- package/dist/node/components/templates/messaging/ConversationList.js +27 -27
- package/dist/node/components/templates/messaging/MessageComposer.js +27 -27
- package/dist/node/components/templates/messaging/MessageThread.js +18 -18
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +65 -65
- package/dist/node/components/templates/messaging/index.js +65 -65
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +5 -5
- package/dist/node/components/templates/recipes/RecipeCard.js +26 -26
- package/dist/node/components/templates/recipes/RecipeDetail.js +33 -33
- package/dist/node/components/templates/recipes/RecipeList.js +80 -80
- package/dist/node/components/templates/recipes/index.js +80 -80
- package/dist/node/components/templates/todos/FilterBar.js +39 -39
- package/dist/node/components/templates/todos/TaskForm.js +43 -43
- package/dist/node/components/templates/todos/TaskItem.js +30 -30
- package/dist/node/components/templates/todos/TaskList.js +127 -127
- package/dist/node/components/templates/todos/index.js +127 -127
- package/dist/node/index.js +12323 -12260
- package/dist/node/infrastructure/elysia/index.js +8 -8
- package/dist/node/infrastructure/elysia/logger.js +8 -8
- package/dist/node/infrastructure/index.js +8 -8
- package/dist/node/libs/posthog/client.js +2 -2
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +3 -3
- package/dist/node/presentation/features/atoms/index.js +3 -3
- package/dist/node/presentation/features/index.js +915 -915
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +101 -101
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +23 -23
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
- package/dist/node/presentation/features/molecules/index.js +139 -139
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
- package/dist/node/presentation/features/organisms/FeatureDetail/index.js +57 -57
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +7 -7
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +7 -7
- package/dist/node/presentation/features/organisms/index.js +275 -275
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +3 -3
- package/dist/presentation/features/atoms/FeatureIcon/index.js +3 -3
- package/dist/presentation/features/atoms/index.js +3 -3
- package/dist/presentation/features/index.js +915 -915
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +101 -101
- package/dist/presentation/features/molecules/FeatureCard/index.js +101 -101
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +15 -15
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +15 -15
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +23 -23
- package/dist/presentation/features/molecules/FeatureFilters/index.js +23 -23
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +67 -67
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +67 -67
- package/dist/presentation/features/molecules/index.js +139 -139
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +57 -57
- package/dist/presentation/features/organisms/FeatureDetail/index.js +57 -57
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +183 -183
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +183 -183
- package/dist/presentation/features/organisms/FeatureEventsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureFormsList.js +7 -7
- package/dist/presentation/features/organisms/FeatureOperationsList.js +7 -7
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +7 -7
- package/dist/presentation/features/organisms/index.js +275 -275
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +126 -126
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +126 -126
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +112 -112
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +112 -112
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +126 -126
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +126 -126
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +110 -110
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +110 -110
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +16 -16
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +66 -66
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +66 -66
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +112 -112
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +112 -112
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +16 -16
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +16 -16
- package/package.json +71 -22
- package/src/bundles/LibraryBundle.ts +152 -0
- package/src/bundles/index.ts +1 -0
- package/src/components/shell/WorkspaceShellRenderer.tsx +90 -0
- package/src/components/shell/index.ts +1 -0
|
@@ -2,42 +2,42 @@
|
|
|
2
2
|
import { CodeBlock } from "@contractspec/lib.design-system";
|
|
3
3
|
import Link from "@contractspec/lib.ui-link";
|
|
4
4
|
import { ChevronRight } from "lucide-react";
|
|
5
|
-
import {
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
function ArchitectureAppConfigPage() {
|
|
7
|
-
return /* @__PURE__ */
|
|
7
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
8
8
|
className: "space-y-8",
|
|
9
9
|
children: [
|
|
10
|
-
/* @__PURE__ */
|
|
10
|
+
/* @__PURE__ */ jsxs("div", {
|
|
11
11
|
className: "space-y-4",
|
|
12
12
|
children: [
|
|
13
|
-
/* @__PURE__ */
|
|
13
|
+
/* @__PURE__ */ jsx("h1", {
|
|
14
14
|
className: "text-4xl font-bold",
|
|
15
15
|
children: "App Configuration"
|
|
16
|
-
}
|
|
17
|
-
/* @__PURE__ */
|
|
16
|
+
}),
|
|
17
|
+
/* @__PURE__ */ jsx("p", {
|
|
18
18
|
className: "text-muted-foreground",
|
|
19
19
|
children: "ContractSpec uses a three-tier configuration model that separates global app definitions from tenant-specific settings and runtime resolution."
|
|
20
|
-
}
|
|
20
|
+
})
|
|
21
21
|
]
|
|
22
|
-
}
|
|
23
|
-
/* @__PURE__ */
|
|
22
|
+
}),
|
|
23
|
+
/* @__PURE__ */ jsxs("div", {
|
|
24
24
|
className: "space-y-4",
|
|
25
25
|
children: [
|
|
26
|
-
/* @__PURE__ */
|
|
26
|
+
/* @__PURE__ */ jsx("h2", {
|
|
27
27
|
className: "text-2xl font-bold",
|
|
28
28
|
children: "AppBlueprintSpec"
|
|
29
|
-
}
|
|
30
|
-
/* @__PURE__ */
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ jsxs("p", {
|
|
31
31
|
className: "text-muted-foreground",
|
|
32
32
|
children: [
|
|
33
33
|
"The ",
|
|
34
|
-
/* @__PURE__ */
|
|
34
|
+
/* @__PURE__ */ jsx("strong", {
|
|
35
35
|
children: "AppBlueprintSpec"
|
|
36
|
-
}
|
|
36
|
+
}),
|
|
37
37
|
" is the global, versioned definition of your application. It contains no tenant-specific information and is stored in version control."
|
|
38
38
|
]
|
|
39
|
-
}
|
|
40
|
-
/* @__PURE__ */
|
|
39
|
+
}),
|
|
40
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
41
41
|
language: "typescript",
|
|
42
42
|
code: `type AppBlueprintSpec = {
|
|
43
43
|
id: string;
|
|
@@ -77,27 +77,27 @@ function ArchitectureAppConfigPage() {
|
|
|
77
77
|
// Schema evolution
|
|
78
78
|
migrations: MigrationSpec[];
|
|
79
79
|
};`
|
|
80
|
-
}
|
|
80
|
+
})
|
|
81
81
|
]
|
|
82
|
-
}
|
|
83
|
-
/* @__PURE__ */
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ jsxs("div", {
|
|
84
84
|
className: "space-y-4",
|
|
85
85
|
children: [
|
|
86
|
-
/* @__PURE__ */
|
|
86
|
+
/* @__PURE__ */ jsx("h2", {
|
|
87
87
|
className: "text-2xl font-bold",
|
|
88
88
|
children: "TenantAppConfig"
|
|
89
|
-
}
|
|
90
|
-
/* @__PURE__ */
|
|
89
|
+
}),
|
|
90
|
+
/* @__PURE__ */ jsxs("p", {
|
|
91
91
|
className: "text-muted-foreground",
|
|
92
92
|
children: [
|
|
93
93
|
"The ",
|
|
94
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ jsx("strong", {
|
|
95
95
|
children: "TenantAppConfig"
|
|
96
|
-
}
|
|
96
|
+
}),
|
|
97
97
|
" is the per-tenant, per-environment configuration that customizes how a specific tenant uses the app."
|
|
98
98
|
]
|
|
99
|
-
}
|
|
100
|
-
/* @__PURE__ */
|
|
99
|
+
}),
|
|
100
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
101
101
|
language: "typescript",
|
|
102
102
|
code: `type TenantAppConfig = {
|
|
103
103
|
tenantId: string;
|
|
@@ -131,21 +131,21 @@ function ArchitectureAppConfigPage() {
|
|
|
131
131
|
createdAt: string;
|
|
132
132
|
updatedAt: string;
|
|
133
133
|
};`
|
|
134
|
-
}
|
|
134
|
+
})
|
|
135
135
|
]
|
|
136
|
-
}
|
|
137
|
-
/* @__PURE__ */
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ jsxs("div", {
|
|
138
138
|
className: "space-y-4",
|
|
139
139
|
children: [
|
|
140
|
-
/* @__PURE__ */
|
|
140
|
+
/* @__PURE__ */ jsx("h2", {
|
|
141
141
|
className: "text-2xl font-bold",
|
|
142
142
|
children: "AppIntegrationBinding"
|
|
143
|
-
}
|
|
144
|
-
/* @__PURE__ */
|
|
143
|
+
}),
|
|
144
|
+
/* @__PURE__ */ jsx("p", {
|
|
145
145
|
className: "text-muted-foreground",
|
|
146
146
|
children: "Defines how a tenant connects specific integration instances to satisfy capabilities and workflows."
|
|
147
|
-
}
|
|
148
|
-
/* @__PURE__ */
|
|
147
|
+
}),
|
|
148
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
149
149
|
language: "typescript",
|
|
150
150
|
code: `type AppIntegrationBinding = {
|
|
151
151
|
slotId: string; // References AppIntegrationSlot.slotId
|
|
@@ -168,21 +168,21 @@ function ArchitectureAppConfigPage() {
|
|
|
168
168
|
},
|
|
169
169
|
priority: 1
|
|
170
170
|
}`
|
|
171
|
-
}
|
|
171
|
+
})
|
|
172
172
|
]
|
|
173
|
-
}
|
|
174
|
-
/* @__PURE__ */
|
|
173
|
+
}),
|
|
174
|
+
/* @__PURE__ */ jsxs("div", {
|
|
175
175
|
className: "space-y-4",
|
|
176
176
|
children: [
|
|
177
|
-
/* @__PURE__ */
|
|
177
|
+
/* @__PURE__ */ jsx("h2", {
|
|
178
178
|
className: "text-2xl font-bold",
|
|
179
179
|
children: "AppKnowledgeBinding"
|
|
180
|
-
}
|
|
181
|
-
/* @__PURE__ */
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ jsx("p", {
|
|
182
182
|
className: "text-muted-foreground",
|
|
183
183
|
children: "Defines which knowledge spaces a tenant's app can access and how."
|
|
184
|
-
}
|
|
185
|
-
/* @__PURE__ */
|
|
184
|
+
}),
|
|
185
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
186
186
|
language: "typescript",
|
|
187
187
|
code: `type AppKnowledgeBinding = {
|
|
188
188
|
spaceId: string;
|
|
@@ -215,27 +215,27 @@ function ArchitectureAppConfigPage() {
|
|
|
215
215
|
allowedCategories: ["canonical", "operational"],
|
|
216
216
|
sources: ["src_notion_product_docs", "src_database_schema"]
|
|
217
217
|
}`
|
|
218
|
-
}
|
|
218
|
+
})
|
|
219
219
|
]
|
|
220
|
-
}
|
|
221
|
-
/* @__PURE__ */
|
|
220
|
+
}),
|
|
221
|
+
/* @__PURE__ */ jsxs("div", {
|
|
222
222
|
className: "space-y-4",
|
|
223
223
|
children: [
|
|
224
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ jsx("h2", {
|
|
225
225
|
className: "text-2xl font-bold",
|
|
226
226
|
children: "ResolvedAppConfig"
|
|
227
|
-
}
|
|
228
|
-
/* @__PURE__ */
|
|
227
|
+
}),
|
|
228
|
+
/* @__PURE__ */ jsxs("p", {
|
|
229
229
|
className: "text-muted-foreground",
|
|
230
230
|
children: [
|
|
231
231
|
"The ",
|
|
232
|
-
/* @__PURE__ */
|
|
232
|
+
/* @__PURE__ */ jsx("strong", {
|
|
233
233
|
children: "ResolvedAppConfig"
|
|
234
|
-
}
|
|
234
|
+
}),
|
|
235
235
|
" is the runtime result of merging AppBlueprintSpec with TenantAppConfig. It's computed on-demand and never persisted."
|
|
236
236
|
]
|
|
237
|
-
}
|
|
238
|
-
/* @__PURE__ */
|
|
237
|
+
}),
|
|
238
|
+
/* @__PURE__ */ jsx(CodeBlock, {
|
|
239
239
|
language: "typescript",
|
|
240
240
|
code: `type ResolvedAppConfig = {
|
|
241
241
|
appId: string;
|
|
@@ -265,192 +265,192 @@ function ArchitectureAppConfigPage() {
|
|
|
265
265
|
branding: ResolvedBranding; // { appName, assets, colors, domain }
|
|
266
266
|
notes?: string;
|
|
267
267
|
};`
|
|
268
|
-
}
|
|
268
|
+
})
|
|
269
269
|
]
|
|
270
|
-
}
|
|
271
|
-
/* @__PURE__ */
|
|
270
|
+
}),
|
|
271
|
+
/* @__PURE__ */ jsxs("div", {
|
|
272
272
|
className: "space-y-4",
|
|
273
273
|
children: [
|
|
274
|
-
/* @__PURE__ */
|
|
274
|
+
/* @__PURE__ */ jsx("h2", {
|
|
275
275
|
className: "text-2xl font-bold",
|
|
276
276
|
children: "Configuration flow"
|
|
277
|
-
}
|
|
278
|
-
/* @__PURE__ */
|
|
277
|
+
}),
|
|
278
|
+
/* @__PURE__ */ jsx("p", {
|
|
279
279
|
className: "text-muted-foreground",
|
|
280
280
|
children: "Here's how configuration flows from definition to runtime:"
|
|
281
|
-
}
|
|
282
|
-
/* @__PURE__ */
|
|
281
|
+
}),
|
|
282
|
+
/* @__PURE__ */ jsxs("ol", {
|
|
283
283
|
className: "text-muted-foreground list-inside list-decimal space-y-3",
|
|
284
284
|
children: [
|
|
285
|
-
/* @__PURE__ */
|
|
285
|
+
/* @__PURE__ */ jsxs("li", {
|
|
286
286
|
children: [
|
|
287
|
-
/* @__PURE__ */
|
|
287
|
+
/* @__PURE__ */ jsx("strong", {
|
|
288
288
|
children: "Development"
|
|
289
|
-
}
|
|
289
|
+
}),
|
|
290
290
|
" - Define AppBlueprintSpec with required integrations and knowledge spaces"
|
|
291
291
|
]
|
|
292
|
-
}
|
|
293
|
-
/* @__PURE__ */
|
|
292
|
+
}),
|
|
293
|
+
/* @__PURE__ */ jsxs("li", {
|
|
294
294
|
children: [
|
|
295
|
-
/* @__PURE__ */
|
|
295
|
+
/* @__PURE__ */ jsx("strong", {
|
|
296
296
|
children: "Deployment"
|
|
297
|
-
}
|
|
297
|
+
}),
|
|
298
298
|
" - Deploy blueprint to environment (sandbox, staging, production)"
|
|
299
299
|
]
|
|
300
|
-
}
|
|
301
|
-
/* @__PURE__ */
|
|
300
|
+
}),
|
|
301
|
+
/* @__PURE__ */ jsxs("li", {
|
|
302
302
|
children: [
|
|
303
|
-
/* @__PURE__ */
|
|
303
|
+
/* @__PURE__ */ jsx("strong", {
|
|
304
304
|
children: "Tenant Setup"
|
|
305
|
-
}
|
|
305
|
+
}),
|
|
306
306
|
" - Create TenantAppConfig with specific integration connections and knowledge sources"
|
|
307
307
|
]
|
|
308
|
-
}
|
|
309
|
-
/* @__PURE__ */
|
|
308
|
+
}),
|
|
309
|
+
/* @__PURE__ */ jsxs("li", {
|
|
310
310
|
children: [
|
|
311
|
-
/* @__PURE__ */
|
|
311
|
+
/* @__PURE__ */ jsx("strong", {
|
|
312
312
|
children: "Runtime"
|
|
313
|
-
}
|
|
313
|
+
}),
|
|
314
314
|
" - Resolve configuration on-demand when tenant accesses the app"
|
|
315
315
|
]
|
|
316
|
-
}
|
|
317
|
-
/* @__PURE__ */
|
|
316
|
+
}),
|
|
317
|
+
/* @__PURE__ */ jsxs("li", {
|
|
318
318
|
children: [
|
|
319
|
-
/* @__PURE__ */
|
|
319
|
+
/* @__PURE__ */ jsx("strong", {
|
|
320
320
|
children: "Execution"
|
|
321
|
-
}
|
|
321
|
+
}),
|
|
322
322
|
" - Use ResolvedAppConfig to execute capabilities, workflows, and enforce policies"
|
|
323
323
|
]
|
|
324
|
-
}
|
|
324
|
+
})
|
|
325
325
|
]
|
|
326
|
-
}
|
|
326
|
+
})
|
|
327
327
|
]
|
|
328
|
-
}
|
|
329
|
-
/* @__PURE__ */
|
|
328
|
+
}),
|
|
329
|
+
/* @__PURE__ */ jsxs("div", {
|
|
330
330
|
className: "space-y-4",
|
|
331
331
|
children: [
|
|
332
|
-
/* @__PURE__ */
|
|
332
|
+
/* @__PURE__ */ jsx("h2", {
|
|
333
333
|
className: "text-2xl font-bold",
|
|
334
334
|
children: "Best practices"
|
|
335
|
-
}
|
|
336
|
-
/* @__PURE__ */
|
|
335
|
+
}),
|
|
336
|
+
/* @__PURE__ */ jsxs("ul", {
|
|
337
337
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
338
338
|
children: [
|
|
339
|
-
/* @__PURE__ */
|
|
339
|
+
/* @__PURE__ */ jsx("li", {
|
|
340
340
|
children: "Keep AppBlueprintSpec environment-agnostic - no secrets or tenant-specific data"
|
|
341
|
-
}
|
|
342
|
-
/* @__PURE__ */
|
|
341
|
+
}),
|
|
342
|
+
/* @__PURE__ */ jsx("li", {
|
|
343
343
|
children: "Use TenantAppConfig for all tenant-specific settings and connections"
|
|
344
|
-
}
|
|
345
|
-
/* @__PURE__ */
|
|
344
|
+
}),
|
|
345
|
+
/* @__PURE__ */ jsx("li", {
|
|
346
346
|
children: "Cache ResolvedAppConfig per request to avoid repeated resolution"
|
|
347
|
-
}
|
|
348
|
-
/* @__PURE__ */
|
|
347
|
+
}),
|
|
348
|
+
/* @__PURE__ */ jsx("li", {
|
|
349
349
|
children: "Version blueprints carefully - migrations affect all tenants"
|
|
350
|
-
}
|
|
351
|
-
/* @__PURE__ */
|
|
350
|
+
}),
|
|
351
|
+
/* @__PURE__ */ jsx("li", {
|
|
352
352
|
children: "Test blueprint changes in sandbox before promoting to production"
|
|
353
|
-
}
|
|
353
|
+
})
|
|
354
354
|
]
|
|
355
|
-
}
|
|
355
|
+
})
|
|
356
356
|
]
|
|
357
|
-
}
|
|
358
|
-
/* @__PURE__ */
|
|
357
|
+
}),
|
|
358
|
+
/* @__PURE__ */ jsxs("div", {
|
|
359
359
|
className: "flex items-center gap-4 pt-4",
|
|
360
360
|
children: [
|
|
361
|
-
/* @__PURE__ */
|
|
361
|
+
/* @__PURE__ */ jsx(Link, {
|
|
362
362
|
href: "/docs/architecture",
|
|
363
363
|
className: "btn-ghost",
|
|
364
364
|
children: "Back to Architecture"
|
|
365
|
-
}
|
|
366
|
-
/* @__PURE__ */
|
|
365
|
+
}),
|
|
366
|
+
/* @__PURE__ */ jsxs(Link, {
|
|
367
367
|
href: "/docs/architecture/integration-binding",
|
|
368
368
|
className: "btn-primary",
|
|
369
369
|
children: [
|
|
370
370
|
"Integration Binding ",
|
|
371
|
-
/* @__PURE__ */
|
|
371
|
+
/* @__PURE__ */ jsx(ChevronRight, {
|
|
372
372
|
size: 16
|
|
373
|
-
}
|
|
373
|
+
})
|
|
374
374
|
]
|
|
375
|
-
}
|
|
375
|
+
})
|
|
376
376
|
]
|
|
377
|
-
}
|
|
377
|
+
})
|
|
378
378
|
]
|
|
379
|
-
}
|
|
379
|
+
});
|
|
380
380
|
}
|
|
381
381
|
|
|
382
382
|
// src/components/docs/architecture/ArchitectureControlPlanePage.tsx
|
|
383
383
|
import { CodeBlock as CodeBlock2 } from "@contractspec/lib.design-system";
|
|
384
384
|
import Link2 from "@contractspec/lib.ui-link";
|
|
385
385
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
386
|
-
import {
|
|
386
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
387
387
|
function ArchitectureControlPlanePage() {
|
|
388
|
-
return /* @__PURE__ */
|
|
388
|
+
return /* @__PURE__ */ jsxs2("div", {
|
|
389
389
|
className: "space-y-8",
|
|
390
390
|
children: [
|
|
391
|
-
/* @__PURE__ */
|
|
391
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
392
392
|
className: "space-y-4",
|
|
393
393
|
children: [
|
|
394
|
-
/* @__PURE__ */
|
|
394
|
+
/* @__PURE__ */ jsx2("h1", {
|
|
395
395
|
className: "text-4xl font-bold",
|
|
396
396
|
children: "Control Plane Runtime"
|
|
397
|
-
}
|
|
398
|
-
/* @__PURE__ */
|
|
397
|
+
}),
|
|
398
|
+
/* @__PURE__ */ jsx2("p", {
|
|
399
399
|
className: "text-muted-foreground",
|
|
400
400
|
children: "The control plane is the governance layer for agentic execution. It turns incoming intent into deterministic plans, enforces risk policy before side effects, and records replayable traces for audits."
|
|
401
|
-
}
|
|
401
|
+
})
|
|
402
402
|
]
|
|
403
|
-
}
|
|
404
|
-
/* @__PURE__ */
|
|
403
|
+
}),
|
|
404
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
405
405
|
className: "space-y-4",
|
|
406
406
|
children: [
|
|
407
|
-
/* @__PURE__ */
|
|
407
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
408
408
|
className: "text-2xl font-bold",
|
|
409
409
|
children: "Canonical execution loop"
|
|
410
|
-
}
|
|
411
|
-
/* @__PURE__ */
|
|
410
|
+
}),
|
|
411
|
+
/* @__PURE__ */ jsxs2("ol", {
|
|
412
412
|
className: "text-muted-foreground list-inside list-decimal space-y-2",
|
|
413
413
|
children: [
|
|
414
|
-
/* @__PURE__ */
|
|
414
|
+
/* @__PURE__ */ jsx2("li", {
|
|
415
415
|
children: "Accept intent and create execution identity + trace context."
|
|
416
|
-
}
|
|
417
|
-
/* @__PURE__ */
|
|
416
|
+
}),
|
|
417
|
+
/* @__PURE__ */ jsx2("li", {
|
|
418
418
|
children: "Compile intent into a typed, deterministic plan DAG."
|
|
419
|
-
}
|
|
420
|
-
/* @__PURE__ */
|
|
419
|
+
}),
|
|
420
|
+
/* @__PURE__ */ jsx2("li", {
|
|
421
421
|
children: "Verify plan against policy and risk rules."
|
|
422
|
-
}
|
|
423
|
-
/* @__PURE__ */
|
|
422
|
+
}),
|
|
423
|
+
/* @__PURE__ */ jsx2("li", {
|
|
424
424
|
children: "Route into autonomous or assist mode based on verdict."
|
|
425
|
-
}
|
|
426
|
-
/* @__PURE__ */
|
|
425
|
+
}),
|
|
426
|
+
/* @__PURE__ */ jsx2("li", {
|
|
427
427
|
children: "Execute steps with idempotent keys and explicit stage events."
|
|
428
|
-
}
|
|
429
|
-
/* @__PURE__ */
|
|
428
|
+
}),
|
|
429
|
+
/* @__PURE__ */ jsx2("li", {
|
|
430
430
|
children: "Persist outcomes for replay, audits, and operator visibility."
|
|
431
|
-
}
|
|
431
|
+
})
|
|
432
432
|
]
|
|
433
|
-
}
|
|
433
|
+
})
|
|
434
434
|
]
|
|
435
|
-
}
|
|
436
|
-
/* @__PURE__ */
|
|
435
|
+
}),
|
|
436
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
437
437
|
className: "space-y-4",
|
|
438
438
|
children: [
|
|
439
|
-
/* @__PURE__ */
|
|
439
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
440
440
|
className: "text-2xl font-bold",
|
|
441
441
|
children: "Contract surfaces (v1 baseline)"
|
|
442
|
-
}
|
|
443
|
-
/* @__PURE__ */
|
|
442
|
+
}),
|
|
443
|
+
/* @__PURE__ */ jsxs2("p", {
|
|
444
444
|
className: "text-muted-foreground",
|
|
445
445
|
children: [
|
|
446
446
|
"The runtime is contract-first. Commands, queries, events, and capabilities are explicit and versioned under",
|
|
447
|
-
/* @__PURE__ */
|
|
447
|
+
/* @__PURE__ */ jsx2("code", {
|
|
448
448
|
children: " @contractspec/lib.contracts-spec"
|
|
449
|
-
}
|
|
449
|
+
}),
|
|
450
450
|
"."
|
|
451
451
|
]
|
|
452
|
-
}
|
|
453
|
-
/* @__PURE__ */
|
|
452
|
+
}),
|
|
453
|
+
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
454
454
|
language: "text",
|
|
455
455
|
code: `Commands
|
|
456
456
|
- controlPlane.intent.submit
|
|
@@ -489,46 +489,46 @@ Capabilities
|
|
|
489
489
|
- control-plane.audit
|
|
490
490
|
- control-plane.skill-registry
|
|
491
491
|
- control-plane.channel-runtime`
|
|
492
|
-
}
|
|
492
|
+
})
|
|
493
493
|
]
|
|
494
|
-
}
|
|
495
|
-
/* @__PURE__ */
|
|
494
|
+
}),
|
|
495
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
496
496
|
className: "space-y-4",
|
|
497
497
|
children: [
|
|
498
|
-
/* @__PURE__ */
|
|
498
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
499
499
|
className: "text-2xl font-bold",
|
|
500
500
|
children: "Policy and safety posture"
|
|
501
|
-
}
|
|
502
|
-
/* @__PURE__ */
|
|
501
|
+
}),
|
|
502
|
+
/* @__PURE__ */ jsxs2("ul", {
|
|
503
503
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
504
504
|
children: [
|
|
505
|
-
/* @__PURE__ */
|
|
505
|
+
/* @__PURE__ */ jsx2("li", {
|
|
506
506
|
children: "No side-effect action executes unless it comes from a compiled plan."
|
|
507
|
-
}
|
|
508
|
-
/* @__PURE__ */
|
|
507
|
+
}),
|
|
508
|
+
/* @__PURE__ */ jsx2("li", {
|
|
509
509
|
children: "High-risk actions are blocked from autonomous mode in v1."
|
|
510
|
-
}
|
|
511
|
-
/* @__PURE__ */
|
|
510
|
+
}),
|
|
511
|
+
/* @__PURE__ */ jsx2("li", {
|
|
512
512
|
children: "Approval commands provide explicit human-in-the-loop transitions."
|
|
513
|
-
}
|
|
514
|
-
/* @__PURE__ */
|
|
513
|
+
}),
|
|
514
|
+
/* @__PURE__ */ jsx2("li", {
|
|
515
515
|
children: "Skill installation is modeled as governance-controlled operations."
|
|
516
|
-
}
|
|
517
|
-
/* @__PURE__ */
|
|
516
|
+
}),
|
|
517
|
+
/* @__PURE__ */ jsx2("li", {
|
|
518
518
|
children: "Trace queries expose policy rationale and step outcomes for replay."
|
|
519
|
-
}
|
|
519
|
+
})
|
|
520
520
|
]
|
|
521
|
-
}
|
|
521
|
+
})
|
|
522
522
|
]
|
|
523
|
-
}
|
|
524
|
-
/* @__PURE__ */
|
|
523
|
+
}),
|
|
524
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
525
525
|
className: "space-y-4",
|
|
526
526
|
children: [
|
|
527
|
-
/* @__PURE__ */
|
|
527
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
528
528
|
className: "text-2xl font-bold",
|
|
529
529
|
children: "Implementation map"
|
|
530
|
-
}
|
|
531
|
-
/* @__PURE__ */
|
|
530
|
+
}),
|
|
531
|
+
/* @__PURE__ */ jsx2(CodeBlock2, {
|
|
532
532
|
language: "text",
|
|
533
533
|
code: `packages/libs/contracts-spec/src/control-plane/
|
|
534
534
|
commands/
|
|
@@ -540,129 +540,129 @@ Capabilities
|
|
|
540
540
|
|
|
541
541
|
packages/apps/web-landing/src/app/docs/architecture/control-plane/page.tsx
|
|
542
542
|
implementation_plan_controle_plane.md`
|
|
543
|
-
}
|
|
543
|
+
})
|
|
544
544
|
]
|
|
545
|
-
}
|
|
546
|
-
/* @__PURE__ */
|
|
545
|
+
}),
|
|
546
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
547
547
|
className: "space-y-4",
|
|
548
548
|
children: [
|
|
549
|
-
/* @__PURE__ */
|
|
549
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
550
550
|
className: "text-2xl font-bold",
|
|
551
551
|
children: "What comes next"
|
|
552
|
-
}
|
|
553
|
-
/* @__PURE__ */
|
|
552
|
+
}),
|
|
553
|
+
/* @__PURE__ */ jsx2("p", {
|
|
554
554
|
className: "text-muted-foreground",
|
|
555
555
|
children: "WS1 delivers the contract fabric. Next increments add planner/executor split, policy escalation, capability-bound authorization, signed skill compatibility checks, and full replay tooling."
|
|
556
|
-
}
|
|
556
|
+
})
|
|
557
557
|
]
|
|
558
|
-
}
|
|
559
|
-
/* @__PURE__ */
|
|
558
|
+
}),
|
|
559
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
560
560
|
className: "flex items-center gap-4 pt-4",
|
|
561
561
|
children: [
|
|
562
|
-
/* @__PURE__ */
|
|
562
|
+
/* @__PURE__ */ jsx2(Link2, {
|
|
563
563
|
href: "/docs/architecture/integration-binding",
|
|
564
564
|
className: "btn-ghost",
|
|
565
565
|
children: "Previous: Integration Binding"
|
|
566
|
-
}
|
|
567
|
-
/* @__PURE__ */
|
|
566
|
+
}),
|
|
567
|
+
/* @__PURE__ */ jsxs2(Link2, {
|
|
568
568
|
href: "/docs/safety/auditing",
|
|
569
569
|
className: "btn-primary",
|
|
570
570
|
children: [
|
|
571
571
|
"Audit Logs ",
|
|
572
|
-
/* @__PURE__ */
|
|
572
|
+
/* @__PURE__ */ jsx2(ChevronRight2, {
|
|
573
573
|
size: 16
|
|
574
|
-
}
|
|
574
|
+
})
|
|
575
575
|
]
|
|
576
|
-
}
|
|
576
|
+
})
|
|
577
577
|
]
|
|
578
|
-
}
|
|
578
|
+
})
|
|
579
579
|
]
|
|
580
|
-
}
|
|
580
|
+
});
|
|
581
581
|
}
|
|
582
582
|
|
|
583
583
|
// src/components/docs/architecture/ArchitectureIntegrationBindingPage.tsx
|
|
584
584
|
import { CodeBlock as CodeBlock3 } from "@contractspec/lib.design-system";
|
|
585
585
|
import Link3 from "@contractspec/lib.ui-link";
|
|
586
586
|
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
587
|
-
import {
|
|
587
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
588
588
|
function ArchitectureIntegrationBindingPage() {
|
|
589
|
-
return /* @__PURE__ */
|
|
589
|
+
return /* @__PURE__ */ jsxs3("div", {
|
|
590
590
|
className: "space-y-8",
|
|
591
591
|
children: [
|
|
592
|
-
/* @__PURE__ */
|
|
592
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
593
593
|
className: "space-y-4",
|
|
594
594
|
children: [
|
|
595
|
-
/* @__PURE__ */
|
|
595
|
+
/* @__PURE__ */ jsx3("h1", {
|
|
596
596
|
className: "text-4xl font-bold",
|
|
597
597
|
children: "Integration Binding"
|
|
598
|
-
}
|
|
599
|
-
/* @__PURE__ */
|
|
598
|
+
}),
|
|
599
|
+
/* @__PURE__ */ jsx3("p", {
|
|
600
600
|
className: "text-muted-foreground",
|
|
601
601
|
children: "Integration binding connects your app's capabilities to external service providers. Each tenant can configure their own integration connections while sharing the same app blueprint."
|
|
602
|
-
}
|
|
602
|
+
})
|
|
603
603
|
]
|
|
604
|
-
}
|
|
605
|
-
/* @__PURE__ */
|
|
604
|
+
}),
|
|
605
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
606
606
|
className: "space-y-4",
|
|
607
607
|
children: [
|
|
608
|
-
/* @__PURE__ */
|
|
608
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
609
609
|
className: "text-2xl font-bold",
|
|
610
610
|
children: "How it works"
|
|
611
|
-
}
|
|
612
|
-
/* @__PURE__ */
|
|
611
|
+
}),
|
|
612
|
+
/* @__PURE__ */ jsx3("p", {
|
|
613
613
|
className: "text-muted-foreground",
|
|
614
614
|
children: "Integration binding follows a three-layer model:"
|
|
615
|
-
}
|
|
616
|
-
/* @__PURE__ */
|
|
615
|
+
}),
|
|
616
|
+
/* @__PURE__ */ jsxs3("ol", {
|
|
617
617
|
className: "text-muted-foreground list-inside list-decimal space-y-3",
|
|
618
618
|
children: [
|
|
619
|
-
/* @__PURE__ */
|
|
619
|
+
/* @__PURE__ */ jsxs3("li", {
|
|
620
620
|
children: [
|
|
621
|
-
/* @__PURE__ */
|
|
621
|
+
/* @__PURE__ */ jsx3("strong", {
|
|
622
622
|
children: "IntegrationSpec"
|
|
623
|
-
}
|
|
623
|
+
}),
|
|
624
624
|
" (global) - Defines what an integration provides"
|
|
625
625
|
]
|
|
626
|
-
}
|
|
627
|
-
/* @__PURE__ */
|
|
626
|
+
}),
|
|
627
|
+
/* @__PURE__ */ jsxs3("li", {
|
|
628
628
|
children: [
|
|
629
|
-
/* @__PURE__ */
|
|
629
|
+
/* @__PURE__ */ jsx3("strong", {
|
|
630
630
|
children: "IntegrationConnection"
|
|
631
|
-
}
|
|
631
|
+
}),
|
|
632
632
|
" (per-tenant) - A tenant's configured connection"
|
|
633
633
|
]
|
|
634
|
-
}
|
|
635
|
-
/* @__PURE__ */
|
|
634
|
+
}),
|
|
635
|
+
/* @__PURE__ */ jsxs3("li", {
|
|
636
636
|
children: [
|
|
637
|
-
/* @__PURE__ */
|
|
637
|
+
/* @__PURE__ */ jsx3("strong", {
|
|
638
638
|
children: "AppIntegrationBinding"
|
|
639
|
-
}
|
|
639
|
+
}),
|
|
640
640
|
" (per-app) - Maps named slots to concrete tenant connections"
|
|
641
641
|
]
|
|
642
|
-
}
|
|
642
|
+
})
|
|
643
643
|
]
|
|
644
|
-
}
|
|
644
|
+
})
|
|
645
645
|
]
|
|
646
|
-
}
|
|
647
|
-
/* @__PURE__ */
|
|
646
|
+
}),
|
|
647
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
648
648
|
className: "space-y-4",
|
|
649
649
|
children: [
|
|
650
|
-
/* @__PURE__ */
|
|
650
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
651
651
|
className: "text-2xl font-bold",
|
|
652
652
|
children: "Example: Payment processing"
|
|
653
|
-
}
|
|
654
|
-
/* @__PURE__ */
|
|
653
|
+
}),
|
|
654
|
+
/* @__PURE__ */ jsx3("p", {
|
|
655
655
|
className: "text-muted-foreground",
|
|
656
656
|
children: "Let's walk through a complete example of binding Stripe for payments."
|
|
657
|
-
}
|
|
658
|
-
/* @__PURE__ */
|
|
657
|
+
}),
|
|
658
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
659
659
|
className: "space-y-3",
|
|
660
660
|
children: [
|
|
661
|
-
/* @__PURE__ */
|
|
661
|
+
/* @__PURE__ */ jsx3("h3", {
|
|
662
662
|
className: "text-lg font-semibold",
|
|
663
663
|
children: "Step 1: Blueprint declares requirement"
|
|
664
|
-
}
|
|
665
|
-
/* @__PURE__ */
|
|
664
|
+
}),
|
|
665
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
666
666
|
language: "typescript",
|
|
667
667
|
code: `// AppBlueprintSpec
|
|
668
668
|
{
|
|
@@ -689,17 +689,17 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
689
689
|
colorTokens: { primary: "colors.brand.primary" }
|
|
690
690
|
}
|
|
691
691
|
}`
|
|
692
|
-
}
|
|
692
|
+
})
|
|
693
693
|
]
|
|
694
|
-
}
|
|
695
|
-
/* @__PURE__ */
|
|
694
|
+
}),
|
|
695
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
696
696
|
className: "space-y-3",
|
|
697
697
|
children: [
|
|
698
|
-
/* @__PURE__ */
|
|
698
|
+
/* @__PURE__ */ jsx3("h3", {
|
|
699
699
|
className: "text-lg font-semibold",
|
|
700
700
|
children: "Step 2: Tenant creates connection"
|
|
701
|
-
}
|
|
702
|
-
/* @__PURE__ */
|
|
701
|
+
}),
|
|
702
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
703
703
|
language: "typescript",
|
|
704
704
|
code: `// IntegrationConnection
|
|
705
705
|
{
|
|
@@ -722,17 +722,17 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
722
722
|
secretRef: "vault://integrations/acme/conn_stripe_acme_prod",
|
|
723
723
|
status: "active"
|
|
724
724
|
}`
|
|
725
|
-
}
|
|
725
|
+
})
|
|
726
726
|
]
|
|
727
|
-
}
|
|
728
|
-
/* @__PURE__ */
|
|
727
|
+
}),
|
|
728
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
729
729
|
className: "space-y-3",
|
|
730
730
|
children: [
|
|
731
|
-
/* @__PURE__ */
|
|
731
|
+
/* @__PURE__ */ jsx3("h3", {
|
|
732
732
|
className: "text-lg font-semibold",
|
|
733
733
|
children: "Step 3: TenantAppConfig binds connection"
|
|
734
|
-
}
|
|
735
|
-
/* @__PURE__ */
|
|
734
|
+
}),
|
|
735
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
736
736
|
language: "typescript",
|
|
737
737
|
code: `// TenantAppConfig
|
|
738
738
|
{
|
|
@@ -761,17 +761,17 @@ function ArchitectureIntegrationBindingPage() {
|
|
|
761
761
|
assets: [{ type: "logo", url: "https://assets.acme.com/logo.svg" }]
|
|
762
762
|
}
|
|
763
763
|
}`
|
|
764
|
-
}
|
|
764
|
+
})
|
|
765
765
|
]
|
|
766
|
-
}
|
|
767
|
-
/* @__PURE__ */
|
|
766
|
+
}),
|
|
767
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
768
768
|
className: "space-y-3",
|
|
769
769
|
children: [
|
|
770
|
-
/* @__PURE__ */
|
|
770
|
+
/* @__PURE__ */ jsx3("h3", {
|
|
771
771
|
className: "text-lg font-semibold",
|
|
772
772
|
children: "Step 4: Runtime resolves and executes"
|
|
773
|
-
}
|
|
774
|
-
/* @__PURE__ */
|
|
773
|
+
}),
|
|
774
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
775
775
|
language: "typescript",
|
|
776
776
|
code: `// ResolvedAppConfig (runtime)
|
|
777
777
|
{
|
|
@@ -791,23 +791,23 @@ const result = await executeCapability(
|
|
|
791
791
|
resolvedConfig
|
|
792
792
|
);
|
|
793
793
|
// → Uses Stripe connection automatically`
|
|
794
|
-
}
|
|
794
|
+
})
|
|
795
795
|
]
|
|
796
|
-
}
|
|
796
|
+
})
|
|
797
797
|
]
|
|
798
|
-
}
|
|
799
|
-
/* @__PURE__ */
|
|
798
|
+
}),
|
|
799
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
800
800
|
className: "space-y-4",
|
|
801
801
|
children: [
|
|
802
|
-
/* @__PURE__ */
|
|
802
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
803
803
|
className: "text-2xl font-bold",
|
|
804
804
|
children: "Multi-integration scenarios"
|
|
805
|
-
}
|
|
806
|
-
/* @__PURE__ */
|
|
805
|
+
}),
|
|
806
|
+
/* @__PURE__ */ jsx3("p", {
|
|
807
807
|
className: "text-muted-foreground",
|
|
808
808
|
children: "A single app can use multiple integrations across different categories:"
|
|
809
|
-
}
|
|
810
|
-
/* @__PURE__ */
|
|
809
|
+
}),
|
|
810
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
811
811
|
language: "typescript",
|
|
812
812
|
code: `integrations: [
|
|
813
813
|
{
|
|
@@ -836,21 +836,21 @@ const result = await executeCapability(
|
|
|
836
836
|
}
|
|
837
837
|
}
|
|
838
838
|
]`
|
|
839
|
-
}
|
|
839
|
+
})
|
|
840
840
|
]
|
|
841
|
-
}
|
|
842
|
-
/* @__PURE__ */
|
|
841
|
+
}),
|
|
842
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
843
843
|
className: "space-y-4",
|
|
844
844
|
children: [
|
|
845
|
-
/* @__PURE__ */
|
|
845
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
846
846
|
className: "text-2xl font-bold",
|
|
847
847
|
children: "Sandbox vs Production"
|
|
848
|
-
}
|
|
849
|
-
/* @__PURE__ */
|
|
848
|
+
}),
|
|
849
|
+
/* @__PURE__ */ jsx3("p", {
|
|
850
850
|
className: "text-muted-foreground",
|
|
851
851
|
children: "Tenants typically maintain separate connections for sandbox and production environments:"
|
|
852
|
-
}
|
|
853
|
-
/* @__PURE__ */
|
|
852
|
+
}),
|
|
853
|
+
/* @__PURE__ */ jsx3(CodeBlock3, {
|
|
854
854
|
language: "typescript",
|
|
855
855
|
code: `// Sandbox environment
|
|
856
856
|
{
|
|
@@ -873,180 +873,180 @@ const result = await executeCapability(
|
|
|
873
873
|
}
|
|
874
874
|
]
|
|
875
875
|
}`
|
|
876
|
-
}
|
|
876
|
+
})
|
|
877
877
|
]
|
|
878
|
-
}
|
|
879
|
-
/* @__PURE__ */
|
|
878
|
+
}),
|
|
879
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
880
880
|
className: "space-y-4",
|
|
881
881
|
children: [
|
|
882
|
-
/* @__PURE__ */
|
|
882
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
883
883
|
className: "text-2xl font-bold",
|
|
884
884
|
children: "Security & validation"
|
|
885
|
-
}
|
|
886
|
-
/* @__PURE__ */
|
|
885
|
+
}),
|
|
886
|
+
/* @__PURE__ */ jsxs3("ul", {
|
|
887
887
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
888
888
|
children: [
|
|
889
|
-
/* @__PURE__ */
|
|
889
|
+
/* @__PURE__ */ jsx3("li", {
|
|
890
890
|
children: "Integration connections are validated before binding - health checks ensure connectivity"
|
|
891
|
-
}
|
|
892
|
-
/* @__PURE__ */
|
|
891
|
+
}),
|
|
892
|
+
/* @__PURE__ */ jsx3("li", {
|
|
893
893
|
children: "Secrets are never stored in TenantAppConfig - only references to encrypted secrets"
|
|
894
|
-
}
|
|
895
|
-
/* @__PURE__ */
|
|
894
|
+
}),
|
|
895
|
+
/* @__PURE__ */ jsx3("li", {
|
|
896
896
|
children: "Policy Decision Point (PDP) enforces which workflows can use which integrations"
|
|
897
|
-
}
|
|
898
|
-
/* @__PURE__ */
|
|
897
|
+
}),
|
|
898
|
+
/* @__PURE__ */ jsx3("li", {
|
|
899
899
|
children: "All integration calls are audited with full request/response logging"
|
|
900
|
-
}
|
|
901
|
-
/* @__PURE__ */
|
|
900
|
+
}),
|
|
901
|
+
/* @__PURE__ */ jsx3("li", {
|
|
902
902
|
children: "Rate limiting and quotas are enforced per connection"
|
|
903
|
-
}
|
|
903
|
+
})
|
|
904
904
|
]
|
|
905
|
-
}
|
|
905
|
+
})
|
|
906
906
|
]
|
|
907
|
-
}
|
|
908
|
-
/* @__PURE__ */
|
|
907
|
+
}),
|
|
908
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
909
909
|
className: "space-y-4",
|
|
910
910
|
children: [
|
|
911
|
-
/* @__PURE__ */
|
|
911
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
912
912
|
className: "text-2xl font-bold",
|
|
913
913
|
children: "Best practices"
|
|
914
|
-
}
|
|
915
|
-
/* @__PURE__ */
|
|
914
|
+
}),
|
|
915
|
+
/* @__PURE__ */ jsxs3("ul", {
|
|
916
916
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
917
917
|
children: [
|
|
918
|
-
/* @__PURE__ */
|
|
918
|
+
/* @__PURE__ */ jsxs3("li", {
|
|
919
919
|
children: [
|
|
920
920
|
"Use wildcard patterns sparingly in ",
|
|
921
|
-
/* @__PURE__ */
|
|
921
|
+
/* @__PURE__ */ jsx3("code", {
|
|
922
922
|
children: "allowedWorkflows"
|
|
923
|
-
}
|
|
923
|
+
}),
|
|
924
924
|
" - be explicit about access"
|
|
925
925
|
]
|
|
926
|
-
}
|
|
927
|
-
/* @__PURE__ */
|
|
926
|
+
}),
|
|
927
|
+
/* @__PURE__ */ jsx3("li", {
|
|
928
928
|
children: "Always maintain separate sandbox and production connections"
|
|
929
|
-
}
|
|
930
|
-
/* @__PURE__ */
|
|
929
|
+
}),
|
|
930
|
+
/* @__PURE__ */ jsx3("li", {
|
|
931
931
|
children: "Monitor integration health checks and set up alerts for failures"
|
|
932
|
-
}
|
|
933
|
-
/* @__PURE__ */
|
|
932
|
+
}),
|
|
933
|
+
/* @__PURE__ */ jsx3("li", {
|
|
934
934
|
children: "Document the purpose of each integration binding for your team"
|
|
935
|
-
}
|
|
936
|
-
/* @__PURE__ */
|
|
935
|
+
}),
|
|
936
|
+
/* @__PURE__ */ jsx3("li", {
|
|
937
937
|
children: "Test integration changes in sandbox before promoting to production"
|
|
938
|
-
}
|
|
938
|
+
})
|
|
939
939
|
]
|
|
940
|
-
}
|
|
940
|
+
})
|
|
941
941
|
]
|
|
942
|
-
}
|
|
943
|
-
/* @__PURE__ */
|
|
942
|
+
}),
|
|
943
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
944
944
|
className: "flex items-center gap-4 pt-4",
|
|
945
945
|
children: [
|
|
946
|
-
/* @__PURE__ */
|
|
946
|
+
/* @__PURE__ */ jsx3(Link3, {
|
|
947
947
|
href: "/docs/architecture/app-config",
|
|
948
948
|
className: "btn-ghost",
|
|
949
949
|
children: "Previous: App Configuration"
|
|
950
|
-
}
|
|
951
|
-
/* @__PURE__ */
|
|
950
|
+
}),
|
|
951
|
+
/* @__PURE__ */ jsxs3(Link3, {
|
|
952
952
|
href: "/docs/architecture/knowledge-binding",
|
|
953
953
|
className: "btn-primary",
|
|
954
954
|
children: [
|
|
955
955
|
"Knowledge Binding ",
|
|
956
|
-
/* @__PURE__ */
|
|
956
|
+
/* @__PURE__ */ jsx3(ChevronRight3, {
|
|
957
957
|
size: 16
|
|
958
|
-
}
|
|
958
|
+
})
|
|
959
959
|
]
|
|
960
|
-
}
|
|
960
|
+
})
|
|
961
961
|
]
|
|
962
|
-
}
|
|
962
|
+
})
|
|
963
963
|
]
|
|
964
|
-
}
|
|
964
|
+
});
|
|
965
965
|
}
|
|
966
966
|
|
|
967
967
|
// src/components/docs/architecture/ArchitectureKnowledgeBindingPage.tsx
|
|
968
968
|
import { CodeBlock as CodeBlock4 } from "@contractspec/lib.design-system";
|
|
969
969
|
import Link4 from "@contractspec/lib.ui-link";
|
|
970
970
|
import { ChevronRight as ChevronRight4 } from "lucide-react";
|
|
971
|
-
import {
|
|
971
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
972
972
|
function ArchitectureKnowledgeBindingPage() {
|
|
973
|
-
return /* @__PURE__ */
|
|
973
|
+
return /* @__PURE__ */ jsxs4("div", {
|
|
974
974
|
className: "space-y-8",
|
|
975
975
|
children: [
|
|
976
|
-
/* @__PURE__ */
|
|
976
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
977
977
|
className: "space-y-4",
|
|
978
978
|
children: [
|
|
979
|
-
/* @__PURE__ */
|
|
979
|
+
/* @__PURE__ */ jsx4("h1", {
|
|
980
980
|
className: "text-4xl font-bold",
|
|
981
981
|
children: "Knowledge Binding"
|
|
982
|
-
}
|
|
983
|
-
/* @__PURE__ */
|
|
982
|
+
}),
|
|
983
|
+
/* @__PURE__ */ jsx4("p", {
|
|
984
984
|
className: "text-muted-foreground",
|
|
985
985
|
children: "Knowledge binding connects your app's workflows and agents to structured knowledge spaces. This enables semantic search, RAG (Retrieval-Augmented Generation), and context-aware decision-making."
|
|
986
|
-
}
|
|
986
|
+
})
|
|
987
987
|
]
|
|
988
|
-
}
|
|
989
|
-
/* @__PURE__ */
|
|
988
|
+
}),
|
|
989
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
990
990
|
className: "space-y-4",
|
|
991
991
|
children: [
|
|
992
|
-
/* @__PURE__ */
|
|
992
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
993
993
|
className: "text-2xl font-bold",
|
|
994
994
|
children: "How it works"
|
|
995
|
-
}
|
|
996
|
-
/* @__PURE__ */
|
|
995
|
+
}),
|
|
996
|
+
/* @__PURE__ */ jsx4("p", {
|
|
997
997
|
className: "text-muted-foreground",
|
|
998
998
|
children: "Knowledge binding follows a three-layer model:"
|
|
999
|
-
}
|
|
1000
|
-
/* @__PURE__ */
|
|
999
|
+
}),
|
|
1000
|
+
/* @__PURE__ */ jsxs4("ol", {
|
|
1001
1001
|
className: "text-muted-foreground list-inside list-decimal space-y-3",
|
|
1002
1002
|
children: [
|
|
1003
|
-
/* @__PURE__ */
|
|
1003
|
+
/* @__PURE__ */ jsxs4("li", {
|
|
1004
1004
|
children: [
|
|
1005
|
-
/* @__PURE__ */
|
|
1005
|
+
/* @__PURE__ */ jsx4("strong", {
|
|
1006
1006
|
children: "KnowledgeSpaceSpec"
|
|
1007
|
-
}
|
|
1007
|
+
}),
|
|
1008
1008
|
" (global) - Defines a logical knowledge domain"
|
|
1009
1009
|
]
|
|
1010
|
-
}
|
|
1011
|
-
/* @__PURE__ */
|
|
1010
|
+
}),
|
|
1011
|
+
/* @__PURE__ */ jsxs4("li", {
|
|
1012
1012
|
children: [
|
|
1013
|
-
/* @__PURE__ */
|
|
1013
|
+
/* @__PURE__ */ jsx4("strong", {
|
|
1014
1014
|
children: "KnowledgeSourceConfig"
|
|
1015
|
-
}
|
|
1015
|
+
}),
|
|
1016
1016
|
" (per-tenant) - Tenant's data sources feeding spaces"
|
|
1017
1017
|
]
|
|
1018
|
-
}
|
|
1019
|
-
/* @__PURE__ */
|
|
1018
|
+
}),
|
|
1019
|
+
/* @__PURE__ */ jsxs4("li", {
|
|
1020
1020
|
children: [
|
|
1021
|
-
/* @__PURE__ */
|
|
1021
|
+
/* @__PURE__ */ jsx4("strong", {
|
|
1022
1022
|
children: "AppKnowledgeBinding"
|
|
1023
|
-
}
|
|
1023
|
+
}),
|
|
1024
1024
|
" (per-app) - Maps spaces to workflows/agents"
|
|
1025
1025
|
]
|
|
1026
|
-
}
|
|
1026
|
+
})
|
|
1027
1027
|
]
|
|
1028
|
-
}
|
|
1028
|
+
})
|
|
1029
1029
|
]
|
|
1030
|
-
}
|
|
1031
|
-
/* @__PURE__ */
|
|
1030
|
+
}),
|
|
1031
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1032
1032
|
className: "space-y-4",
|
|
1033
1033
|
children: [
|
|
1034
|
-
/* @__PURE__ */
|
|
1034
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
1035
1035
|
className: "text-2xl font-bold",
|
|
1036
1036
|
children: "Example: Support agent with RAG"
|
|
1037
|
-
}
|
|
1038
|
-
/* @__PURE__ */
|
|
1037
|
+
}),
|
|
1038
|
+
/* @__PURE__ */ jsx4("p", {
|
|
1039
1039
|
className: "text-muted-foreground",
|
|
1040
1040
|
children: "Let's build a support agent that uses canonical product documentation and operational support history."
|
|
1041
|
-
}
|
|
1042
|
-
/* @__PURE__ */
|
|
1041
|
+
}),
|
|
1042
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1043
1043
|
className: "space-y-3",
|
|
1044
1044
|
children: [
|
|
1045
|
-
/* @__PURE__ */
|
|
1045
|
+
/* @__PURE__ */ jsx4("h3", {
|
|
1046
1046
|
className: "text-lg font-semibold",
|
|
1047
1047
|
children: "Step 1: Blueprint declares knowledge needs"
|
|
1048
|
-
}
|
|
1049
|
-
/* @__PURE__ */
|
|
1048
|
+
}),
|
|
1049
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
1050
1050
|
language: "typescript",
|
|
1051
1051
|
code: `// AppBlueprintSpec
|
|
1052
1052
|
{
|
|
@@ -1073,17 +1073,17 @@ function ArchitectureKnowledgeBindingPage() {
|
|
|
1073
1073
|
}
|
|
1074
1074
|
]
|
|
1075
1075
|
}`
|
|
1076
|
-
}
|
|
1076
|
+
})
|
|
1077
1077
|
]
|
|
1078
|
-
}
|
|
1079
|
-
/* @__PURE__ */
|
|
1078
|
+
}),
|
|
1079
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1080
1080
|
className: "space-y-3",
|
|
1081
1081
|
children: [
|
|
1082
|
-
/* @__PURE__ */
|
|
1082
|
+
/* @__PURE__ */ jsx4("h3", {
|
|
1083
1083
|
className: "text-lg font-semibold",
|
|
1084
1084
|
children: "Step 2: Tenant configures sources"
|
|
1085
|
-
}
|
|
1086
|
-
/* @__PURE__ */
|
|
1085
|
+
}),
|
|
1086
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
1087
1087
|
language: "typescript",
|
|
1088
1088
|
code: `// KnowledgeSourceConfig (per-tenant)
|
|
1089
1089
|
[
|
|
@@ -1115,17 +1115,17 @@ function ArchitectureKnowledgeBindingPage() {
|
|
|
1115
1115
|
lastSyncedAt: "2025-01-15T00:00:00Z"
|
|
1116
1116
|
}
|
|
1117
1117
|
]`
|
|
1118
|
-
}
|
|
1118
|
+
})
|
|
1119
1119
|
]
|
|
1120
|
-
}
|
|
1121
|
-
/* @__PURE__ */
|
|
1120
|
+
}),
|
|
1121
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1122
1122
|
className: "space-y-3",
|
|
1123
1123
|
children: [
|
|
1124
|
-
/* @__PURE__ */
|
|
1124
|
+
/* @__PURE__ */ jsx4("h3", {
|
|
1125
1125
|
className: "text-lg font-semibold",
|
|
1126
1126
|
children: "Step 3: TenantAppConfig binds spaces"
|
|
1127
|
-
}
|
|
1128
|
-
/* @__PURE__ */
|
|
1127
|
+
}),
|
|
1128
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
1129
1129
|
language: "typescript",
|
|
1130
1130
|
code: `// TenantAppConfig
|
|
1131
1131
|
{
|
|
@@ -1164,17 +1164,17 @@ function ArchitectureKnowledgeBindingPage() {
|
|
|
1164
1164
|
}
|
|
1165
1165
|
]
|
|
1166
1166
|
}`
|
|
1167
|
-
}
|
|
1167
|
+
})
|
|
1168
1168
|
]
|
|
1169
|
-
}
|
|
1170
|
-
/* @__PURE__ */
|
|
1169
|
+
}),
|
|
1170
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1171
1171
|
className: "space-y-3",
|
|
1172
1172
|
children: [
|
|
1173
|
-
/* @__PURE__ */
|
|
1173
|
+
/* @__PURE__ */ jsx4("h3", {
|
|
1174
1174
|
className: "text-lg font-semibold",
|
|
1175
1175
|
children: "Step 4: Workflow uses knowledge"
|
|
1176
|
-
}
|
|
1177
|
-
/* @__PURE__ */
|
|
1176
|
+
}),
|
|
1177
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
1178
1178
|
language: "yaml",
|
|
1179
1179
|
code: `// WorkflowSpec
|
|
1180
1180
|
workflowId: answer-question
|
|
@@ -1219,153 +1219,153 @@ steps:
|
|
|
1219
1219
|
|
|
1220
1220
|
Support history:
|
|
1221
1221
|
\${steps.search-support-history.output.results}`
|
|
1222
|
-
}
|
|
1222
|
+
})
|
|
1223
1223
|
]
|
|
1224
|
-
}
|
|
1224
|
+
})
|
|
1225
1225
|
]
|
|
1226
|
-
}
|
|
1227
|
-
/* @__PURE__ */
|
|
1226
|
+
}),
|
|
1227
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1228
1228
|
className: "space-y-4",
|
|
1229
1229
|
children: [
|
|
1230
|
-
/* @__PURE__ */
|
|
1230
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
1231
1231
|
className: "text-2xl font-bold",
|
|
1232
1232
|
children: "Category-based access control"
|
|
1233
|
-
}
|
|
1234
|
-
/* @__PURE__ */
|
|
1233
|
+
}),
|
|
1234
|
+
/* @__PURE__ */ jsx4("p", {
|
|
1235
1235
|
className: "text-muted-foreground",
|
|
1236
1236
|
children: "Different knowledge categories have different trust levels and access patterns:"
|
|
1237
|
-
}
|
|
1238
|
-
/* @__PURE__ */
|
|
1237
|
+
}),
|
|
1238
|
+
/* @__PURE__ */ jsx4("div", {
|
|
1239
1239
|
className: "border-border/50 overflow-x-auto rounded-lg border",
|
|
1240
|
-
children: /* @__PURE__ */
|
|
1240
|
+
children: /* @__PURE__ */ jsxs4("table", {
|
|
1241
1241
|
className: "w-full text-left text-sm",
|
|
1242
1242
|
children: [
|
|
1243
|
-
/* @__PURE__ */
|
|
1243
|
+
/* @__PURE__ */ jsx4("thead", {
|
|
1244
1244
|
className: "bg-card/50",
|
|
1245
|
-
children: /* @__PURE__ */
|
|
1245
|
+
children: /* @__PURE__ */ jsxs4("tr", {
|
|
1246
1246
|
className: "border-border/50 border-b",
|
|
1247
1247
|
children: [
|
|
1248
|
-
/* @__PURE__ */
|
|
1248
|
+
/* @__PURE__ */ jsx4("th", {
|
|
1249
1249
|
className: "px-4 py-3 font-semibold",
|
|
1250
1250
|
children: "Category"
|
|
1251
|
-
}
|
|
1252
|
-
/* @__PURE__ */
|
|
1251
|
+
}),
|
|
1252
|
+
/* @__PURE__ */ jsx4("th", {
|
|
1253
1253
|
className: "px-4 py-3 font-semibold",
|
|
1254
1254
|
children: "Trust Level"
|
|
1255
|
-
}
|
|
1256
|
-
/* @__PURE__ */
|
|
1255
|
+
}),
|
|
1256
|
+
/* @__PURE__ */ jsx4("th", {
|
|
1257
1257
|
className: "px-4 py-3 font-semibold",
|
|
1258
1258
|
children: "Use Cases"
|
|
1259
|
-
}
|
|
1260
|
-
/* @__PURE__ */
|
|
1259
|
+
}),
|
|
1260
|
+
/* @__PURE__ */ jsx4("th", {
|
|
1261
1261
|
className: "px-4 py-3 font-semibold",
|
|
1262
1262
|
children: "Policy Impact"
|
|
1263
|
-
}
|
|
1263
|
+
})
|
|
1264
1264
|
]
|
|
1265
|
-
}
|
|
1266
|
-
}
|
|
1267
|
-
/* @__PURE__ */
|
|
1265
|
+
})
|
|
1266
|
+
}),
|
|
1267
|
+
/* @__PURE__ */ jsxs4("tbody", {
|
|
1268
1268
|
className: "divide-border/50 divide-y",
|
|
1269
1269
|
children: [
|
|
1270
|
-
/* @__PURE__ */
|
|
1270
|
+
/* @__PURE__ */ jsxs4("tr", {
|
|
1271
1271
|
children: [
|
|
1272
|
-
/* @__PURE__ */
|
|
1272
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1273
1273
|
className: "px-4 py-3 font-mono text-xs",
|
|
1274
1274
|
children: "canonical"
|
|
1275
|
-
}
|
|
1276
|
-
/* @__PURE__ */
|
|
1275
|
+
}),
|
|
1276
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1277
1277
|
className: "px-4 py-3",
|
|
1278
1278
|
children: "Highest"
|
|
1279
|
-
}
|
|
1280
|
-
/* @__PURE__ */
|
|
1279
|
+
}),
|
|
1280
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1281
1281
|
className: "px-4 py-3",
|
|
1282
1282
|
children: "Product specs, schemas, official policies"
|
|
1283
|
-
}
|
|
1284
|
-
/* @__PURE__ */
|
|
1283
|
+
}),
|
|
1284
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1285
1285
|
className: "px-4 py-3",
|
|
1286
1286
|
children: "Can drive policy decisions"
|
|
1287
|
-
}
|
|
1287
|
+
})
|
|
1288
1288
|
]
|
|
1289
|
-
}
|
|
1290
|
-
/* @__PURE__ */
|
|
1289
|
+
}),
|
|
1290
|
+
/* @__PURE__ */ jsxs4("tr", {
|
|
1291
1291
|
children: [
|
|
1292
|
-
/* @__PURE__ */
|
|
1292
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1293
1293
|
className: "px-4 py-3 font-mono text-xs",
|
|
1294
1294
|
children: "operational"
|
|
1295
|
-
}
|
|
1296
|
-
/* @__PURE__ */
|
|
1295
|
+
}),
|
|
1296
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1297
1297
|
className: "px-4 py-3",
|
|
1298
1298
|
children: "High"
|
|
1299
|
-
}
|
|
1300
|
-
/* @__PURE__ */
|
|
1299
|
+
}),
|
|
1300
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1301
1301
|
className: "px-4 py-3",
|
|
1302
1302
|
children: "Support tickets, sales docs, internal runbooks"
|
|
1303
|
-
}
|
|
1304
|
-
/* @__PURE__ */
|
|
1303
|
+
}),
|
|
1304
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1305
1305
|
className: "px-4 py-3",
|
|
1306
1306
|
children: "Can inform decisions"
|
|
1307
|
-
}
|
|
1307
|
+
})
|
|
1308
1308
|
]
|
|
1309
|
-
}
|
|
1310
|
-
/* @__PURE__ */
|
|
1309
|
+
}),
|
|
1310
|
+
/* @__PURE__ */ jsxs4("tr", {
|
|
1311
1311
|
children: [
|
|
1312
|
-
/* @__PURE__ */
|
|
1312
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1313
1313
|
className: "px-4 py-3 font-mono text-xs",
|
|
1314
1314
|
children: "external"
|
|
1315
|
-
}
|
|
1316
|
-
/* @__PURE__ */
|
|
1315
|
+
}),
|
|
1316
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1317
1317
|
className: "px-4 py-3",
|
|
1318
1318
|
children: "Medium"
|
|
1319
|
-
}
|
|
1320
|
-
/* @__PURE__ */
|
|
1319
|
+
}),
|
|
1320
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1321
1321
|
className: "px-4 py-3",
|
|
1322
1322
|
children: "Third-party docs, regulations, PSP guides"
|
|
1323
|
-
}
|
|
1324
|
-
/* @__PURE__ */
|
|
1323
|
+
}),
|
|
1324
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1325
1325
|
className: "px-4 py-3",
|
|
1326
1326
|
children: "Reference only, not authoritative"
|
|
1327
|
-
}
|
|
1327
|
+
})
|
|
1328
1328
|
]
|
|
1329
|
-
}
|
|
1330
|
-
/* @__PURE__ */
|
|
1329
|
+
}),
|
|
1330
|
+
/* @__PURE__ */ jsxs4("tr", {
|
|
1331
1331
|
children: [
|
|
1332
|
-
/* @__PURE__ */
|
|
1332
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1333
1333
|
className: "px-4 py-3 font-mono text-xs",
|
|
1334
1334
|
children: "ephemeral"
|
|
1335
|
-
}
|
|
1336
|
-
/* @__PURE__ */
|
|
1335
|
+
}),
|
|
1336
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1337
1337
|
className: "px-4 py-3",
|
|
1338
1338
|
children: "Low"
|
|
1339
|
-
}
|
|
1340
|
-
/* @__PURE__ */
|
|
1339
|
+
}),
|
|
1340
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1341
1341
|
className: "px-4 py-3",
|
|
1342
1342
|
children: "Agent scratchpads, session context, drafts"
|
|
1343
|
-
}
|
|
1344
|
-
/* @__PURE__ */
|
|
1343
|
+
}),
|
|
1344
|
+
/* @__PURE__ */ jsx4("td", {
|
|
1345
1345
|
className: "px-4 py-3",
|
|
1346
1346
|
children: "Never used for decisions"
|
|
1347
|
-
}
|
|
1347
|
+
})
|
|
1348
1348
|
]
|
|
1349
|
-
}
|
|
1349
|
+
})
|
|
1350
1350
|
]
|
|
1351
|
-
}
|
|
1351
|
+
})
|
|
1352
1352
|
]
|
|
1353
|
-
}
|
|
1354
|
-
}
|
|
1353
|
+
})
|
|
1354
|
+
})
|
|
1355
1355
|
]
|
|
1356
|
-
}
|
|
1357
|
-
/* @__PURE__ */
|
|
1356
|
+
}),
|
|
1357
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1358
1358
|
className: "space-y-4",
|
|
1359
1359
|
children: [
|
|
1360
|
-
/* @__PURE__ */
|
|
1360
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
1361
1361
|
className: "text-2xl font-bold",
|
|
1362
1362
|
children: "Multi-space workflows"
|
|
1363
|
-
}
|
|
1364
|
-
/* @__PURE__ */
|
|
1363
|
+
}),
|
|
1364
|
+
/* @__PURE__ */ jsx4("p", {
|
|
1365
1365
|
className: "text-muted-foreground",
|
|
1366
1366
|
children: "Workflows can query multiple knowledge spaces and combine results:"
|
|
1367
|
-
}
|
|
1368
|
-
/* @__PURE__ */
|
|
1367
|
+
}),
|
|
1368
|
+
/* @__PURE__ */ jsx4(CodeBlock4, {
|
|
1369
1369
|
language: "typescript",
|
|
1370
1370
|
code: `knowledgeBindings: [
|
|
1371
1371
|
{
|
|
@@ -1396,230 +1396,230 @@ steps:
|
|
|
1396
1396
|
sources: ["src_crm_data", "src_past_invoices"]
|
|
1397
1397
|
}
|
|
1398
1398
|
]`
|
|
1399
|
-
}
|
|
1399
|
+
})
|
|
1400
1400
|
]
|
|
1401
|
-
}
|
|
1402
|
-
/* @__PURE__ */
|
|
1401
|
+
}),
|
|
1402
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1403
1403
|
className: "space-y-4",
|
|
1404
1404
|
children: [
|
|
1405
|
-
/* @__PURE__ */
|
|
1405
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
1406
1406
|
className: "text-2xl font-bold",
|
|
1407
1407
|
children: "Security & validation"
|
|
1408
|
-
}
|
|
1409
|
-
/* @__PURE__ */
|
|
1408
|
+
}),
|
|
1409
|
+
/* @__PURE__ */ jsxs4("ul", {
|
|
1410
1410
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1411
1411
|
children: [
|
|
1412
|
-
/* @__PURE__ */
|
|
1412
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1413
1413
|
children: "Knowledge sources are validated before sync - credentials and permissions checked"
|
|
1414
|
-
}
|
|
1415
|
-
/* @__PURE__ */
|
|
1414
|
+
}),
|
|
1415
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1416
1416
|
children: "PDP enforces which workflows/agents can access which spaces"
|
|
1417
|
-
}
|
|
1418
|
-
/* @__PURE__ */
|
|
1417
|
+
}),
|
|
1418
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1419
1419
|
children: "All knowledge queries are audited with search terms and results"
|
|
1420
|
-
}
|
|
1421
|
-
/* @__PURE__ */
|
|
1420
|
+
}),
|
|
1421
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1422
1422
|
children: "Canonical knowledge is immutable once indexed - changes require re-sync"
|
|
1423
|
-
}
|
|
1424
|
-
/* @__PURE__ */
|
|
1423
|
+
}),
|
|
1424
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1425
1425
|
children: "Ephemeral knowledge is automatically purged based on retention policies"
|
|
1426
|
-
}
|
|
1426
|
+
})
|
|
1427
1427
|
]
|
|
1428
|
-
}
|
|
1428
|
+
})
|
|
1429
1429
|
]
|
|
1430
|
-
}
|
|
1431
|
-
/* @__PURE__ */
|
|
1430
|
+
}),
|
|
1431
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1432
1432
|
className: "space-y-4",
|
|
1433
1433
|
children: [
|
|
1434
|
-
/* @__PURE__ */
|
|
1434
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
1435
1435
|
className: "text-2xl font-bold",
|
|
1436
1436
|
children: "Best practices"
|
|
1437
|
-
}
|
|
1438
|
-
/* @__PURE__ */
|
|
1437
|
+
}),
|
|
1438
|
+
/* @__PURE__ */ jsxs4("ul", {
|
|
1439
1439
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1440
1440
|
children: [
|
|
1441
|
-
/* @__PURE__ */
|
|
1441
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1442
1442
|
children: "Use canonical spaces for policy-critical decisions, operational for suggestions"
|
|
1443
|
-
}
|
|
1444
|
-
/* @__PURE__ */
|
|
1443
|
+
}),
|
|
1444
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1445
1445
|
children: "Never allow workflows to write to canonical spaces - maintain read-only access"
|
|
1446
|
-
}
|
|
1447
|
-
/* @__PURE__ */
|
|
1446
|
+
}),
|
|
1447
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1448
1448
|
children: "Set up monitoring for sync failures and stale knowledge sources"
|
|
1449
|
-
}
|
|
1450
|
-
/* @__PURE__ */
|
|
1449
|
+
}),
|
|
1450
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1451
1451
|
children: "Document the purpose and trust level of each knowledge space"
|
|
1452
|
-
}
|
|
1453
|
-
/* @__PURE__ */
|
|
1452
|
+
}),
|
|
1453
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1454
1454
|
children: "Test knowledge queries in sandbox before promoting to production"
|
|
1455
|
-
}
|
|
1456
|
-
/* @__PURE__ */
|
|
1455
|
+
}),
|
|
1456
|
+
/* @__PURE__ */ jsxs4("li", {
|
|
1457
1457
|
children: [
|
|
1458
1458
|
"Use explicit ",
|
|
1459
|
-
/* @__PURE__ */
|
|
1459
|
+
/* @__PURE__ */ jsx4("code", {
|
|
1460
1460
|
children: "allowedConsumers"
|
|
1461
|
-
}
|
|
1461
|
+
}),
|
|
1462
1462
|
" - avoid wildcard access"
|
|
1463
1463
|
]
|
|
1464
|
-
}
|
|
1464
|
+
})
|
|
1465
1465
|
]
|
|
1466
|
-
}
|
|
1466
|
+
})
|
|
1467
1467
|
]
|
|
1468
|
-
}
|
|
1469
|
-
/* @__PURE__ */
|
|
1468
|
+
}),
|
|
1469
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1470
1470
|
className: "flex items-center gap-4 pt-4",
|
|
1471
1471
|
children: [
|
|
1472
|
-
/* @__PURE__ */
|
|
1472
|
+
/* @__PURE__ */ jsx4(Link4, {
|
|
1473
1473
|
href: "/docs/architecture/integration-binding",
|
|
1474
1474
|
className: "btn-ghost",
|
|
1475
1475
|
children: "Previous: Integration Binding"
|
|
1476
|
-
}
|
|
1477
|
-
/* @__PURE__ */
|
|
1476
|
+
}),
|
|
1477
|
+
/* @__PURE__ */ jsxs4(Link4, {
|
|
1478
1478
|
href: "/docs/knowledge",
|
|
1479
1479
|
className: "btn-primary",
|
|
1480
1480
|
children: [
|
|
1481
1481
|
"Knowledge & Context ",
|
|
1482
|
-
/* @__PURE__ */
|
|
1482
|
+
/* @__PURE__ */ jsx4(ChevronRight4, {
|
|
1483
1483
|
size: 16
|
|
1484
|
-
}
|
|
1484
|
+
})
|
|
1485
1485
|
]
|
|
1486
|
-
}
|
|
1486
|
+
})
|
|
1487
1487
|
]
|
|
1488
|
-
}
|
|
1488
|
+
})
|
|
1489
1489
|
]
|
|
1490
|
-
}
|
|
1490
|
+
});
|
|
1491
1491
|
}
|
|
1492
1492
|
|
|
1493
1493
|
// src/components/docs/architecture/ArchitectureMultiTenancyPage.tsx
|
|
1494
1494
|
import { CodeBlock as CodeBlock5 } from "@contractspec/lib.design-system";
|
|
1495
1495
|
import Link5 from "@contractspec/lib.ui-link";
|
|
1496
1496
|
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
1497
|
-
import {
|
|
1497
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1498
1498
|
function ArchitectureMultiTenancyPage() {
|
|
1499
|
-
return /* @__PURE__ */
|
|
1499
|
+
return /* @__PURE__ */ jsxs5("div", {
|
|
1500
1500
|
className: "space-y-8",
|
|
1501
1501
|
children: [
|
|
1502
|
-
/* @__PURE__ */
|
|
1502
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1503
1503
|
className: "space-y-4",
|
|
1504
1504
|
children: [
|
|
1505
|
-
/* @__PURE__ */
|
|
1505
|
+
/* @__PURE__ */ jsx5("h1", {
|
|
1506
1506
|
className: "text-4xl font-bold",
|
|
1507
1507
|
children: "Multi-Tenancy"
|
|
1508
|
-
}
|
|
1509
|
-
/* @__PURE__ */
|
|
1508
|
+
}),
|
|
1509
|
+
/* @__PURE__ */ jsx5("p", {
|
|
1510
1510
|
className: "text-muted-foreground",
|
|
1511
1511
|
children: "ContractSpec is designed from the ground up for multi-tenancy. Apps built with ContractSpec can serve multiple organizations (tenants) from a single deployment, while ensuring strict data isolation and configuration separation."
|
|
1512
|
-
}
|
|
1512
|
+
})
|
|
1513
1513
|
]
|
|
1514
|
-
}
|
|
1515
|
-
/* @__PURE__ */
|
|
1514
|
+
}),
|
|
1515
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1516
1516
|
className: "space-y-4",
|
|
1517
1517
|
children: [
|
|
1518
|
-
/* @__PURE__ */
|
|
1518
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1519
1519
|
className: "text-2xl font-bold",
|
|
1520
1520
|
children: "Core Concepts"
|
|
1521
|
-
}
|
|
1522
|
-
/* @__PURE__ */
|
|
1521
|
+
}),
|
|
1522
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
1523
1523
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1524
1524
|
children: [
|
|
1525
|
-
/* @__PURE__ */
|
|
1525
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1526
1526
|
children: [
|
|
1527
|
-
/* @__PURE__ */
|
|
1527
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1528
1528
|
children: "Tenant"
|
|
1529
|
-
}
|
|
1529
|
+
}),
|
|
1530
1530
|
": An organization or customer that uses your app. Each tenant has a unique ",
|
|
1531
|
-
/* @__PURE__ */
|
|
1531
|
+
/* @__PURE__ */ jsx5("code", {
|
|
1532
1532
|
children: "tenantId"
|
|
1533
|
-
}
|
|
1533
|
+
}),
|
|
1534
1534
|
"."
|
|
1535
1535
|
]
|
|
1536
|
-
}
|
|
1537
|
-
/* @__PURE__ */
|
|
1536
|
+
}),
|
|
1537
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1538
1538
|
children: [
|
|
1539
|
-
/* @__PURE__ */
|
|
1539
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1540
1540
|
children: "Tenant Isolation"
|
|
1541
|
-
}
|
|
1541
|
+
}),
|
|
1542
1542
|
": Data and configuration for one tenant is never accessible to another tenant unless explicitly shared."
|
|
1543
1543
|
]
|
|
1544
|
-
}
|
|
1545
|
-
/* @__PURE__ */
|
|
1544
|
+
}),
|
|
1545
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1546
1546
|
children: [
|
|
1547
|
-
/* @__PURE__ */
|
|
1547
|
+
/* @__PURE__ */ jsx5("strong", {
|
|
1548
1548
|
children: "Tenant Context"
|
|
1549
|
-
}
|
|
1549
|
+
}),
|
|
1550
1550
|
": Every request and operation runs within the context of a specific tenant."
|
|
1551
1551
|
]
|
|
1552
|
-
}
|
|
1552
|
+
})
|
|
1553
1553
|
]
|
|
1554
|
-
}
|
|
1554
|
+
})
|
|
1555
1555
|
]
|
|
1556
|
-
}
|
|
1557
|
-
/* @__PURE__ */
|
|
1556
|
+
}),
|
|
1557
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1558
1558
|
className: "space-y-4",
|
|
1559
1559
|
children: [
|
|
1560
|
-
/* @__PURE__ */
|
|
1560
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1561
1561
|
className: "text-2xl font-bold",
|
|
1562
1562
|
children: "Tenant Resolution"
|
|
1563
|
-
}
|
|
1564
|
-
/* @__PURE__ */
|
|
1563
|
+
}),
|
|
1564
|
+
/* @__PURE__ */ jsx5("p", {
|
|
1565
1565
|
className: "text-muted-foreground",
|
|
1566
1566
|
children: "The runtime automatically resolves the tenant context for every request based on:"
|
|
1567
|
-
}
|
|
1568
|
-
/* @__PURE__ */
|
|
1567
|
+
}),
|
|
1568
|
+
/* @__PURE__ */ jsxs5("ul", {
|
|
1569
1569
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
1570
1570
|
children: [
|
|
1571
|
-
/* @__PURE__ */
|
|
1571
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1572
1572
|
children: [
|
|
1573
1573
|
"Subdomain (e.g., ",
|
|
1574
|
-
/* @__PURE__ */
|
|
1574
|
+
/* @__PURE__ */ jsx5("code", {
|
|
1575
1575
|
children: "acme.app.com"
|
|
1576
|
-
}
|
|
1576
|
+
}),
|
|
1577
1577
|
")"
|
|
1578
1578
|
]
|
|
1579
|
-
}
|
|
1580
|
-
/* @__PURE__ */
|
|
1579
|
+
}),
|
|
1580
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1581
1581
|
children: [
|
|
1582
1582
|
"Custom Domain (e.g., ",
|
|
1583
|
-
/* @__PURE__ */
|
|
1583
|
+
/* @__PURE__ */ jsx5("code", {
|
|
1584
1584
|
children: "portal.acme.com"
|
|
1585
|
-
}
|
|
1585
|
+
}),
|
|
1586
1586
|
")"
|
|
1587
1587
|
]
|
|
1588
|
-
}
|
|
1589
|
-
/* @__PURE__ */
|
|
1588
|
+
}),
|
|
1589
|
+
/* @__PURE__ */ jsxs5("li", {
|
|
1590
1590
|
children: [
|
|
1591
1591
|
"Header (e.g., ",
|
|
1592
|
-
/* @__PURE__ */
|
|
1592
|
+
/* @__PURE__ */ jsx5("code", {
|
|
1593
1593
|
children: "x-tenant-id: acme-corp"
|
|
1594
|
-
}
|
|
1594
|
+
}),
|
|
1595
1595
|
")"
|
|
1596
1596
|
]
|
|
1597
|
-
}
|
|
1598
|
-
/* @__PURE__ */
|
|
1597
|
+
}),
|
|
1598
|
+
/* @__PURE__ */ jsx5("li", {
|
|
1599
1599
|
children: "Authentication Token (embedded tenant claim)"
|
|
1600
|
-
}
|
|
1600
|
+
})
|
|
1601
1601
|
]
|
|
1602
|
-
}
|
|
1602
|
+
})
|
|
1603
1603
|
]
|
|
1604
|
-
}
|
|
1605
|
-
/* @__PURE__ */
|
|
1604
|
+
}),
|
|
1605
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1606
1606
|
className: "space-y-4",
|
|
1607
1607
|
children: [
|
|
1608
|
-
/* @__PURE__ */
|
|
1608
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
1609
1609
|
className: "text-2xl font-bold",
|
|
1610
1610
|
children: "Configuration Isolation"
|
|
1611
|
-
}
|
|
1612
|
-
/* @__PURE__ */
|
|
1611
|
+
}),
|
|
1612
|
+
/* @__PURE__ */ jsxs5("p", {
|
|
1613
1613
|
className: "text-muted-foreground",
|
|
1614
1614
|
children: [
|
|
1615
1615
|
"Each tenant has its own ",
|
|
1616
|
-
/* @__PURE__ */
|
|
1616
|
+
/* @__PURE__ */ jsx5("code", {
|
|
1617
1617
|
children: "TenantAppConfig"
|
|
1618
|
-
}
|
|
1618
|
+
}),
|
|
1619
1619
|
" which defines:"
|
|
1620
1620
|
]
|
|
1621
|
-
}
|
|
1622
|
-
/* @__PURE__ */
|
|
1621
|
+
}),
|
|
1622
|
+
/* @__PURE__ */ jsx5(CodeBlock5, {
|
|
1623
1623
|
language: "typescript",
|
|
1624
1624
|
code: `type TenantAppConfig = {
|
|
1625
1625
|
tenantId: string;
|
|
@@ -1629,497 +1629,497 @@ function ArchitectureMultiTenancyPage() {
|
|
|
1629
1629
|
knowledgeBindings: AppKnowledgeBinding[];
|
|
1630
1630
|
featureFlags: Record<string, boolean>;
|
|
1631
1631
|
};`
|
|
1632
|
-
}
|
|
1633
|
-
/* @__PURE__ */
|
|
1632
|
+
}),
|
|
1633
|
+
/* @__PURE__ */ jsx5("p", {
|
|
1634
1634
|
className: "text-muted-foreground mt-2",
|
|
1635
1635
|
children: "This allows you to customize feature flags, integration connections, and knowledge sources per tenant without changing the application code."
|
|
1636
|
-
}
|
|
1636
|
+
})
|
|
1637
1637
|
]
|
|
1638
|
-
}
|
|
1639
|
-
/* @__PURE__ */
|
|
1638
|
+
}),
|
|
1639
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1640
1640
|
className: "flex items-center gap-4 pt-4",
|
|
1641
1641
|
children: [
|
|
1642
|
-
/* @__PURE__ */
|
|
1642
|
+
/* @__PURE__ */ jsx5(Link5, {
|
|
1643
1643
|
href: "/docs/architecture",
|
|
1644
1644
|
className: "btn-ghost",
|
|
1645
1645
|
children: "Back to Architecture"
|
|
1646
|
-
}
|
|
1647
|
-
/* @__PURE__ */
|
|
1646
|
+
}),
|
|
1647
|
+
/* @__PURE__ */ jsxs5(Link5, {
|
|
1648
1648
|
href: "/docs/libraries/multi-tenancy",
|
|
1649
1649
|
className: "btn-primary",
|
|
1650
1650
|
children: [
|
|
1651
1651
|
"Multi-Tenancy Library ",
|
|
1652
|
-
/* @__PURE__ */
|
|
1652
|
+
/* @__PURE__ */ jsx5(ChevronRight5, {
|
|
1653
1653
|
size: 16
|
|
1654
|
-
}
|
|
1654
|
+
})
|
|
1655
1655
|
]
|
|
1656
|
-
}
|
|
1656
|
+
})
|
|
1657
1657
|
]
|
|
1658
|
-
}
|
|
1658
|
+
})
|
|
1659
1659
|
]
|
|
1660
|
-
}
|
|
1660
|
+
});
|
|
1661
1661
|
}
|
|
1662
1662
|
|
|
1663
1663
|
// src/components/docs/architecture/ArchitectureOverviewPage.tsx
|
|
1664
1664
|
import Link6 from "@contractspec/lib.ui-link";
|
|
1665
1665
|
import { ChevronRight as ChevronRight6 } from "lucide-react";
|
|
1666
|
-
import {
|
|
1666
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1667
1667
|
function ArchitectureOverviewPage() {
|
|
1668
|
-
return /* @__PURE__ */
|
|
1668
|
+
return /* @__PURE__ */ jsxs6("div", {
|
|
1669
1669
|
className: "space-y-8",
|
|
1670
1670
|
children: [
|
|
1671
|
-
/* @__PURE__ */
|
|
1671
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1672
1672
|
className: "space-y-4",
|
|
1673
1673
|
children: [
|
|
1674
|
-
/* @__PURE__ */
|
|
1674
|
+
/* @__PURE__ */ jsx6("h1", {
|
|
1675
1675
|
className: "text-4xl font-bold",
|
|
1676
1676
|
children: "Architecture"
|
|
1677
|
-
}
|
|
1678
|
-
/* @__PURE__ */
|
|
1677
|
+
}),
|
|
1678
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1679
1679
|
className: "text-muted-foreground",
|
|
1680
1680
|
children: "ContractSpec's architecture is built on a foundation of typed specifications served by runtime adapters. This section covers the core architectural concepts: app configuration, integration binding, control-plane governance, and knowledge management."
|
|
1681
|
-
}
|
|
1681
|
+
})
|
|
1682
1682
|
]
|
|
1683
|
-
}
|
|
1684
|
-
/* @__PURE__ */
|
|
1683
|
+
}),
|
|
1684
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1685
1685
|
className: "space-y-4",
|
|
1686
1686
|
children: [
|
|
1687
|
-
/* @__PURE__ */
|
|
1687
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1688
1688
|
className: "text-2xl font-bold",
|
|
1689
1689
|
children: "Core layers"
|
|
1690
|
-
}
|
|
1691
|
-
/* @__PURE__ */
|
|
1690
|
+
}),
|
|
1691
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1692
1692
|
className: "space-y-6",
|
|
1693
1693
|
children: [
|
|
1694
|
-
/* @__PURE__ */
|
|
1694
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1695
1695
|
className: "space-y-3",
|
|
1696
1696
|
children: [
|
|
1697
|
-
/* @__PURE__ */
|
|
1697
|
+
/* @__PURE__ */ jsx6("h3", {
|
|
1698
1698
|
className: "text-xl font-semibold",
|
|
1699
1699
|
children: "1. Specification Layer"
|
|
1700
|
-
}
|
|
1701
|
-
/* @__PURE__ */
|
|
1700
|
+
}),
|
|
1701
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1702
1702
|
className: "text-muted-foreground",
|
|
1703
1703
|
children: "The foundation of ContractSpec. Typed specifications define what your application can do:"
|
|
1704
|
-
}
|
|
1705
|
-
/* @__PURE__ */
|
|
1704
|
+
}),
|
|
1705
|
+
/* @__PURE__ */ jsxs6("ul", {
|
|
1706
1706
|
className: "text-muted-foreground ml-4 list-inside list-disc space-y-2",
|
|
1707
1707
|
children: [
|
|
1708
|
-
/* @__PURE__ */
|
|
1708
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1709
1709
|
children: [
|
|
1710
|
-
/* @__PURE__ */
|
|
1710
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1711
1711
|
href: "/docs/specs/capabilities",
|
|
1712
1712
|
className: "text-violet-400 hover:text-violet-300",
|
|
1713
1713
|
children: "CapabilitySpec"
|
|
1714
|
-
}
|
|
1714
|
+
}),
|
|
1715
1715
|
" ",
|
|
1716
1716
|
"- Operations and their inputs/outputs"
|
|
1717
1717
|
]
|
|
1718
|
-
}
|
|
1719
|
-
/* @__PURE__ */
|
|
1718
|
+
}),
|
|
1719
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1720
1720
|
children: [
|
|
1721
|
-
/* @__PURE__ */
|
|
1721
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1722
1722
|
href: "/docs/specs/dataviews",
|
|
1723
1723
|
className: "text-violet-400 hover:text-violet-300",
|
|
1724
1724
|
children: "DataViewSpec"
|
|
1725
|
-
}
|
|
1725
|
+
}),
|
|
1726
1726
|
" ",
|
|
1727
1727
|
"- Data queries and presentation"
|
|
1728
1728
|
]
|
|
1729
|
-
}
|
|
1730
|
-
/* @__PURE__ */
|
|
1729
|
+
}),
|
|
1730
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1731
1731
|
children: [
|
|
1732
|
-
/* @__PURE__ */
|
|
1732
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1733
1733
|
href: "/docs/specs/workflows",
|
|
1734
1734
|
className: "text-violet-400 hover:text-violet-300",
|
|
1735
1735
|
children: "WorkflowSpec"
|
|
1736
|
-
}
|
|
1736
|
+
}),
|
|
1737
1737
|
" ",
|
|
1738
1738
|
"- Multi-step processes"
|
|
1739
1739
|
]
|
|
1740
|
-
}
|
|
1741
|
-
/* @__PURE__ */
|
|
1740
|
+
}),
|
|
1741
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1742
1742
|
children: [
|
|
1743
|
-
/* @__PURE__ */
|
|
1743
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1744
1744
|
href: "/docs/specs/policy",
|
|
1745
1745
|
className: "text-violet-400 hover:text-violet-300",
|
|
1746
1746
|
children: "PolicySpec"
|
|
1747
|
-
}
|
|
1747
|
+
}),
|
|
1748
1748
|
" ",
|
|
1749
1749
|
"- Access control and data protection"
|
|
1750
1750
|
]
|
|
1751
|
-
}
|
|
1752
|
-
/* @__PURE__ */
|
|
1751
|
+
}),
|
|
1752
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1753
1753
|
children: [
|
|
1754
|
-
/* @__PURE__ */
|
|
1754
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1755
1755
|
href: "/docs/integrations/spec-model",
|
|
1756
1756
|
className: "text-violet-400 hover:text-violet-300",
|
|
1757
1757
|
children: "IntegrationSpec"
|
|
1758
|
-
}
|
|
1758
|
+
}),
|
|
1759
1759
|
" ",
|
|
1760
1760
|
"- External service providers"
|
|
1761
1761
|
]
|
|
1762
|
-
}
|
|
1763
|
-
/* @__PURE__ */
|
|
1762
|
+
}),
|
|
1763
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1764
1764
|
children: [
|
|
1765
|
-
/* @__PURE__ */
|
|
1765
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1766
1766
|
href: "/docs/knowledge/spaces",
|
|
1767
1767
|
className: "text-violet-400 hover:text-violet-300",
|
|
1768
1768
|
children: "KnowledgeSpaceSpec"
|
|
1769
|
-
}
|
|
1769
|
+
}),
|
|
1770
1770
|
" ",
|
|
1771
1771
|
"- Knowledge and context management"
|
|
1772
1772
|
]
|
|
1773
|
-
}
|
|
1773
|
+
})
|
|
1774
1774
|
]
|
|
1775
|
-
}
|
|
1775
|
+
})
|
|
1776
1776
|
]
|
|
1777
|
-
}
|
|
1778
|
-
/* @__PURE__ */
|
|
1777
|
+
}),
|
|
1778
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1779
1779
|
className: "space-y-3",
|
|
1780
1780
|
children: [
|
|
1781
|
-
/* @__PURE__ */
|
|
1781
|
+
/* @__PURE__ */ jsx6("h3", {
|
|
1782
1782
|
className: "text-xl font-semibold",
|
|
1783
1783
|
children: "2. Configuration Layer"
|
|
1784
|
-
}
|
|
1785
|
-
/* @__PURE__ */
|
|
1784
|
+
}),
|
|
1785
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1786
1786
|
className: "text-muted-foreground",
|
|
1787
1787
|
children: "How applications are configured and customized:"
|
|
1788
|
-
}
|
|
1789
|
-
/* @__PURE__ */
|
|
1788
|
+
}),
|
|
1789
|
+
/* @__PURE__ */ jsxs6("ul", {
|
|
1790
1790
|
className: "text-muted-foreground ml-4 list-inside list-disc space-y-2",
|
|
1791
1791
|
children: [
|
|
1792
|
-
/* @__PURE__ */
|
|
1792
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1793
1793
|
children: [
|
|
1794
|
-
/* @__PURE__ */
|
|
1794
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1795
1795
|
href: "/docs/architecture/app-config",
|
|
1796
1796
|
className: "text-violet-400 hover:text-violet-300",
|
|
1797
1797
|
children: "AppBlueprintSpec"
|
|
1798
|
-
}
|
|
1798
|
+
}),
|
|
1799
1799
|
" ",
|
|
1800
1800
|
"- Global, versioned app definition"
|
|
1801
1801
|
]
|
|
1802
|
-
}
|
|
1803
|
-
/* @__PURE__ */
|
|
1802
|
+
}),
|
|
1803
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1804
1804
|
children: [
|
|
1805
|
-
/* @__PURE__ */
|
|
1805
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1806
1806
|
href: "/docs/architecture/app-config",
|
|
1807
1807
|
className: "text-violet-400 hover:text-violet-300",
|
|
1808
1808
|
children: "TenantAppConfig"
|
|
1809
|
-
}
|
|
1809
|
+
}),
|
|
1810
1810
|
" ",
|
|
1811
1811
|
"- Per-tenant, per-environment configuration"
|
|
1812
1812
|
]
|
|
1813
|
-
}
|
|
1814
|
-
/* @__PURE__ */
|
|
1813
|
+
}),
|
|
1814
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1815
1815
|
children: [
|
|
1816
|
-
/* @__PURE__ */
|
|
1816
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1817
1817
|
href: "/docs/architecture/integration-binding",
|
|
1818
1818
|
className: "text-violet-400 hover:text-violet-300",
|
|
1819
1819
|
children: "AppIntegrationBinding"
|
|
1820
|
-
}
|
|
1820
|
+
}),
|
|
1821
1821
|
" ",
|
|
1822
1822
|
"- How apps use integrations"
|
|
1823
1823
|
]
|
|
1824
|
-
}
|
|
1825
|
-
/* @__PURE__ */
|
|
1824
|
+
}),
|
|
1825
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1826
1826
|
children: [
|
|
1827
|
-
/* @__PURE__ */
|
|
1827
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1828
1828
|
href: "/docs/architecture/knowledge-binding",
|
|
1829
1829
|
className: "text-violet-400 hover:text-violet-300",
|
|
1830
1830
|
children: "AppKnowledgeBinding"
|
|
1831
|
-
}
|
|
1831
|
+
}),
|
|
1832
1832
|
" ",
|
|
1833
1833
|
"- How apps access knowledge"
|
|
1834
1834
|
]
|
|
1835
|
-
}
|
|
1835
|
+
})
|
|
1836
1836
|
]
|
|
1837
|
-
}
|
|
1837
|
+
})
|
|
1838
1838
|
]
|
|
1839
|
-
}
|
|
1840
|
-
/* @__PURE__ */
|
|
1839
|
+
}),
|
|
1840
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1841
1841
|
className: "space-y-3",
|
|
1842
1842
|
children: [
|
|
1843
|
-
/* @__PURE__ */
|
|
1843
|
+
/* @__PURE__ */ jsx6("h3", {
|
|
1844
1844
|
className: "text-xl font-semibold",
|
|
1845
1845
|
children: "3. Runtime Layer"
|
|
1846
|
-
}
|
|
1847
|
-
/* @__PURE__ */
|
|
1846
|
+
}),
|
|
1847
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1848
1848
|
className: "text-muted-foreground",
|
|
1849
1849
|
children: "How specifications are executed at runtime:"
|
|
1850
|
-
}
|
|
1851
|
-
/* @__PURE__ */
|
|
1850
|
+
}),
|
|
1851
|
+
/* @__PURE__ */ jsxs6("ul", {
|
|
1852
1852
|
className: "text-muted-foreground ml-4 list-inside list-disc space-y-2",
|
|
1853
1853
|
children: [
|
|
1854
|
-
/* @__PURE__ */
|
|
1854
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1855
1855
|
children: [
|
|
1856
|
-
/* @__PURE__ */
|
|
1856
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
1857
1857
|
children: "ResolvedAppConfig"
|
|
1858
|
-
}
|
|
1858
|
+
}),
|
|
1859
1859
|
" - Merged blueprint + tenant config"
|
|
1860
1860
|
]
|
|
1861
|
-
}
|
|
1862
|
-
/* @__PURE__ */
|
|
1861
|
+
}),
|
|
1862
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1863
1863
|
children: [
|
|
1864
|
-
/* @__PURE__ */
|
|
1864
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
1865
1865
|
children: "Policy Decision Point (PDP)"
|
|
1866
|
-
}
|
|
1866
|
+
}),
|
|
1867
1867
|
" - Enforces policies on every operation"
|
|
1868
1868
|
]
|
|
1869
|
-
}
|
|
1870
|
-
/* @__PURE__ */
|
|
1869
|
+
}),
|
|
1870
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1871
1871
|
children: [
|
|
1872
|
-
/* @__PURE__ */
|
|
1872
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
1873
1873
|
href: "/docs/architecture/control-plane",
|
|
1874
1874
|
className: "text-violet-400 hover:text-violet-300",
|
|
1875
1875
|
children: "Control Plane Runtime"
|
|
1876
|
-
}
|
|
1876
|
+
}),
|
|
1877
1877
|
" ",
|
|
1878
1878
|
"- Deterministic intent to plan to policy to execution loop"
|
|
1879
1879
|
]
|
|
1880
|
-
}
|
|
1881
|
-
/* @__PURE__ */
|
|
1880
|
+
}),
|
|
1881
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1882
1882
|
children: [
|
|
1883
|
-
/* @__PURE__ */
|
|
1883
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
1884
1884
|
children: "Presentation Runtime"
|
|
1885
|
-
}
|
|
1885
|
+
}),
|
|
1886
1886
|
" - React and React Native renderers"
|
|
1887
1887
|
]
|
|
1888
|
-
}
|
|
1889
|
-
/* @__PURE__ */
|
|
1888
|
+
}),
|
|
1889
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1890
1890
|
children: [
|
|
1891
|
-
/* @__PURE__ */
|
|
1891
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
1892
1892
|
children: "Integration Connectors"
|
|
1893
|
-
}
|
|
1893
|
+
}),
|
|
1894
1894
|
" - Execute external API calls"
|
|
1895
1895
|
]
|
|
1896
|
-
}
|
|
1897
|
-
/* @__PURE__ */
|
|
1896
|
+
}),
|
|
1897
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1898
1898
|
children: [
|
|
1899
|
-
/* @__PURE__ */
|
|
1899
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
1900
1900
|
children: "Knowledge Retrieval"
|
|
1901
|
-
}
|
|
1901
|
+
}),
|
|
1902
1902
|
" - Query vector databases and knowledge sources"
|
|
1903
1903
|
]
|
|
1904
|
-
}
|
|
1904
|
+
})
|
|
1905
1905
|
]
|
|
1906
|
-
}
|
|
1906
|
+
})
|
|
1907
1907
|
]
|
|
1908
|
-
}
|
|
1908
|
+
})
|
|
1909
1909
|
]
|
|
1910
|
-
}
|
|
1910
|
+
})
|
|
1911
1911
|
]
|
|
1912
|
-
}
|
|
1913
|
-
/* @__PURE__ */
|
|
1912
|
+
}),
|
|
1913
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1914
1914
|
className: "space-y-4",
|
|
1915
1915
|
children: [
|
|
1916
|
-
/* @__PURE__ */
|
|
1916
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
1917
1917
|
className: "text-2xl font-bold",
|
|
1918
1918
|
children: "Configuration model"
|
|
1919
|
-
}
|
|
1920
|
-
/* @__PURE__ */
|
|
1919
|
+
}),
|
|
1920
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1921
1921
|
className: "text-muted-foreground",
|
|
1922
1922
|
children: "ContractSpec uses a three-tier configuration model:"
|
|
1923
|
-
}
|
|
1924
|
-
/* @__PURE__ */
|
|
1923
|
+
}),
|
|
1924
|
+
/* @__PURE__ */ jsx6("div", {
|
|
1925
1925
|
className: "border-border/50 overflow-x-auto rounded-lg border",
|
|
1926
|
-
children: /* @__PURE__ */
|
|
1926
|
+
children: /* @__PURE__ */ jsxs6("table", {
|
|
1927
1927
|
className: "w-full text-left text-sm",
|
|
1928
1928
|
children: [
|
|
1929
|
-
/* @__PURE__ */
|
|
1929
|
+
/* @__PURE__ */ jsx6("thead", {
|
|
1930
1930
|
className: "bg-card/50",
|
|
1931
|
-
children: /* @__PURE__ */
|
|
1931
|
+
children: /* @__PURE__ */ jsxs6("tr", {
|
|
1932
1932
|
className: "border-border/50 border-b",
|
|
1933
1933
|
children: [
|
|
1934
|
-
/* @__PURE__ */
|
|
1934
|
+
/* @__PURE__ */ jsx6("th", {
|
|
1935
1935
|
className: "px-4 py-3 font-semibold",
|
|
1936
1936
|
children: "Layer"
|
|
1937
|
-
}
|
|
1938
|
-
/* @__PURE__ */
|
|
1937
|
+
}),
|
|
1938
|
+
/* @__PURE__ */ jsx6("th", {
|
|
1939
1939
|
className: "px-4 py-3 font-semibold",
|
|
1940
1940
|
children: "Type"
|
|
1941
|
-
}
|
|
1942
|
-
/* @__PURE__ */
|
|
1941
|
+
}),
|
|
1942
|
+
/* @__PURE__ */ jsx6("th", {
|
|
1943
1943
|
className: "px-4 py-3 font-semibold",
|
|
1944
1944
|
children: "Scope"
|
|
1945
|
-
}
|
|
1946
|
-
/* @__PURE__ */
|
|
1945
|
+
}),
|
|
1946
|
+
/* @__PURE__ */ jsx6("th", {
|
|
1947
1947
|
className: "px-4 py-3 font-semibold",
|
|
1948
1948
|
children: "Storage"
|
|
1949
|
-
}
|
|
1949
|
+
})
|
|
1950
1950
|
]
|
|
1951
|
-
}
|
|
1952
|
-
}
|
|
1953
|
-
/* @__PURE__ */
|
|
1951
|
+
})
|
|
1952
|
+
}),
|
|
1953
|
+
/* @__PURE__ */ jsxs6("tbody", {
|
|
1954
1954
|
className: "divide-border/50 divide-y",
|
|
1955
1955
|
children: [
|
|
1956
|
-
/* @__PURE__ */
|
|
1956
|
+
/* @__PURE__ */ jsxs6("tr", {
|
|
1957
1957
|
children: [
|
|
1958
|
-
/* @__PURE__ */
|
|
1958
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1959
1959
|
className: "px-4 py-3 align-top",
|
|
1960
|
-
children: /* @__PURE__ */
|
|
1960
|
+
children: /* @__PURE__ */ jsx6("strong", {
|
|
1961
1961
|
children: "Blueprint"
|
|
1962
|
-
}
|
|
1963
|
-
}
|
|
1964
|
-
/* @__PURE__ */
|
|
1962
|
+
})
|
|
1963
|
+
}),
|
|
1964
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1965
1965
|
className: "px-4 py-3 align-top font-mono text-xs",
|
|
1966
1966
|
children: "AppBlueprintSpec"
|
|
1967
|
-
}
|
|
1968
|
-
/* @__PURE__ */
|
|
1967
|
+
}),
|
|
1968
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1969
1969
|
className: "px-4 py-3 align-top",
|
|
1970
1970
|
children: "Global, versioned, no tenant info"
|
|
1971
|
-
}
|
|
1972
|
-
/* @__PURE__ */
|
|
1971
|
+
}),
|
|
1972
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1973
1973
|
className: "px-4 py-3 align-top",
|
|
1974
1974
|
children: "Version control, immutable"
|
|
1975
|
-
}
|
|
1975
|
+
})
|
|
1976
1976
|
]
|
|
1977
|
-
}
|
|
1978
|
-
/* @__PURE__ */
|
|
1977
|
+
}),
|
|
1978
|
+
/* @__PURE__ */ jsxs6("tr", {
|
|
1979
1979
|
children: [
|
|
1980
|
-
/* @__PURE__ */
|
|
1980
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1981
1981
|
className: "px-4 py-3 align-top",
|
|
1982
|
-
children: /* @__PURE__ */
|
|
1982
|
+
children: /* @__PURE__ */ jsx6("strong", {
|
|
1983
1983
|
children: "Tenant Config"
|
|
1984
|
-
}
|
|
1985
|
-
}
|
|
1986
|
-
/* @__PURE__ */
|
|
1984
|
+
})
|
|
1985
|
+
}),
|
|
1986
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1987
1987
|
className: "px-4 py-3 align-top font-mono text-xs",
|
|
1988
1988
|
children: "TenantAppConfig"
|
|
1989
|
-
}
|
|
1990
|
-
/* @__PURE__ */
|
|
1989
|
+
}),
|
|
1990
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1991
1991
|
className: "px-4 py-3 align-top",
|
|
1992
1992
|
children: "Per-tenant, per-environment"
|
|
1993
|
-
}
|
|
1994
|
-
/* @__PURE__ */
|
|
1993
|
+
}),
|
|
1994
|
+
/* @__PURE__ */ jsx6("td", {
|
|
1995
1995
|
className: "px-4 py-3 align-top",
|
|
1996
1996
|
children: "Database, mutable"
|
|
1997
|
-
}
|
|
1997
|
+
})
|
|
1998
1998
|
]
|
|
1999
|
-
}
|
|
2000
|
-
/* @__PURE__ */
|
|
1999
|
+
}),
|
|
2000
|
+
/* @__PURE__ */ jsxs6("tr", {
|
|
2001
2001
|
children: [
|
|
2002
|
-
/* @__PURE__ */
|
|
2002
|
+
/* @__PURE__ */ jsx6("td", {
|
|
2003
2003
|
className: "px-4 py-3 align-top",
|
|
2004
|
-
children: /* @__PURE__ */
|
|
2004
|
+
children: /* @__PURE__ */ jsx6("strong", {
|
|
2005
2005
|
children: "Resolved Config"
|
|
2006
|
-
}
|
|
2007
|
-
}
|
|
2008
|
-
/* @__PURE__ */
|
|
2006
|
+
})
|
|
2007
|
+
}),
|
|
2008
|
+
/* @__PURE__ */ jsx6("td", {
|
|
2009
2009
|
className: "px-4 py-3 align-top font-mono text-xs",
|
|
2010
2010
|
children: "ResolvedAppConfig"
|
|
2011
|
-
}
|
|
2012
|
-
/* @__PURE__ */
|
|
2011
|
+
}),
|
|
2012
|
+
/* @__PURE__ */ jsx6("td", {
|
|
2013
2013
|
className: "px-4 py-3 align-top",
|
|
2014
2014
|
children: "Runtime, ephemeral"
|
|
2015
|
-
}
|
|
2016
|
-
/* @__PURE__ */
|
|
2015
|
+
}),
|
|
2016
|
+
/* @__PURE__ */ jsx6("td", {
|
|
2017
2017
|
className: "px-4 py-3 align-top",
|
|
2018
2018
|
children: "In-memory, not persisted"
|
|
2019
|
-
}
|
|
2019
|
+
})
|
|
2020
2020
|
]
|
|
2021
|
-
}
|
|
2021
|
+
})
|
|
2022
2022
|
]
|
|
2023
|
-
}
|
|
2023
|
+
})
|
|
2024
2024
|
]
|
|
2025
|
-
}
|
|
2026
|
-
}
|
|
2025
|
+
})
|
|
2026
|
+
})
|
|
2027
2027
|
]
|
|
2028
|
-
}
|
|
2029
|
-
/* @__PURE__ */
|
|
2028
|
+
}),
|
|
2029
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
2030
2030
|
className: "space-y-4",
|
|
2031
2031
|
children: [
|
|
2032
|
-
/* @__PURE__ */
|
|
2032
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
2033
2033
|
className: "text-2xl font-bold",
|
|
2034
2034
|
children: "Key architectural principles"
|
|
2035
|
-
}
|
|
2036
|
-
/* @__PURE__ */
|
|
2035
|
+
}),
|
|
2036
|
+
/* @__PURE__ */ jsxs6("ul", {
|
|
2037
2037
|
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
2038
2038
|
children: [
|
|
2039
|
-
/* @__PURE__ */
|
|
2039
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
2040
2040
|
children: [
|
|
2041
|
-
/* @__PURE__ */
|
|
2041
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
2042
2042
|
children: "Spec-first"
|
|
2043
|
-
}
|
|
2043
|
+
}),
|
|
2044
2044
|
" - Everything is defined declaratively before code generation"
|
|
2045
2045
|
]
|
|
2046
|
-
}
|
|
2047
|
-
/* @__PURE__ */
|
|
2046
|
+
}),
|
|
2047
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
2048
2048
|
children: [
|
|
2049
|
-
/* @__PURE__ */
|
|
2049
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
2050
2050
|
children: "Type-safe"
|
|
2051
|
-
}
|
|
2051
|
+
}),
|
|
2052
2052
|
" - All specifications are strongly typed and validated at compile time"
|
|
2053
2053
|
]
|
|
2054
|
-
}
|
|
2055
|
-
/* @__PURE__ */
|
|
2054
|
+
}),
|
|
2055
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
2056
2056
|
children: [
|
|
2057
|
-
/* @__PURE__ */
|
|
2057
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
2058
2058
|
children: "Policy-enforced"
|
|
2059
|
-
}
|
|
2059
|
+
}),
|
|
2060
2060
|
" - Every operation passes through the PDP"
|
|
2061
2061
|
]
|
|
2062
|
-
}
|
|
2063
|
-
/* @__PURE__ */
|
|
2062
|
+
}),
|
|
2063
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
2064
2064
|
children: [
|
|
2065
|
-
/* @__PURE__ */
|
|
2065
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
2066
2066
|
children: "Multi-tenant by default"
|
|
2067
|
-
}
|
|
2067
|
+
}),
|
|
2068
2068
|
" - Tenant isolation is built-in, not bolted on"
|
|
2069
2069
|
]
|
|
2070
|
-
}
|
|
2071
|
-
/* @__PURE__ */
|
|
2070
|
+
}),
|
|
2071
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
2072
2072
|
children: [
|
|
2073
|
-
/* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
2074
2074
|
children: "Environment-aware"
|
|
2075
|
-
}
|
|
2075
|
+
}),
|
|
2076
2076
|
" - Separate configurations for sandbox, staging, production"
|
|
2077
2077
|
]
|
|
2078
|
-
}
|
|
2079
|
-
/* @__PURE__ */
|
|
2078
|
+
}),
|
|
2079
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
2080
2080
|
children: [
|
|
2081
|
-
/* @__PURE__ */
|
|
2081
|
+
/* @__PURE__ */ jsx6("strong", {
|
|
2082
2082
|
children: "Auditable"
|
|
2083
|
-
}
|
|
2083
|
+
}),
|
|
2084
2084
|
" - All operations are logged for compliance and debugging"
|
|
2085
2085
|
]
|
|
2086
|
-
}
|
|
2086
|
+
})
|
|
2087
2087
|
]
|
|
2088
|
-
}
|
|
2088
|
+
})
|
|
2089
2089
|
]
|
|
2090
|
-
}
|
|
2091
|
-
/* @__PURE__ */
|
|
2090
|
+
}),
|
|
2091
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
2092
2092
|
className: "flex items-center gap-4 pt-4",
|
|
2093
2093
|
children: [
|
|
2094
|
-
/* @__PURE__ */
|
|
2094
|
+
/* @__PURE__ */ jsxs6(Link6, {
|
|
2095
2095
|
href: "/docs/architecture/app-config",
|
|
2096
2096
|
className: "btn-primary",
|
|
2097
2097
|
children: [
|
|
2098
2098
|
"App Configuration ",
|
|
2099
|
-
/* @__PURE__ */
|
|
2099
|
+
/* @__PURE__ */ jsx6(ChevronRight6, {
|
|
2100
2100
|
size: 16
|
|
2101
|
-
}
|
|
2101
|
+
})
|
|
2102
2102
|
]
|
|
2103
|
-
}
|
|
2104
|
-
/* @__PURE__ */
|
|
2103
|
+
}),
|
|
2104
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
2105
2105
|
href: "/docs/architecture/control-plane",
|
|
2106
2106
|
className: "btn-ghost",
|
|
2107
2107
|
children: "Control Plane Runtime"
|
|
2108
|
-
}
|
|
2109
|
-
/* @__PURE__ */
|
|
2108
|
+
}),
|
|
2109
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
2110
2110
|
href: "/docs/integrations",
|
|
2111
2111
|
className: "btn-ghost",
|
|
2112
2112
|
children: "Integrations"
|
|
2113
|
-
}
|
|
2114
|
-
/* @__PURE__ */
|
|
2113
|
+
}),
|
|
2114
|
+
/* @__PURE__ */ jsx6(Link6, {
|
|
2115
2115
|
href: "/docs/knowledge",
|
|
2116
2116
|
className: "btn-ghost",
|
|
2117
2117
|
children: "Knowledge & Context"
|
|
2118
|
-
}
|
|
2118
|
+
})
|
|
2119
2119
|
]
|
|
2120
|
-
}
|
|
2120
|
+
})
|
|
2121
2121
|
]
|
|
2122
|
-
}
|
|
2122
|
+
});
|
|
2123
2123
|
}
|
|
2124
2124
|
export {
|
|
2125
2125
|
ArchitectureOverviewPage,
|