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