@contractspec/bundle.library 3.7.6 → 3.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +258 -252
- package/AGENTS.md +42 -24
- package/CHANGELOG.md +56 -0
- package/README.md +59 -37
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.js +842 -840
- package/dist/application/mcp/cliMcp.js +30 -30
- package/dist/application/mcp/common.d.ts +2 -2
- package/dist/application/mcp/common.js +2 -2
- package/dist/application/mcp/contractsMcp.d.ts +1 -1
- package/dist/application/mcp/contractsMcp.js +163 -163
- package/dist/application/mcp/docsMcp.js +31 -31
- package/dist/application/mcp/index.d.ts +2 -2
- package/dist/application/mcp/index.js +842 -840
- package/dist/application/mcp/internalMcp.js +30 -30
- package/dist/application/mcp/providerRankingMcp.js +35 -33
- package/dist/components/docs/DocsIndexPage.js +859 -212
- package/dist/components/docs/advanced/AdvancedMCPPage.js +15 -15
- package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
- package/dist/components/docs/advanced/AdvancedRenderersPage.js +7 -7
- package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
- package/dist/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
- package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
- package/dist/components/docs/advanced/index.d.ts +2 -2
- package/dist/components/docs/advanced/index.js +57 -57
- package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
- package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
- package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
- package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
- package/dist/components/docs/architecture/index.d.ts +3 -3
- package/dist/components/docs/architecture/index.js +145 -466
- package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
- package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
- package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
- package/dist/components/docs/comparison/ComparisonOverviewPage.js +4 -4
- package/dist/components/docs/comparison/ComparisonWindmillPage.js +6 -6
- package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
- package/dist/components/docs/comparison/index.d.ts +2 -2
- package/dist/components/docs/comparison/index.js +35 -35
- package/dist/components/docs/docsManifest.d.ts +42 -0
- package/dist/components/docs/docsManifest.js +612 -0
- package/dist/components/docs/ecosystem/IntegrationsPage.js +5 -5
- package/dist/components/docs/ecosystem/PluginsPage.js +7 -7
- package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/components/docs/ecosystem/TemplatesPage.js +11 -11
- package/dist/components/docs/ecosystem/index.d.ts +2 -2
- package/dist/components/docs/ecosystem/index.js +27 -27
- package/dist/components/docs/examples/DocsExamplesPage.js +59 -6
- package/dist/components/docs/examples/ExampleShowcasePage.d.ts +5 -0
- package/dist/components/docs/examples/ExampleShowcasePage.js +258 -0
- package/dist/components/docs/examples/exampleShowcaseData.d.ts +10 -0
- package/dist/components/docs/examples/exampleShowcaseData.js +53 -0
- package/dist/components/docs/examples/index.d.ts +1 -0
- package/dist/components/docs/examples/index.js +265 -6
- package/dist/components/docs/getting-started/CLIPage.js +9 -9
- package/dist/components/docs/getting-started/CompatibilityPage.js +12 -12
- package/dist/components/docs/getting-started/DataViewTutorialPage.js +7 -7
- package/dist/components/docs/getting-started/DeveloperToolsPage.js +10 -10
- package/dist/components/docs/getting-started/HelloWorldPage.js +8 -8
- package/dist/components/docs/getting-started/InstallationPage.js +10 -10
- package/dist/components/docs/getting-started/StartHerePage.js +8 -8
- package/dist/components/docs/getting-started/TroubleshootingPage.js +12 -12
- package/dist/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
- package/dist/components/docs/getting-started/index.d.ts +5 -5
- package/dist/components/docs/getting-started/index.js +89 -89
- package/dist/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
- package/dist/components/docs/guides/GuideContractTypesPage.js +33 -33
- package/dist/components/docs/guides/GuideDocsPipelinePage.js +13 -13
- package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
- package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
- package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
- package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
- package/dist/components/docs/guides/GuidesIndexPage.js +69 -46
- package/dist/components/docs/guides/index.d.ts +4 -4
- package/dist/components/docs/guides/index.js +174 -151
- package/dist/components/docs/index.d.ts +13 -12
- package/dist/components/docs/index.js +15220 -16233
- package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +11 -11
- package/dist/components/docs/integrations/IntegrationsGmailPage.js +7 -7
- package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
- package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsPowensPage.js +24 -24
- package/dist/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
- package/dist/components/docs/integrations/IntegrationsResendPage.js +7 -7
- package/dist/components/docs/integrations/IntegrationsS3Page.js +9 -9
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +11 -11
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
- package/dist/components/docs/integrations/IntegrationsStripePage.js +25 -25
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
- package/dist/components/docs/integrations/index.d.ts +1 -1
- package/dist/components/docs/integrations/index.js +614 -1231
- package/dist/components/docs/intent/ContractFirstApiPage.js +8 -8
- package/dist/components/docs/intent/DeterministicCodegenPage.js +9 -9
- package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
- package/dist/components/docs/intent/OpenapiAlternativePage.js +13 -13
- package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
- package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
- package/dist/components/docs/intent/index.d.ts +3 -3
- package/dist/components/docs/intent/index.js +766 -766
- package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
- package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
- package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
- package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
- package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
- package/dist/components/docs/knowledge/index.d.ts +1 -1
- package/dist/components/docs/knowledge/index.js +437 -785
- package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
- package/dist/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
- package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesContentGenPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesContractsPage.js +16 -16
- package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
- package/dist/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
- package/dist/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
- package/dist/components/docs/libraries/LibrariesGrowthPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
- package/dist/components/docs/libraries/LibrariesOverviewPage.js +117 -430
- package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesResiliencePage.js +6 -6
- package/dist/components/docs/libraries/LibrariesRuntimePage.js +13 -13
- package/dist/components/docs/libraries/LibrariesSLOPage.js +6 -6
- package/dist/components/docs/libraries/LibrariesSchemaPage.js +16 -16
- package/dist/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesTestingPage.js +7 -7
- package/dist/components/docs/libraries/LibrariesUIKitPage.js +10 -10
- package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
- package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
- package/dist/components/docs/libraries/index.d.ts +4 -4
- package/dist/components/docs/libraries/index.js +1308 -1621
- package/dist/components/docs/manifesto/ManifestoPage.js +33 -138
- package/dist/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
- package/dist/components/docs/ops/DistributedTracingOpsPage.js +5 -5
- package/dist/components/docs/ops/index.js +14 -14
- package/dist/components/docs/reference/DocsMarkdownContent.js +1 -1
- package/dist/components/docs/reference/DocsReferenceContent.js +2 -2
- package/dist/components/docs/reference/DocsReferenceIndexClient.js +8 -8
- package/dist/components/docs/reference/DocsReferenceIndexPage.js +8 -8
- package/dist/components/docs/reference/DocsReferencePage.js +2 -2
- package/dist/components/docs/reference/index.js +10 -10
- package/dist/components/docs/safety/SafetyAuditingPage.js +16 -16
- package/dist/components/docs/safety/SafetyMigrationsPage.js +15 -15
- package/dist/components/docs/safety/SafetyOverviewPage.js +69 -206
- package/dist/components/docs/safety/SafetyPDPPage.js +12 -12
- package/dist/components/docs/safety/SafetySecurityTrustPage.js +11 -11
- package/dist/components/docs/safety/SafetySigningPage.js +7 -7
- package/dist/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
- package/dist/components/docs/safety/index.d.ts +3 -3
- package/dist/components/docs/safety/index.js +616 -753
- package/dist/components/docs/shared/StudioPrompt.js +5 -5
- package/dist/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
- package/dist/components/docs/specs/SpecsDataViewsPage.js +14 -14
- package/dist/components/docs/specs/SpecsOverlaysPage.js +14 -14
- package/dist/components/docs/specs/SpecsOverviewPage.js +135 -297
- package/dist/components/docs/specs/SpecsPolicyPage.js +29 -29
- package/dist/components/docs/specs/SpecsWorkflowsPage.js +18 -18
- package/dist/components/docs/specs/index.d.ts +3 -3
- package/dist/components/docs/specs/index.js +814 -976
- package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/components/docs/studio/StudioOverviewPage.js +109 -56
- package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/components/docs/studio/index.d.ts +4 -4
- package/dist/components/docs/studio/index.js +170 -117
- package/dist/components/integrations/index.js +25 -25
- package/dist/components/integrations/molecules/IntegrationCard.js +5 -5
- package/dist/components/integrations/organisms/IntegrationMarketplace.js +12 -12
- package/dist/components/integrations/organisms/IntegrationSettings.js +7 -7
- package/dist/components/integrations/organisms/KnowledgeSourceList.js +6 -6
- package/dist/components/legal/PrivacyTemplate.js +67 -67
- package/dist/components/legal/TermsTemplate.js +54 -54
- package/dist/components/legal/index.js +121 -121
- package/dist/components/shared/FeatureGateNotice.js +4 -4
- package/dist/components/shared/index.js +4 -4
- package/dist/components/shell/WorkspaceHeader.js +4 -4
- package/dist/components/shell/WorkspaceProjectShellLayout.d.ts +3 -3
- package/dist/components/shell/WorkspaceProjectShellLayout.js +10 -10
- package/dist/components/shell/WorkspaceShellRenderer.d.ts +4 -4
- package/dist/components/shell/WorkspaceShellRenderer.js +8 -8
- package/dist/components/shell/WorkspaceSidebar.js +2 -2
- package/dist/components/shell/index.d.ts +1 -1
- package/dist/components/shell/index.js +12 -12
- package/dist/components/templates/engine/index.d.ts +1 -1
- package/dist/components/templates/index.d.ts +1 -1
- package/dist/components/templates/index.js +835 -835
- package/dist/components/templates/messaging/ConversationList.js +11 -11
- package/dist/components/templates/messaging/MessageComposer.js +11 -11
- package/dist/components/templates/messaging/MessageThread.js +6 -6
- package/dist/components/templates/messaging/MessagingWorkspace.js +23 -23
- package/dist/components/templates/messaging/index.d.ts +1 -1
- package/dist/components/templates/messaging/index.js +23 -23
- package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/components/templates/recipes/RecipeCard.js +5 -5
- package/dist/components/templates/recipes/RecipeDetail.js +8 -8
- package/dist/components/templates/recipes/RecipeList.js +17 -17
- package/dist/components/templates/recipes/index.d.ts +2 -2
- package/dist/components/templates/recipes/index.js +17 -17
- package/dist/components/templates/todos/FilterBar.d.ts +1 -1
- package/dist/components/templates/todos/FilterBar.js +9 -9
- package/dist/components/templates/todos/TaskForm.js +14 -14
- package/dist/components/templates/todos/TaskItem.js +4 -4
- package/dist/components/templates/todos/TaskList.js +30 -30
- package/dist/components/templates/todos/index.d.ts +2 -2
- package/dist/components/templates/todos/index.js +30 -30
- package/dist/config/index.d.ts +2 -2
- package/dist/features/contracts-registry.d.ts +3 -3
- package/dist/features/contracts-registry.js +15 -15
- package/dist/features/docs/docs.contracts.d.ts +1 -1
- package/dist/features/docs/docs.contracts.js +2 -2
- package/dist/features/docs/index.d.ts +1 -1
- package/dist/features/docs/index.js +2 -2
- package/dist/features/index.d.ts +4 -4
- package/dist/features/index.js +18 -18
- package/dist/features/registry.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +17034 -18047
- package/dist/libs/email/client.js +1 -1
- package/dist/libs/email/contact.js +1 -1
- package/dist/libs/email/newsletter.js +1 -1
- package/dist/libs/email/waitlist-application.js +1 -1
- package/dist/libs/email/waitlist.js +1 -1
- package/dist/libs/email.d.ts +1 -1
- package/dist/libs/email.js +1 -1
- package/dist/node/application/index.js +842 -840
- package/dist/node/application/mcp/cliMcp.js +30 -30
- package/dist/node/application/mcp/common.js +2 -2
- package/dist/node/application/mcp/contractsMcp.js +163 -163
- package/dist/node/application/mcp/docsMcp.js +31 -31
- package/dist/node/application/mcp/index.js +842 -840
- package/dist/node/application/mcp/internalMcp.js +30 -30
- package/dist/node/application/mcp/providerRankingMcp.js +35 -33
- package/dist/node/components/docs/DocsIndexPage.js +859 -212
- package/dist/node/components/docs/advanced/AdvancedMCPPage.js +15 -15
- package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
- package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +7 -7
- package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
- package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
- package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
- package/dist/node/components/docs/advanced/index.js +57 -57
- package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
- package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
- package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
- package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
- package/dist/node/components/docs/architecture/index.js +145 -466
- package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
- package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
- package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
- package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +4 -4
- package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +6 -6
- package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
- package/dist/node/components/docs/comparison/index.js +35 -35
- package/dist/node/components/docs/docsManifest.js +611 -0
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +5 -5
- package/dist/node/components/docs/ecosystem/PluginsPage.js +7 -7
- package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +11 -11
- package/dist/node/components/docs/ecosystem/index.js +27 -27
- package/dist/node/components/docs/examples/DocsExamplesPage.js +59 -6
- package/dist/node/components/docs/examples/ExampleShowcasePage.js +257 -0
- package/dist/node/components/docs/examples/exampleShowcaseData.js +52 -0
- package/dist/node/components/docs/examples/index.js +265 -6
- package/dist/node/components/docs/getting-started/CLIPage.js +9 -9
- package/dist/node/components/docs/getting-started/CompatibilityPage.js +12 -12
- package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +7 -7
- package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +10 -10
- package/dist/node/components/docs/getting-started/HelloWorldPage.js +8 -8
- package/dist/node/components/docs/getting-started/InstallationPage.js +10 -10
- package/dist/node/components/docs/getting-started/StartHerePage.js +8 -8
- package/dist/node/components/docs/getting-started/TroubleshootingPage.js +12 -12
- package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
- package/dist/node/components/docs/getting-started/index.js +89 -89
- package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
- package/dist/node/components/docs/guides/GuideContractTypesPage.js +33 -33
- package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +13 -13
- package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
- package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
- package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
- package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
- package/dist/node/components/docs/guides/GuidesIndexPage.js +69 -46
- package/dist/node/components/docs/guides/index.js +174 -151
- package/dist/node/components/docs/index.js +15220 -16233
- package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +11 -11
- package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +7 -7
- package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
- package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +24 -24
- package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
- package/dist/node/components/docs/integrations/IntegrationsResendPage.js +7 -7
- package/dist/node/components/docs/integrations/IntegrationsS3Page.js +9 -9
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +11 -11
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
- package/dist/node/components/docs/integrations/IntegrationsStripePage.js +25 -25
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
- package/dist/node/components/docs/integrations/index.js +614 -1231
- package/dist/node/components/docs/intent/ContractFirstApiPage.js +8 -8
- package/dist/node/components/docs/intent/DeterministicCodegenPage.js +9 -9
- package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
- package/dist/node/components/docs/intent/OpenapiAlternativePage.js +13 -13
- package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
- package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
- package/dist/node/components/docs/intent/index.js +766 -766
- package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
- package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
- package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
- package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
- package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
- package/dist/node/components/docs/knowledge/index.js +437 -785
- package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
- package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
- package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesContractsPage.js +16 -16
- package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
- package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
- package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
- package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +117 -430
- package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +13 -13
- package/dist/node/components/docs/libraries/LibrariesSLOPage.js +6 -6
- package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +16 -16
- package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesTestingPage.js +7 -7
- package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +10 -10
- package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
- package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
- package/dist/node/components/docs/libraries/index.js +1308 -1621
- package/dist/node/components/docs/manifesto/ManifestoPage.js +33 -138
- package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
- package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +5 -5
- package/dist/node/components/docs/ops/index.js +14 -14
- package/dist/node/components/docs/reference/DocsMarkdownContent.js +1 -1
- package/dist/node/components/docs/reference/DocsReferenceContent.js +2 -2
- package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +8 -8
- package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +8 -8
- package/dist/node/components/docs/reference/DocsReferencePage.js +2 -2
- package/dist/node/components/docs/reference/index.js +10 -10
- package/dist/node/components/docs/safety/SafetyAuditingPage.js +16 -16
- package/dist/node/components/docs/safety/SafetyMigrationsPage.js +15 -15
- package/dist/node/components/docs/safety/SafetyOverviewPage.js +69 -206
- package/dist/node/components/docs/safety/SafetyPDPPage.js +12 -12
- package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +11 -11
- package/dist/node/components/docs/safety/SafetySigningPage.js +7 -7
- package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
- package/dist/node/components/docs/safety/index.js +616 -753
- package/dist/node/components/docs/shared/StudioPrompt.js +5 -5
- package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
- package/dist/node/components/docs/specs/SpecsDataViewsPage.js +14 -14
- package/dist/node/components/docs/specs/SpecsOverlaysPage.js +14 -14
- package/dist/node/components/docs/specs/SpecsOverviewPage.js +135 -297
- package/dist/node/components/docs/specs/SpecsPolicyPage.js +29 -29
- package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +18 -18
- package/dist/node/components/docs/specs/index.js +814 -976
- package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
- package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
- package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
- package/dist/node/components/docs/studio/StudioOverviewPage.js +109 -56
- package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
- package/dist/node/components/docs/studio/index.js +170 -117
- package/dist/node/components/integrations/index.js +25 -25
- package/dist/node/components/integrations/molecules/IntegrationCard.js +5 -5
- package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +12 -12
- package/dist/node/components/integrations/organisms/IntegrationSettings.js +7 -7
- package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +6 -6
- package/dist/node/components/legal/PrivacyTemplate.js +67 -67
- package/dist/node/components/legal/TermsTemplate.js +54 -54
- package/dist/node/components/legal/index.js +121 -121
- package/dist/node/components/shared/FeatureGateNotice.js +4 -4
- package/dist/node/components/shared/index.js +4 -4
- package/dist/node/components/shell/WorkspaceHeader.js +4 -4
- package/dist/node/components/shell/WorkspaceProjectShellLayout.js +10 -10
- package/dist/node/components/shell/WorkspaceShellRenderer.js +8 -8
- package/dist/node/components/shell/WorkspaceSidebar.js +2 -2
- package/dist/node/components/shell/index.js +12 -12
- package/dist/node/components/templates/index.js +835 -835
- package/dist/node/components/templates/messaging/ConversationList.js +11 -11
- package/dist/node/components/templates/messaging/MessageComposer.js +11 -11
- package/dist/node/components/templates/messaging/MessageThread.js +6 -6
- package/dist/node/components/templates/messaging/MessagingWorkspace.js +23 -23
- package/dist/node/components/templates/messaging/index.js +23 -23
- package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
- package/dist/node/components/templates/recipes/RecipeCard.js +5 -5
- package/dist/node/components/templates/recipes/RecipeDetail.js +8 -8
- package/dist/node/components/templates/recipes/RecipeList.js +17 -17
- package/dist/node/components/templates/recipes/index.js +17 -17
- package/dist/node/components/templates/todos/FilterBar.js +9 -9
- package/dist/node/components/templates/todos/TaskForm.js +14 -14
- package/dist/node/components/templates/todos/TaskItem.js +4 -4
- package/dist/node/components/templates/todos/TaskList.js +30 -30
- package/dist/node/components/templates/todos/index.js +30 -30
- package/dist/node/features/contracts-registry.js +15 -15
- package/dist/node/features/docs/docs.contracts.js +2 -2
- package/dist/node/features/docs/index.js +2 -2
- package/dist/node/features/index.js +18 -18
- package/dist/node/features/registry.js +1 -1
- package/dist/node/index.js +17034 -18047
- package/dist/node/libs/email/client.js +1 -1
- package/dist/node/libs/email/contact.js +1 -1
- package/dist/node/libs/email/newsletter.js +1 -1
- package/dist/node/libs/email/waitlist-application.js +1 -1
- package/dist/node/libs/email/waitlist.js +1 -1
- package/dist/node/libs/email.js +1 -1
- package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
- package/dist/node/presentation/features/atoms/FeatureIcon/index.js +7 -7
- package/dist/node/presentation/features/atoms/index.js +7 -7
- package/dist/node/presentation/features/hooks/index.js +56 -56
- package/dist/node/presentation/features/hooks/useContractsRegistry.js +18 -18
- package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/node/presentation/features/index.js +1364 -1364
- package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureCard/index.js +15 -15
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
- package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
- package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
- package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
- package/dist/node/presentation/features/molecules/index.js +77 -77
- package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +18 -18
- package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
- package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
- package/dist/node/presentation/features/organisms/FeatureEventsList.js +18 -18
- package/dist/node/presentation/features/organisms/FeatureFormsList.js +18 -18
- package/dist/node/presentation/features/organisms/FeatureOperationsList.js +15 -15
- package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +18 -18
- package/dist/node/presentation/features/organisms/index.js +401 -401
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
- package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
- package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
- package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
- package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
- package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
- package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
- package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
- package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
- package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
- package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
- package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
- package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
- package/dist/presentation/features/atoms/FeatureIcon/index.d.ts +1 -1
- package/dist/presentation/features/atoms/FeatureIcon/index.js +7 -7
- package/dist/presentation/features/atoms/index.js +7 -7
- package/dist/presentation/features/hooks/index.d.ts +3 -3
- package/dist/presentation/features/hooks/index.js +56 -56
- package/dist/presentation/features/hooks/useContractsRegistry.js +18 -18
- package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
- package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
- package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
- package/dist/presentation/features/index.d.ts +14 -14
- package/dist/presentation/features/index.js +1364 -1364
- package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
- package/dist/presentation/features/molecules/FeatureCard/index.js +15 -15
- package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
- package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
- package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
- package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
- package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
- package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
- package/dist/presentation/features/molecules/index.d.ts +1 -1
- package/dist/presentation/features/molecules/index.js +77 -77
- package/dist/presentation/features/organisms/FeatureDataViewsList.js +18 -18
- package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
- package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts +1 -1
- package/dist/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
- package/dist/presentation/features/organisms/FeatureEventsList.js +18 -18
- package/dist/presentation/features/organisms/FeatureFormsList.js +18 -18
- package/dist/presentation/features/organisms/FeatureOperationsList.js +15 -15
- package/dist/presentation/features/organisms/FeaturePresentationsList.js +18 -18
- package/dist/presentation/features/organisms/index.d.ts +4 -4
- package/dist/presentation/features/organisms/index.js +401 -401
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
- package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts +1 -1
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
- package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
- package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
- package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
- package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
- package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
- package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
- package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
- package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
- package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
- package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
- package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
- package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
- package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
- package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
- package/package.json +70 -32
- package/src/__tests__/env-setup.ts +1 -1
- package/src/__tests__/mocks/prisma.ts +78 -78
- package/src/__tests__/setup.ts +2 -2
- package/src/application/context-storage/index.ts +42 -42
- package/src/application/index.ts +1 -1
- package/src/application/mcp/cliMcp.ts +221 -221
- package/src/application/mcp/common.ts +210 -210
- package/src/application/mcp/contractsMcp.ts +15 -15
- package/src/application/mcp/contractsMcpResources.ts +119 -119
- package/src/application/mcp/contractsMcpTools.ts +218 -218
- package/src/application/mcp/contractsMcpTypes.ts +35 -35
- package/src/application/mcp/docsMcp.ts +173 -173
- package/src/application/mcp/index.ts +2 -2
- package/src/application/mcp/internalMcp.ts +204 -204
- package/src/application/mcp/providerRankingMcp.ts +346 -344
- package/src/bundles/LibraryBundle.ts +136 -136
- package/src/components/docs/DocsIndexPage.tsx +189 -241
- package/src/components/docs/advanced/AdvancedMCPPage.tsx +168 -168
- package/src/components/docs/advanced/AdvancedOverlayEditorPage.tsx +52 -52
- package/src/components/docs/advanced/AdvancedRenderersPage.tsx +53 -53
- package/src/components/docs/advanced/AdvancedSpecExperimentsPage.tsx +48 -48
- package/src/components/docs/advanced/AdvancedTelemetryPage.tsx +205 -205
- package/src/components/docs/advanced/AdvancedWorkflowMonitoringPage.tsx +42 -42
- package/src/components/docs/advanced/index.ts +2 -2
- package/src/components/docs/architecture/ArchitectureAppConfigPage.tsx +127 -127
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +79 -79
- package/src/components/docs/architecture/ArchitectureIntegrationBindingPage.tsx +147 -147
- package/src/components/docs/architecture/ArchitectureKnowledgeBindingPage.tsx +193 -193
- package/src/components/docs/architecture/ArchitectureMultiTenancyPage.tsx +73 -73
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +98 -273
- package/src/components/docs/architecture/index.ts +3 -3
- package/src/components/docs/comparison/ComparisonAutomationPlatformsPage.tsx +137 -137
- package/src/components/docs/comparison/ComparisonEnterprisePlatformsPage.tsx +138 -138
- package/src/components/docs/comparison/ComparisonInternalToolBuildersPage.tsx +147 -147
- package/src/components/docs/comparison/ComparisonOverviewPage.tsx +106 -106
- package/src/components/docs/comparison/ComparisonWindmillPage.tsx +143 -143
- package/src/components/docs/comparison/ComparisonWorkflowEnginesPage.tsx +168 -168
- package/src/components/docs/comparison/index.ts +2 -2
- package/src/components/docs/docsManifest.ts +720 -0
- package/src/components/docs/ecosystem/IntegrationsPage.tsx +45 -45
- package/src/components/docs/ecosystem/PluginsPage.tsx +77 -77
- package/src/components/docs/ecosystem/RegistryPage.tsx +48 -48
- package/src/components/docs/ecosystem/TemplatesPage.tsx +52 -52
- package/src/components/docs/ecosystem/ecosystem.docblocks.ts +42 -42
- package/src/components/docs/ecosystem/index.ts +2 -2
- package/src/components/docs/examples/DocsExamplesPage.tsx +78 -66
- package/src/components/docs/examples/ExampleShowcasePage.tsx +122 -0
- package/src/components/docs/examples/exampleShowcaseData.ts +65 -0
- package/src/components/docs/examples/index.ts +1 -0
- package/src/components/docs/generated/docs-index._common.json +1757 -1757
- package/src/components/docs/generated/docs-index.agent-console.json +376 -376
- package/src/components/docs/generated/docs-index.ai-chat-assistant.json +8 -8
- package/src/components/docs/generated/docs-index.ai-chat.json +104 -104
- package/src/components/docs/generated/docs-index.ai-support-bot.json +8 -8
- package/src/components/docs/generated/docs-index.analytics-dashboard.json +168 -168
- package/src/components/docs/generated/docs-index.app-config.json +136 -136
- package/src/components/docs/generated/docs-index.audit-trail.json +48 -48
- package/src/components/docs/generated/docs-index.calendar-google.json +8 -8
- package/src/components/docs/generated/docs-index.content-generation.json +8 -8
- package/src/components/docs/generated/docs-index.crm-pipeline.json +160 -160
- package/src/components/docs/generated/docs-index.email-gmail.json +8 -8
- package/src/components/docs/generated/docs-index.feature-flags.json +216 -216
- package/src/components/docs/generated/docs-index.files.json +176 -176
- package/src/components/docs/generated/docs-index.generated.ts +19 -19
- package/src/components/docs/generated/docs-index.health.json +96 -96
- package/src/components/docs/generated/docs-index.identity-rbac.json +312 -312
- package/src/components/docs/generated/docs-index.in-app-docs.json +8 -8
- package/src/components/docs/generated/docs-index.integration-hub.json +264 -264
- package/src/components/docs/generated/docs-index.integration-posthog.json +8 -8
- package/src/components/docs/generated/docs-index.integration-stripe.json +8 -8
- package/src/components/docs/generated/docs-index.integration-supabase.json +8 -8
- package/src/components/docs/generated/docs-index.jobs.json +136 -136
- package/src/components/docs/generated/docs-index.kb-update-pipeline.json +128 -128
- package/src/components/docs/generated/docs-index.knowledge-canon.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +48 -48
- package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +48 -48
- package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-registry.json +32 -32
- package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +48 -48
- package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +8 -8
- package/src/components/docs/generated/docs-index.learning-journey.json +216 -216
- package/src/components/docs/generated/docs-index.learning-patterns.json +8 -8
- package/src/components/docs/generated/docs-index.lifecycle-cli.json +8 -8
- package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +8 -8
- package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +48 -48
- package/src/components/docs/generated/docs-index.manifest.json +376 -376
- package/src/components/docs/generated/docs-index.marketplace.json +336 -336
- package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +8 -8
- package/src/components/docs/generated/docs-index.meeting-recorder.json +48 -48
- package/src/components/docs/generated/docs-index.metrics.json +200 -200
- package/src/components/docs/generated/docs-index.minimal.json +16 -16
- package/src/components/docs/generated/docs-index.notifications.json +64 -64
- package/src/components/docs/generated/docs-index.openbanking-powens.json +8 -8
- package/src/components/docs/generated/docs-index.openbanking.json +64 -64
- package/src/components/docs/generated/docs-index.opencode-cli.json +16 -16
- package/src/components/docs/generated/docs-index.personalization.json +8 -8
- package/src/components/docs/generated/docs-index.platform-acp.json +72 -72
- package/src/components/docs/generated/docs-index.platform-agent.json +96 -96
- package/src/components/docs/generated/docs-index.platform-context.json +56 -56
- package/src/components/docs/generated/docs-index.platform-database.json +48 -48
- package/src/components/docs/generated/docs-index.platform-docs.json +88 -88
- package/src/components/docs/generated/docs-index.platform-integrations.json +320 -320
- package/src/components/docs/generated/docs-index.platform-knowledge.json +56 -56
- package/src/components/docs/generated/docs-index.platform-provider-ranking.json +96 -96
- package/src/components/docs/generated/docs-index.pocket-family-office.json +120 -120
- package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +8 -8
- package/src/components/docs/generated/docs-index.product-intent.json +8 -8
- package/src/components/docs/generated/docs-index.project-management-sync.json +8 -8
- package/src/components/docs/generated/docs-index.saas-boilerplate.json +208 -208
- package/src/components/docs/generated/docs-index.service-business-os.json +192 -192
- package/src/components/docs/generated/docs-index.team-hub.json +184 -184
- package/src/components/docs/generated/docs-index.unknown.json +512 -512
- package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +80 -80
- package/src/components/docs/generated/docs-index.video-api-showcase.json +32 -32
- package/src/components/docs/generated/docs-index.video-docs-terminal.json +8 -8
- package/src/components/docs/generated/docs-index.video-marketing-clip.json +8 -8
- package/src/components/docs/generated/docs-index.voice-providers.json +8 -8
- package/src/components/docs/generated/docs-index.wealth-snapshot.json +152 -152
- package/src/components/docs/generated/docs-index.workflow-system.json +432 -432
- package/src/components/docs/generated/docs-index.workspace-cli.json +8 -8
- package/src/components/docs/generated/index.ts +6 -6
- package/src/components/docs/generated/loader.ts +49 -49
- package/src/components/docs/getting-started/CLIPage.tsx +157 -157
- package/src/components/docs/getting-started/CompatibilityPage.tsx +69 -69
- package/src/components/docs/getting-started/DataViewTutorialPage.tsx +63 -63
- package/src/components/docs/getting-started/DeveloperToolsPage.tsx +141 -140
- package/src/components/docs/getting-started/HelloWorldPage.tsx +88 -88
- package/src/components/docs/getting-started/InstallationPage.tsx +78 -78
- package/src/components/docs/getting-started/StartHerePage.tsx +64 -64
- package/src/components/docs/getting-started/TroubleshootingPage.tsx +68 -68
- package/src/components/docs/getting-started/VSCodeExtensionPage.tsx +233 -233
- package/src/components/docs/getting-started/getting-started.docblocks.ts +30 -30
- package/src/components/docs/getting-started/index.ts +6 -5
- package/src/components/docs/guides/GuideCIDiffGatingPage.tsx +88 -88
- package/src/components/docs/guides/GuideContractTypesPage.tsx +266 -266
- package/src/components/docs/guides/GuideDocsPipelinePage.tsx +78 -78
- package/src/components/docs/guides/GuideGenerateDocsClientsSchemasPage.tsx +89 -89
- package/src/components/docs/guides/GuideImportExistingCodebasesPage.tsx +360 -360
- package/src/components/docs/guides/GuideNextjsOneEndpointPage.tsx +117 -117
- package/src/components/docs/guides/GuideSpecValidationTypingPage.tsx +82 -82
- package/src/components/docs/guides/GuidesIndexPage.tsx +109 -99
- package/src/components/docs/guides/guides.docblocks.ts +60 -60
- package/src/components/docs/guides/index.ts +4 -4
- package/src/components/docs/index.ts +26 -40
- package/src/components/docs/integrations/IntegrationsCircuitBreakersPage.tsx +22 -22
- package/src/components/docs/integrations/IntegrationsElevenLabsPage.tsx +41 -41
- package/src/components/docs/integrations/IntegrationsGithubPage.tsx +66 -66
- package/src/components/docs/integrations/IntegrationsGmailPage.tsx +44 -44
- package/src/components/docs/integrations/IntegrationsGoogleCalendarPage.tsx +31 -31
- package/src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx +80 -80
- package/src/components/docs/integrations/IntegrationsMistralPage.tsx +65 -65
- package/src/components/docs/integrations/IntegrationsOpenAIPage.tsx +54 -54
- package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +124 -529
- package/src/components/docs/integrations/IntegrationsPostmarkPage.tsx +97 -97
- package/src/components/docs/integrations/IntegrationsPowensPage.tsx +165 -165
- package/src/components/docs/integrations/IntegrationsQdrantPage.tsx +44 -44
- package/src/components/docs/integrations/IntegrationsResendPage.tsx +40 -40
- package/src/components/docs/integrations/IntegrationsS3Page.tsx +48 -48
- package/src/components/docs/integrations/IntegrationsSlackPage.tsx +70 -70
- package/src/components/docs/integrations/IntegrationsSpecModelPage.tsx +139 -139
- package/src/components/docs/integrations/IntegrationsStripePage.tsx +153 -153
- package/src/components/docs/integrations/IntegrationsTwilioPage.tsx +50 -50
- package/src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx +69 -69
- package/src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx +73 -73
- package/src/components/docs/integrations/index.ts +1 -1
- package/src/components/docs/intent/ContractFirstApiPage.tsx +61 -61
- package/src/components/docs/intent/DeterministicCodegenPage.tsx +81 -80
- package/src/components/docs/intent/GenerateClientFromSchemaPage.tsx +108 -108
- package/src/components/docs/intent/OpenapiAlternativePage.tsx +98 -98
- package/src/components/docs/intent/SchemaValidationTypescriptPage.tsx +79 -79
- package/src/components/docs/intent/SpecDrivenDevelopmentPage.tsx +67 -67
- package/src/components/docs/intent/index.ts +3 -3
- package/src/components/docs/intent/intent-pages.docblocks.ts +186 -186
- package/src/components/docs/knowledge/KnowledgeCategoriesPage.tsx +304 -304
- package/src/components/docs/knowledge/KnowledgeExamplesPage.tsx +84 -84
- package/src/components/docs/knowledge/KnowledgeOverviewPage.tsx +76 -285
- package/src/components/docs/knowledge/KnowledgeSourcesPage.tsx +171 -171
- package/src/components/docs/knowledge/KnowledgeSpacesPage.tsx +132 -132
- package/src/components/docs/knowledge/index.ts +1 -1
- package/src/components/docs/libraries/LibrariesAccessibilityPage.tsx +95 -95
- package/src/components/docs/libraries/LibrariesAiAgentPage.tsx +58 -58
- package/src/components/docs/libraries/LibrariesAnalyticsPage.tsx +39 -39
- package/src/components/docs/libraries/LibrariesContentGenPage.tsx +41 -41
- package/src/components/docs/libraries/LibrariesContractsPage.tsx +132 -132
- package/src/components/docs/libraries/LibrariesCostTrackingPage.tsx +47 -47
- package/src/components/docs/libraries/LibrariesDataBackendPage.tsx +73 -73
- package/src/components/docs/libraries/LibrariesDataViewsPage.tsx +76 -76
- package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +115 -115
- package/src/components/docs/libraries/LibrariesEvolutionPage.tsx +64 -64
- package/src/components/docs/libraries/LibrariesGraphQLPage.tsx +92 -92
- package/src/components/docs/libraries/LibrariesGrowthPage.tsx +37 -37
- package/src/components/docs/libraries/LibrariesMultiTenancyPage.tsx +47 -47
- package/src/components/docs/libraries/LibrariesObservabilityPage.tsx +58 -58
- package/src/components/docs/libraries/LibrariesOverlayEnginePage.tsx +51 -51
- package/src/components/docs/libraries/LibrariesOverviewPage.tsx +137 -301
- package/src/components/docs/libraries/LibrariesPersonalizationPage.tsx +57 -57
- package/src/components/docs/libraries/LibrariesProgressiveDeliveryPage.tsx +51 -51
- package/src/components/docs/libraries/LibrariesResiliencePage.tsx +54 -54
- package/src/components/docs/libraries/LibrariesRuntimePage.tsx +96 -96
- package/src/components/docs/libraries/LibrariesSLOPage.tsx +52 -52
- package/src/components/docs/libraries/LibrariesSchemaPage.tsx +131 -131
- package/src/components/docs/libraries/LibrariesSupportBotPage.tsx +59 -59
- package/src/components/docs/libraries/LibrariesTestingPage.tsx +64 -64
- package/src/components/docs/libraries/LibrariesUIKitPage.tsx +85 -85
- package/src/components/docs/libraries/LibrariesWorkflowComposerPage.tsx +38 -38
- package/src/components/docs/libraries/LibrariesWorkflowsPage.tsx +79 -79
- package/src/components/docs/libraries/index.ts +4 -4
- package/src/components/docs/manifesto/ManifestoPage.tsx +61 -132
- package/src/components/docs/ops/AutoEvolutionOpsPage.tsx +81 -81
- package/src/components/docs/ops/DistributedTracingOpsPage.tsx +28 -28
- package/src/components/docs/ops/ops-lifecycle.docblocks.ts +32 -32
- package/src/components/docs/ops/ops-runbooks-a.docblocks.ts +60 -60
- package/src/components/docs/ops/ops-runbooks-b.docblocks.ts +60 -60
- package/src/components/docs/ops/ops-slo-tenant.docblocks.ts +61 -61
- package/src/components/docs/ops/ops-top.docs.ts +10 -10
- package/src/components/docs/ops/ops.docs.ts +6 -6
- package/src/components/docs/product/product.docblocks.ts +60 -60
- package/src/components/docs/reference/DocsMarkdownContent.tsx +74 -74
- package/src/components/docs/reference/DocsReferenceContent.tsx +51 -51
- package/src/components/docs/reference/DocsReferenceIndexClient.tsx +106 -105
- package/src/components/docs/reference/DocsReferenceIndexPage.tsx +2 -2
- package/src/components/docs/reference/DocsReferencePage.tsx +3 -3
- package/src/components/docs/reference/docsMarkdownParser.ts +90 -90
- package/src/components/docs/safety/SafetyAuditingPage.tsx +189 -189
- package/src/components/docs/safety/SafetyMigrationsPage.tsx +189 -189
- package/src/components/docs/safety/SafetyOverviewPage.tsx +70 -157
- package/src/components/docs/safety/SafetyPDPPage.tsx +163 -163
- package/src/components/docs/safety/SafetySecurityTrustPage.tsx +89 -89
- package/src/components/docs/safety/SafetySigningPage.tsx +38 -38
- package/src/components/docs/safety/SafetyTenantIsolationPage.tsx +39 -39
- package/src/components/docs/safety/index.ts +3 -3
- package/src/components/docs/shared/StudioPrompt.tsx +17 -17
- package/src/components/docs/specs/SpecsCapabilitiesPage.tsx +79 -79
- package/src/components/docs/specs/SpecsDataViewsPage.tsx +142 -142
- package/src/components/docs/specs/SpecsOverlaysPage.tsx +202 -202
- package/src/components/docs/specs/SpecsOverviewPage.tsx +118 -193
- package/src/components/docs/specs/SpecsPolicyPage.tsx +233 -233
- package/src/components/docs/specs/SpecsWorkflowsPage.tsx +156 -156
- package/src/components/docs/specs/index.ts +3 -3
- package/src/components/docs/studio/StudioBYOKPage.tsx +11 -11
- package/src/components/docs/studio/StudioDeploymentsPage.tsx +11 -11
- package/src/components/docs/studio/StudioGettingStartedPage.tsx +11 -11
- package/src/components/docs/studio/StudioIntegrationsPage.tsx +11 -11
- package/src/components/docs/studio/StudioOverviewPage.tsx +94 -73
- package/src/components/docs/studio/StudioVisualBuilderPage.tsx +11 -11
- package/src/components/docs/studio/index.ts +4 -4
- package/src/components/docs/tech/contracts/tech-docs.docblocks.ts +10 -10
- package/src/components/integrations/molecules/IntegrationCard.tsx +71 -72
- package/src/components/integrations/organisms/IntegrationMarketplace.tsx +116 -116
- package/src/components/integrations/organisms/IntegrationSettings.tsx +201 -201
- package/src/components/integrations/organisms/KnowledgeSourceList.tsx +93 -94
- package/src/components/legal/PrivacyTemplate.tsx +611 -611
- package/src/components/legal/TermsTemplate.tsx +675 -675
- package/src/components/shared/FeatureGateNotice.tsx +26 -27
- package/src/components/shell/WorkspaceHeader.tsx +80 -80
- package/src/components/shell/WorkspaceProjectShellLayout.tsx +59 -58
- package/src/components/shell/WorkspaceShellRenderer.tsx +69 -68
- package/src/components/shell/WorkspaceSidebar.tsx +58 -58
- package/src/components/shell/index.ts +1 -1
- package/src/components/templates/engine/index.ts +29 -28
- package/src/components/templates/index.ts +1 -1
- package/src/components/templates/messaging/ConversationList.tsx +68 -69
- package/src/components/templates/messaging/MessageComposer.tsx +59 -59
- package/src/components/templates/messaging/MessageThread.tsx +73 -74
- package/src/components/templates/messaging/MessagingWorkspace.tsx +18 -19
- package/src/components/templates/messaging/index.ts +1 -1
- package/src/components/templates/messaging/types.ts +17 -17
- package/src/components/templates/recipes/LanguageSwitcher.tsx +20 -20
- package/src/components/templates/recipes/RecipeCard.tsx +56 -56
- package/src/components/templates/recipes/RecipeDetail.tsx +43 -43
- package/src/components/templates/recipes/RecipeList.tsx +62 -63
- package/src/components/templates/recipes/index.ts +2 -2
- package/src/components/templates/recipes/types.ts +24 -24
- package/src/components/templates/todos/FilterBar.tsx +84 -84
- package/src/components/templates/todos/TaskForm.tsx +118 -119
- package/src/components/templates/todos/TaskItem.tsx +78 -78
- package/src/components/templates/todos/TaskList.tsx +106 -107
- package/src/components/templates/todos/index.ts +2 -2
- package/src/components/templates/todos/types.ts +11 -11
- package/src/config/contractspec-blueprint.ts +55 -55
- package/src/config/contractspec-branding.ts +37 -37
- package/src/config/contractspec-routes.ts +22 -22
- package/src/config/index.ts +14 -15
- package/src/features/contracts-registry.ts +118 -118
- package/src/features/docs/docs.contracts.ts +6 -6
- package/src/features/docs/index.ts +6 -6
- package/src/features/docs.feature.ts +27 -27
- package/src/features/index.ts +59 -63
- package/src/features/mcp.feature.ts +24 -24
- package/src/features/presentations.feature.ts +27 -27
- package/src/features/registry.ts +14 -14
- package/src/index.ts +2 -2
- package/src/infrastructure/elysia/logger.ts +21 -21
- package/src/libs/email/client.test.ts +81 -81
- package/src/libs/email/client.ts +111 -111
- package/src/libs/email/contact.ts +35 -35
- package/src/libs/email/newsletter.ts +46 -46
- package/src/libs/email/types.ts +29 -29
- package/src/libs/email/utils.ts +5 -5
- package/src/libs/email/waitlist-application.ts +69 -69
- package/src/libs/email/waitlist.ts +46 -46
- package/src/libs/email.ts +7 -7
- package/src/libs/posthog/client.ts +44 -44
- package/src/libs/posthog/native.ts +23 -22
- package/src/libs/posthog/server.ts +7 -7
- package/src/libs/pricing-examples.ts +12 -12
- package/src/presentation/features/atoms/FeatureIcon/FeatureIcon.tsx +90 -90
- package/src/presentation/features/atoms/FeatureIcon/index.ts +3 -3
- package/src/presentation/features/hooks/index.ts +9 -9
- package/src/presentation/features/hooks/useContractsRegistry.ts +23 -23
- package/src/presentation/features/hooks/useFeatureFilters.ts +117 -117
- package/src/presentation/features/hooks/useFeatureRegistry.ts +40 -40
- package/src/presentation/features/hooks/useRelatedDocs.ts +28 -28
- package/src/presentation/features/index.ts +50 -52
- package/src/presentation/features/molecules/FeatureCard/FeatureCard.tsx +80 -80
- package/src/presentation/features/molecules/FeatureCard/types.ts +6 -6
- package/src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx +54 -54
- package/src/presentation/features/molecules/FeatureCategoryHeader/index.ts +2 -2
- package/src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx +67 -67
- package/src/presentation/features/molecules/FeatureFilters/types.ts +20 -20
- package/src/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.tsx +120 -121
- package/src/presentation/features/molecules/FeatureHoverPreview/index.ts +2 -2
- package/src/presentation/features/molecules/index.ts +8 -8
- package/src/presentation/features/organisms/FeatureDataViewsList.tsx +21 -21
- package/src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx +86 -86
- package/src/presentation/features/organisms/FeatureDetail/types.ts +4 -4
- package/src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx +210 -210
- package/src/presentation/features/organisms/FeatureDiscovery/index.ts +3 -3
- package/src/presentation/features/organisms/FeatureDiscovery/types.ts +10 -10
- package/src/presentation/features/organisms/FeatureEventsList.tsx +19 -19
- package/src/presentation/features/organisms/FeatureFormsList.tsx +19 -19
- package/src/presentation/features/organisms/FeatureOperationsList.tsx +21 -21
- package/src/presentation/features/organisms/FeaturePresentationsList.tsx +21 -21
- package/src/presentation/features/organisms/index.ts +6 -6
- package/src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx +219 -219
- package/src/presentation/features/templates/FeatureDataViewDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.tsx +195 -195
- package/src/presentation/features/templates/FeatureEventDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.tsx +216 -216
- package/src/presentation/features/templates/FeatureFormDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx +228 -228
- package/src/presentation/features/templates/FeatureOperationDetailTemplate/types.ts +7 -7
- package/src/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.tsx +26 -26
- package/src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx +24 -24
- package/src/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.tsx +201 -201
- package/src/presentation/features/templates/FeaturePresentationDetailTemplate/types.ts +8 -8
- package/src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx +26 -26
- package/src/presentation/features/templates/types.ts +2 -2
- package/tsconfig.json +12 -12
- package/tsdown.config.js +5 -5
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
// src/components/docs/integrations/
|
|
2
|
-
import Link from "@contractspec/lib.ui-link";
|
|
3
|
-
import { ChevronRight } from "lucide-react";
|
|
1
|
+
// src/components/docs/integrations/IntegrationsCircuitBreakersPage.tsx
|
|
4
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
function
|
|
3
|
+
function IntegrationsCircuitBreakersPage() {
|
|
6
4
|
return /* @__PURE__ */ jsxs("div", {
|
|
7
5
|
className: "space-y-8",
|
|
8
6
|
children: [
|
|
@@ -10,726 +8,12 @@ function IntegrationsOverviewPage() {
|
|
|
10
8
|
className: "space-y-4",
|
|
11
9
|
children: [
|
|
12
10
|
/* @__PURE__ */ jsx("h1", {
|
|
13
|
-
className: "text-4xl
|
|
14
|
-
children: "
|
|
15
|
-
}),
|
|
16
|
-
/* @__PURE__ */ jsx("p", {
|
|
17
|
-
className: "text-muted-foreground",
|
|
18
|
-
children: "ContractSpec provides first-class integration support through a spec-first architecture. Integrations are defined globally, connected per-tenant, and bound to apps through typed specifications, ensuring type-safe, policy-enforced access to external services."
|
|
19
|
-
})
|
|
20
|
-
]
|
|
21
|
-
}),
|
|
22
|
-
/* @__PURE__ */ jsxs("div", {
|
|
23
|
-
className: "space-y-4",
|
|
24
|
-
children: [
|
|
25
|
-
/* @__PURE__ */ jsx("h2", {
|
|
26
|
-
className: "text-2xl font-bold",
|
|
27
|
-
children: "Spec-first architecture"
|
|
28
|
-
}),
|
|
29
|
-
/* @__PURE__ */ jsx("p", {
|
|
30
|
-
className: "text-muted-foreground",
|
|
31
|
-
children: "Integrations in ContractSpec follow a three-layer model:"
|
|
32
|
-
}),
|
|
33
|
-
/* @__PURE__ */ jsxs("div", {
|
|
34
|
-
className: "space-y-3",
|
|
35
|
-
children: [
|
|
36
|
-
/* @__PURE__ */ jsxs("div", {
|
|
37
|
-
className: "card-subtle p-4",
|
|
38
|
-
children: [
|
|
39
|
-
/* @__PURE__ */ jsx("h3", {
|
|
40
|
-
className: "mb-2 font-semibold",
|
|
41
|
-
children: "1. IntegrationSpec (Global)"
|
|
42
|
-
}),
|
|
43
|
-
/* @__PURE__ */ jsx("p", {
|
|
44
|
-
className: "text-muted-foreground text-sm",
|
|
45
|
-
children: "Defines what an integration provides: capabilities, configuration schema, secrets, webhooks, and requirements."
|
|
46
|
-
}),
|
|
47
|
-
/* @__PURE__ */ jsx(Link, {
|
|
48
|
-
href: "/docs/integrations/spec-model",
|
|
49
|
-
className: "mt-2 inline-block text-sm text-violet-400 hover:text-violet-300",
|
|
50
|
-
children: "Learn more →"
|
|
51
|
-
})
|
|
52
|
-
]
|
|
53
|
-
}),
|
|
54
|
-
/* @__PURE__ */ jsxs("div", {
|
|
55
|
-
className: "card-subtle p-4",
|
|
56
|
-
children: [
|
|
57
|
-
/* @__PURE__ */ jsx("h3", {
|
|
58
|
-
className: "mb-2 font-semibold",
|
|
59
|
-
children: "2. IntegrationConnection (Per-Tenant)"
|
|
60
|
-
}),
|
|
61
|
-
/* @__PURE__ */ jsx("p", {
|
|
62
|
-
className: "text-muted-foreground text-sm",
|
|
63
|
-
children: "A tenant's configured connection with credentials, environment (sandbox/production), and health status."
|
|
64
|
-
}),
|
|
65
|
-
/* @__PURE__ */ jsx(Link, {
|
|
66
|
-
href: "/docs/architecture/integration-binding",
|
|
67
|
-
className: "mt-2 inline-block text-sm text-violet-400 hover:text-violet-300",
|
|
68
|
-
children: "Learn more →"
|
|
69
|
-
})
|
|
70
|
-
]
|
|
71
|
-
}),
|
|
72
|
-
/* @__PURE__ */ jsxs("div", {
|
|
73
|
-
className: "card-subtle p-4",
|
|
74
|
-
children: [
|
|
75
|
-
/* @__PURE__ */ jsx("h3", {
|
|
76
|
-
className: "mb-2 font-semibold",
|
|
77
|
-
children: "3. AppIntegrationBinding (Per-App)"
|
|
78
|
-
}),
|
|
79
|
-
/* @__PURE__ */ jsx("p", {
|
|
80
|
-
className: "text-muted-foreground text-sm",
|
|
81
|
-
children: "Maps tenant connections to app capabilities and workflows, defining which operations can use which integrations."
|
|
82
|
-
}),
|
|
83
|
-
/* @__PURE__ */ jsx(Link, {
|
|
84
|
-
href: "/docs/architecture/integration-binding",
|
|
85
|
-
className: "mt-2 inline-block text-sm text-violet-400 hover:text-violet-300",
|
|
86
|
-
children: "Learn more →"
|
|
87
|
-
})
|
|
88
|
-
]
|
|
89
|
-
})
|
|
90
|
-
]
|
|
91
|
-
})
|
|
92
|
-
]
|
|
93
|
-
}),
|
|
94
|
-
/* @__PURE__ */ jsxs("div", {
|
|
95
|
-
className: "space-y-4",
|
|
96
|
-
children: [
|
|
97
|
-
/* @__PURE__ */ jsx("h2", {
|
|
98
|
-
className: "text-2xl font-bold",
|
|
99
|
-
children: "Integration categories"
|
|
100
|
-
}),
|
|
101
|
-
/* @__PURE__ */ jsx("div", {
|
|
102
|
-
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
103
|
-
children: /* @__PURE__ */ jsx("pre", {
|
|
104
|
-
children: `type IntegrationCategory =
|
|
105
|
-
| "payments" // Stripe
|
|
106
|
-
| "open-banking" // Powens
|
|
107
|
-
| "email" // Postmark, Resend, Gmail
|
|
108
|
-
| "calendar" // Google Calendar
|
|
109
|
-
| "sms" // Twilio
|
|
110
|
-
| "messaging" // Slack, GitHub, WhatsApp
|
|
111
|
-
| "health" // Whoop, Oura, Strava, Fitbit
|
|
112
|
-
| "ai-llm" // OpenAI, Mistral
|
|
113
|
-
| "ai-voice-tts" // ElevenLabs
|
|
114
|
-
| "ai-voice-stt" // OpenAI Whisper, Mistral Voxtral
|
|
115
|
-
| "ai-voice-conversational" // OpenAI Realtime, Mistral Voice
|
|
116
|
-
| "ai-image" // OpenAI Image, Fal
|
|
117
|
-
| "vector-db" // Qdrant
|
|
118
|
-
| "database" // Supabase Postgres
|
|
119
|
-
| "storage" // S3-compatible
|
|
120
|
-
| "meeting-recorder" // Fireflies, tl;dv
|
|
121
|
-
| "project-management" // Linear, Jira, Notion
|
|
122
|
-
| "accounting" // Coming soon
|
|
123
|
-
| "crm" // Coming soon
|
|
124
|
-
| "helpdesk" // Coming soon
|
|
125
|
-
| "custom"; // User-defined`
|
|
126
|
-
})
|
|
127
|
-
})
|
|
128
|
-
]
|
|
129
|
-
}),
|
|
130
|
-
/* @__PURE__ */ jsxs("div", {
|
|
131
|
-
className: "space-y-4",
|
|
132
|
-
children: [
|
|
133
|
-
/* @__PURE__ */ jsx("h2", {
|
|
134
|
-
className: "text-2xl font-bold",
|
|
135
|
-
children: "Available integrations"
|
|
136
|
-
}),
|
|
137
|
-
/* @__PURE__ */ jsxs("div", {
|
|
138
|
-
className: "space-y-6",
|
|
139
|
-
children: [
|
|
140
|
-
/* @__PURE__ */ jsxs("div", {
|
|
141
|
-
className: "space-y-3",
|
|
142
|
-
children: [
|
|
143
|
-
/* @__PURE__ */ jsx("h3", {
|
|
144
|
-
className: "text-xl font-semibold",
|
|
145
|
-
children: "Payments"
|
|
146
|
-
}),
|
|
147
|
-
/* @__PURE__ */ jsx("div", {
|
|
148
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
149
|
-
children: /* @__PURE__ */ jsxs(Link, {
|
|
150
|
-
href: "/docs/integrations/stripe",
|
|
151
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
152
|
-
children: [
|
|
153
|
-
/* @__PURE__ */ jsx("h4", {
|
|
154
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
155
|
-
children: "Stripe"
|
|
156
|
-
}),
|
|
157
|
-
/* @__PURE__ */ jsx("p", {
|
|
158
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
159
|
-
children: "Payment processing, subscriptions, and invoicing"
|
|
160
|
-
})
|
|
161
|
-
]
|
|
162
|
-
})
|
|
163
|
-
})
|
|
164
|
-
]
|
|
165
|
-
}),
|
|
166
|
-
/* @__PURE__ */ jsxs("div", {
|
|
167
|
-
className: "space-y-3",
|
|
168
|
-
children: [
|
|
169
|
-
/* @__PURE__ */ jsx("h3", {
|
|
170
|
-
className: "text-xl font-semibold",
|
|
171
|
-
children: "Open Banking"
|
|
172
|
-
}),
|
|
173
|
-
/* @__PURE__ */ jsx("div", {
|
|
174
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
175
|
-
children: /* @__PURE__ */ jsxs(Link, {
|
|
176
|
-
href: "/docs/integrations/powens",
|
|
177
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
178
|
-
children: [
|
|
179
|
-
/* @__PURE__ */ jsx("h4", {
|
|
180
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
181
|
-
children: "Powens (Read-Only)"
|
|
182
|
-
}),
|
|
183
|
-
/* @__PURE__ */ jsx("p", {
|
|
184
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
185
|
-
children: "Account, transaction, and balance synchronisation via Powens with tenant-owned credentials."
|
|
186
|
-
})
|
|
187
|
-
]
|
|
188
|
-
})
|
|
189
|
-
})
|
|
190
|
-
]
|
|
191
|
-
}),
|
|
192
|
-
/* @__PURE__ */ jsxs("div", {
|
|
193
|
-
className: "space-y-3",
|
|
194
|
-
children: [
|
|
195
|
-
/* @__PURE__ */ jsx("h3", {
|
|
196
|
-
className: "text-xl font-semibold",
|
|
197
|
-
children: "Email"
|
|
198
|
-
}),
|
|
199
|
-
/* @__PURE__ */ jsxs("div", {
|
|
200
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
201
|
-
children: [
|
|
202
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
203
|
-
href: "/docs/integrations/postmark",
|
|
204
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
205
|
-
children: [
|
|
206
|
-
/* @__PURE__ */ jsx("h4", {
|
|
207
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
208
|
-
children: "Postmark"
|
|
209
|
-
}),
|
|
210
|
-
/* @__PURE__ */ jsx("p", {
|
|
211
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
212
|
-
children: "Transactional email delivery with high deliverability"
|
|
213
|
-
})
|
|
214
|
-
]
|
|
215
|
-
}),
|
|
216
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
217
|
-
href: "/docs/integrations/resend",
|
|
218
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
219
|
-
children: [
|
|
220
|
-
/* @__PURE__ */ jsx("h4", {
|
|
221
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
222
|
-
children: "Resend"
|
|
223
|
-
}),
|
|
224
|
-
/* @__PURE__ */ jsx("p", {
|
|
225
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
226
|
-
children: "Modern email API for developers"
|
|
227
|
-
})
|
|
228
|
-
]
|
|
229
|
-
}),
|
|
230
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
231
|
-
href: "/docs/integrations/gmail",
|
|
232
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
233
|
-
children: [
|
|
234
|
-
/* @__PURE__ */ jsx("h4", {
|
|
235
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
236
|
-
children: "Gmail API"
|
|
237
|
-
}),
|
|
238
|
-
/* @__PURE__ */ jsx("p", {
|
|
239
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
240
|
-
children: "Inbound email processing and thread management"
|
|
241
|
-
})
|
|
242
|
-
]
|
|
243
|
-
})
|
|
244
|
-
]
|
|
245
|
-
})
|
|
246
|
-
]
|
|
247
|
-
}),
|
|
248
|
-
/* @__PURE__ */ jsxs("div", {
|
|
249
|
-
className: "space-y-3",
|
|
250
|
-
children: [
|
|
251
|
-
/* @__PURE__ */ jsx("h3", {
|
|
252
|
-
className: "text-xl font-semibold",
|
|
253
|
-
children: "Calendar & Scheduling"
|
|
254
|
-
}),
|
|
255
|
-
/* @__PURE__ */ jsx("div", {
|
|
256
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
257
|
-
children: /* @__PURE__ */ jsxs(Link, {
|
|
258
|
-
href: "/docs/integrations/google-calendar",
|
|
259
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
260
|
-
children: [
|
|
261
|
-
/* @__PURE__ */ jsx("h4", {
|
|
262
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
263
|
-
children: "Google Calendar"
|
|
264
|
-
}),
|
|
265
|
-
/* @__PURE__ */ jsx("p", {
|
|
266
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
267
|
-
children: "Event scheduling and calendar management"
|
|
268
|
-
})
|
|
269
|
-
]
|
|
270
|
-
})
|
|
271
|
-
})
|
|
272
|
-
]
|
|
273
|
-
}),
|
|
274
|
-
/* @__PURE__ */ jsxs("div", {
|
|
275
|
-
className: "space-y-3",
|
|
276
|
-
children: [
|
|
277
|
-
/* @__PURE__ */ jsx("h3", {
|
|
278
|
-
className: "text-xl font-semibold",
|
|
279
|
-
children: "AI & Machine Learning"
|
|
280
|
-
}),
|
|
281
|
-
/* @__PURE__ */ jsxs("div", {
|
|
282
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
283
|
-
children: [
|
|
284
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
285
|
-
href: "/docs/integrations/openai",
|
|
286
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
287
|
-
children: [
|
|
288
|
-
/* @__PURE__ */ jsx("h4", {
|
|
289
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
290
|
-
children: "OpenAI"
|
|
291
|
-
}),
|
|
292
|
-
/* @__PURE__ */ jsx("p", {
|
|
293
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
294
|
-
children: "LLMs, embeddings, and Whisper speech-to-text"
|
|
295
|
-
})
|
|
296
|
-
]
|
|
297
|
-
}),
|
|
298
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
299
|
-
href: "/docs/integrations/mistral",
|
|
300
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
301
|
-
children: [
|
|
302
|
-
/* @__PURE__ */ jsx("h4", {
|
|
303
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
304
|
-
children: "Mistral"
|
|
305
|
-
}),
|
|
306
|
-
/* @__PURE__ */ jsx("p", {
|
|
307
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
308
|
-
children: "LLMs, embeddings, Voxtral STT, and conversational voice"
|
|
309
|
-
})
|
|
310
|
-
]
|
|
311
|
-
}),
|
|
312
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
313
|
-
href: "/docs/integrations/elevenlabs",
|
|
314
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
315
|
-
children: [
|
|
316
|
-
/* @__PURE__ */ jsx("h4", {
|
|
317
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
318
|
-
children: "ElevenLabs"
|
|
319
|
-
}),
|
|
320
|
-
/* @__PURE__ */ jsx("p", {
|
|
321
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
322
|
-
children: "Text-to-speech and voice synthesis"
|
|
323
|
-
})
|
|
324
|
-
]
|
|
325
|
-
}),
|
|
326
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
327
|
-
href: "/docs/integrations/qdrant",
|
|
328
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
329
|
-
children: [
|
|
330
|
-
/* @__PURE__ */ jsx("h4", {
|
|
331
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
332
|
-
children: "Qdrant"
|
|
333
|
-
}),
|
|
334
|
-
/* @__PURE__ */ jsx("p", {
|
|
335
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
336
|
-
children: "Vector database for semantic search and RAG"
|
|
337
|
-
})
|
|
338
|
-
]
|
|
339
|
-
})
|
|
340
|
-
]
|
|
341
|
-
})
|
|
342
|
-
]
|
|
343
|
-
}),
|
|
344
|
-
/* @__PURE__ */ jsxs("div", {
|
|
345
|
-
className: "space-y-3",
|
|
346
|
-
children: [
|
|
347
|
-
/* @__PURE__ */ jsx("h3", {
|
|
348
|
-
className: "text-xl font-semibold",
|
|
349
|
-
children: "Storage"
|
|
350
|
-
}),
|
|
351
|
-
/* @__PURE__ */ jsx("div", {
|
|
352
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
353
|
-
children: /* @__PURE__ */ jsxs(Link, {
|
|
354
|
-
href: "/docs/integrations/s3",
|
|
355
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
356
|
-
children: [
|
|
357
|
-
/* @__PURE__ */ jsx("h4", {
|
|
358
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
359
|
-
children: "S3-Compatible Storage"
|
|
360
|
-
}),
|
|
361
|
-
/* @__PURE__ */ jsx("p", {
|
|
362
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
363
|
-
children: "Object storage (AWS S3, Scaleway, MinIO, etc.)"
|
|
364
|
-
})
|
|
365
|
-
]
|
|
366
|
-
})
|
|
367
|
-
})
|
|
368
|
-
]
|
|
369
|
-
}),
|
|
370
|
-
/* @__PURE__ */ jsxs("div", {
|
|
371
|
-
className: "space-y-3",
|
|
372
|
-
children: [
|
|
373
|
-
/* @__PURE__ */ jsx("h3", {
|
|
374
|
-
className: "text-xl font-semibold",
|
|
375
|
-
children: "SMS"
|
|
376
|
-
}),
|
|
377
|
-
/* @__PURE__ */ jsx("div", {
|
|
378
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
379
|
-
children: /* @__PURE__ */ jsxs(Link, {
|
|
380
|
-
href: "/docs/integrations/twilio",
|
|
381
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
382
|
-
children: [
|
|
383
|
-
/* @__PURE__ */ jsx("h4", {
|
|
384
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
385
|
-
children: "Twilio"
|
|
386
|
-
}),
|
|
387
|
-
/* @__PURE__ */ jsx("p", {
|
|
388
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
389
|
-
children: "SMS notifications and transactional messaging"
|
|
390
|
-
})
|
|
391
|
-
]
|
|
392
|
-
})
|
|
393
|
-
})
|
|
394
|
-
]
|
|
395
|
-
}),
|
|
396
|
-
/* @__PURE__ */ jsxs("div", {
|
|
397
|
-
className: "space-y-3",
|
|
398
|
-
children: [
|
|
399
|
-
/* @__PURE__ */ jsx("h3", {
|
|
400
|
-
className: "text-xl font-semibold",
|
|
401
|
-
children: "Messaging channels"
|
|
402
|
-
}),
|
|
403
|
-
/* @__PURE__ */ jsxs("div", {
|
|
404
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
405
|
-
children: [
|
|
406
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
407
|
-
href: "/docs/integrations/slack",
|
|
408
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
409
|
-
children: [
|
|
410
|
-
/* @__PURE__ */ jsx("h4", {
|
|
411
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
412
|
-
children: "Slack"
|
|
413
|
-
}),
|
|
414
|
-
/* @__PURE__ */ jsx("p", {
|
|
415
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
416
|
-
children: "Signed event ingestion and outbox-backed replies"
|
|
417
|
-
})
|
|
418
|
-
]
|
|
419
|
-
}),
|
|
420
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
421
|
-
href: "/docs/integrations/github",
|
|
422
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
423
|
-
children: [
|
|
424
|
-
/* @__PURE__ */ jsx("h4", {
|
|
425
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
426
|
-
children: "GitHub"
|
|
427
|
-
}),
|
|
428
|
-
/* @__PURE__ */ jsx("p", {
|
|
429
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
430
|
-
children: "Issue and PR comment workflows with webhook verification"
|
|
431
|
-
})
|
|
432
|
-
]
|
|
433
|
-
}),
|
|
434
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
435
|
-
href: "/docs/integrations/whatsapp-meta",
|
|
436
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
437
|
-
children: [
|
|
438
|
-
/* @__PURE__ */ jsx("h4", {
|
|
439
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
440
|
-
children: "WhatsApp Meta"
|
|
441
|
-
}),
|
|
442
|
-
/* @__PURE__ */ jsx("p", {
|
|
443
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
444
|
-
children: "Primary WhatsApp Business API transport for inbound and outbound"
|
|
445
|
-
})
|
|
446
|
-
]
|
|
447
|
-
}),
|
|
448
|
-
/* @__PURE__ */ jsxs(Link, {
|
|
449
|
-
href: "/docs/integrations/whatsapp-twilio",
|
|
450
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
451
|
-
children: [
|
|
452
|
-
/* @__PURE__ */ jsx("h4", {
|
|
453
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
454
|
-
children: "WhatsApp Twilio"
|
|
455
|
-
}),
|
|
456
|
-
/* @__PURE__ */ jsx("p", {
|
|
457
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
458
|
-
children: "Fallback WhatsApp route with Twilio signature validation"
|
|
459
|
-
})
|
|
460
|
-
]
|
|
461
|
-
})
|
|
462
|
-
]
|
|
463
|
-
})
|
|
464
|
-
]
|
|
465
|
-
}),
|
|
466
|
-
/* @__PURE__ */ jsxs("div", {
|
|
467
|
-
className: "space-y-3",
|
|
468
|
-
children: [
|
|
469
|
-
/* @__PURE__ */ jsx("h3", {
|
|
470
|
-
className: "text-xl font-semibold",
|
|
471
|
-
children: "Health & wearables"
|
|
472
|
-
}),
|
|
473
|
-
/* @__PURE__ */ jsx("div", {
|
|
474
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
475
|
-
children: /* @__PURE__ */ jsxs(Link, {
|
|
476
|
-
href: "/docs/integrations/health-routing",
|
|
477
|
-
className: "card-subtle group p-4 transition-colors hover:border-violet-500/50",
|
|
478
|
-
children: [
|
|
479
|
-
/* @__PURE__ */ jsx("h4", {
|
|
480
|
-
className: "font-bold transition-colors group-hover:text-violet-400",
|
|
481
|
-
children: "Health routing strategy"
|
|
482
|
-
}),
|
|
483
|
-
/* @__PURE__ */ jsx("p", {
|
|
484
|
-
className: "text-muted-foreground mt-1 text-sm",
|
|
485
|
-
children: "Official vs aggregator transport order, unofficial gating, and OAuth refresh config"
|
|
486
|
-
})
|
|
487
|
-
]
|
|
488
|
-
})
|
|
489
|
-
})
|
|
490
|
-
]
|
|
491
|
-
})
|
|
492
|
-
]
|
|
493
|
-
})
|
|
494
|
-
]
|
|
495
|
-
}),
|
|
496
|
-
/* @__PURE__ */ jsxs("div", {
|
|
497
|
-
className: "space-y-4",
|
|
498
|
-
children: [
|
|
499
|
-
/* @__PURE__ */ jsx("h2", {
|
|
500
|
-
className: "text-2xl font-bold",
|
|
501
|
-
children: "How integrations work"
|
|
502
|
-
}),
|
|
503
|
-
/* @__PURE__ */ jsxs("p", {
|
|
504
|
-
className: "text-muted-foreground",
|
|
505
|
-
children: [
|
|
506
|
-
"ContractSpec integrations are implemented as",
|
|
507
|
-
" ",
|
|
508
|
-
/* @__PURE__ */ jsx(Link, {
|
|
509
|
-
href: "/docs/specs/capabilities",
|
|
510
|
-
className: "text-violet-400 hover:text-violet-300",
|
|
511
|
-
children: "capability providers"
|
|
512
|
-
}),
|
|
513
|
-
". This means:"
|
|
514
|
-
]
|
|
515
|
-
}),
|
|
516
|
-
/* @__PURE__ */ jsxs("ul", {
|
|
517
|
-
className: "text-muted-foreground list-inside list-disc space-y-2",
|
|
518
|
-
children: [
|
|
519
|
-
/* @__PURE__ */ jsxs("li", {
|
|
520
|
-
children: [
|
|
521
|
-
/* @__PURE__ */ jsx("strong", {
|
|
522
|
-
children: "Type safety"
|
|
523
|
-
}),
|
|
524
|
-
" – All API calls are type-checked by TypeScript and validated at runtime via Zod"
|
|
525
|
-
]
|
|
526
|
-
}),
|
|
527
|
-
/* @__PURE__ */ jsxs("li", {
|
|
528
|
-
children: [
|
|
529
|
-
/* @__PURE__ */ jsx("strong", {
|
|
530
|
-
children: "Policy enforcement"
|
|
531
|
-
}),
|
|
532
|
-
" – Access to external services is governed by your",
|
|
533
|
-
" ",
|
|
534
|
-
/* @__PURE__ */ jsx(Link, {
|
|
535
|
-
href: "/docs/specs/policy",
|
|
536
|
-
className: "text-violet-400 hover:text-violet-300",
|
|
537
|
-
children: "PolicySpecs"
|
|
538
|
-
})
|
|
539
|
-
]
|
|
540
|
-
}),
|
|
541
|
-
/* @__PURE__ */ jsxs("li", {
|
|
542
|
-
children: [
|
|
543
|
-
/* @__PURE__ */ jsx("strong", {
|
|
544
|
-
children: "Audit logging"
|
|
545
|
-
}),
|
|
546
|
-
" – All integration calls are automatically logged"
|
|
547
|
-
]
|
|
548
|
-
}),
|
|
549
|
-
/* @__PURE__ */ jsxs("li", {
|
|
550
|
-
children: [
|
|
551
|
-
/* @__PURE__ */ jsx("strong", {
|
|
552
|
-
children: "Error handling"
|
|
553
|
-
}),
|
|
554
|
-
" – Built-in retries and fallback strategies"
|
|
555
|
-
]
|
|
556
|
-
}),
|
|
557
|
-
/* @__PURE__ */ jsxs("li", {
|
|
558
|
-
children: [
|
|
559
|
-
/* @__PURE__ */ jsx("strong", {
|
|
560
|
-
children: "Environment-based config"
|
|
561
|
-
}),
|
|
562
|
-
" – API keys and secrets are managed through environment variables"
|
|
563
|
-
]
|
|
564
|
-
})
|
|
565
|
-
]
|
|
566
|
-
})
|
|
567
|
-
]
|
|
568
|
-
}),
|
|
569
|
-
/* @__PURE__ */ jsxs("div", {
|
|
570
|
-
className: "space-y-4",
|
|
571
|
-
children: [
|
|
572
|
-
/* @__PURE__ */ jsx("h2", {
|
|
573
|
-
className: "text-2xl font-bold",
|
|
574
|
-
children: "Secret management"
|
|
575
|
-
}),
|
|
576
|
-
/* @__PURE__ */ jsx("p", {
|
|
577
|
-
className: "text-muted-foreground",
|
|
578
|
-
children: "Secrets are resolved through a layered secret provider manager. It checks lightweight environment overrides first, then falls back to a managed vault (Google Cloud Secret Manager) for production."
|
|
579
|
-
}),
|
|
580
|
-
/* @__PURE__ */ jsxs("div", {
|
|
581
|
-
className: "grid gap-4 md:grid-cols-2",
|
|
582
|
-
children: [
|
|
583
|
-
/* @__PURE__ */ jsxs("div", {
|
|
584
|
-
className: "card-subtle p-4",
|
|
585
|
-
children: [
|
|
586
|
-
/* @__PURE__ */ jsx("h3", {
|
|
587
|
-
className: "text-xl font-semibold",
|
|
588
|
-
children: "Environment variables"
|
|
589
|
-
}),
|
|
590
|
-
/* @__PURE__ */ jsxs("p", {
|
|
591
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
592
|
-
children: [
|
|
593
|
-
"Perfect for local development and secure staging overrides. Use the ",
|
|
594
|
-
/* @__PURE__ */ jsx("code", {
|
|
595
|
-
children: "env://"
|
|
596
|
-
}),
|
|
597
|
-
" scheme or append ",
|
|
598
|
-
/* @__PURE__ */ jsx("code", {
|
|
599
|
-
children: "?env="
|
|
600
|
-
}),
|
|
601
|
-
" to another reference to map an explicit variable."
|
|
602
|
-
]
|
|
603
|
-
}),
|
|
604
|
-
/* @__PURE__ */ jsx("div", {
|
|
605
|
-
className: "bg-background/60 border-border mt-3 overflow-auto rounded-lg border p-3 font-mono text-xs",
|
|
606
|
-
children: /* @__PURE__ */ jsx("pre", {
|
|
607
|
-
className: "whitespace-pre-wrap",
|
|
608
|
-
children: `# Override a production secret locally
|
|
609
|
-
CONTRACTSPEC__SECRET__STRIPE=sk_test_123
|
|
610
|
-
|
|
611
|
-
# Reference
|
|
612
|
-
env://CONTRACTSPEC__SECRET__STRIPE`
|
|
613
|
-
})
|
|
614
|
-
})
|
|
615
|
-
]
|
|
616
|
-
}),
|
|
617
|
-
/* @__PURE__ */ jsxs("div", {
|
|
618
|
-
className: "card-subtle p-4",
|
|
619
|
-
children: [
|
|
620
|
-
/* @__PURE__ */ jsx("h3", {
|
|
621
|
-
className: "text-xl font-semibold",
|
|
622
|
-
children: "GCP Secret Manager"
|
|
623
|
-
}),
|
|
624
|
-
/* @__PURE__ */ jsxs("p", {
|
|
625
|
-
className: "text-muted-foreground mt-2 text-sm",
|
|
626
|
-
children: [
|
|
627
|
-
"Used in production to store versioned credentials with rotation support. References follow the",
|
|
628
|
-
" ",
|
|
629
|
-
/* @__PURE__ */ jsx("code", {
|
|
630
|
-
children: "gcp://projects/.../secrets/.../versions/latest"
|
|
631
|
-
}),
|
|
632
|
-
" ",
|
|
633
|
-
"format."
|
|
634
|
-
]
|
|
635
|
-
}),
|
|
636
|
-
/* @__PURE__ */ jsx("div", {
|
|
637
|
-
className: "bg-background/60 border-border mt-3 overflow-auto rounded-lg border p-3 font-mono text-xs",
|
|
638
|
-
children: /* @__PURE__ */ jsx("pre", {
|
|
639
|
-
className: "whitespace-pre-wrap",
|
|
640
|
-
children: `# Production reference
|
|
641
|
-
gcp://projects/tenant/secrets/stripe-secret-key/versions/latest`
|
|
642
|
-
})
|
|
643
|
-
})
|
|
644
|
-
]
|
|
645
|
-
})
|
|
646
|
-
]
|
|
647
|
-
}),
|
|
648
|
-
/* @__PURE__ */ jsx("p", {
|
|
649
|
-
className: "text-muted-foreground text-sm",
|
|
650
|
-
children: "The secret manager chooses the first provider that can resolve a reference, so local environment variables can override the managed vault without changing blueprints or tenant configs."
|
|
651
|
-
})
|
|
652
|
-
]
|
|
653
|
-
}),
|
|
654
|
-
/* @__PURE__ */ jsxs("div", {
|
|
655
|
-
className: "space-y-4",
|
|
656
|
-
children: [
|
|
657
|
-
/* @__PURE__ */ jsx("h2", {
|
|
658
|
-
className: "text-2xl font-bold",
|
|
659
|
-
children: "Configuration"
|
|
660
|
-
}),
|
|
661
|
-
/* @__PURE__ */ jsx("p", {
|
|
662
|
-
className: "text-muted-foreground",
|
|
663
|
-
children: "Integrations are configured through environment variables and secret references. Here's a typical setup:"
|
|
664
|
-
}),
|
|
665
|
-
/* @__PURE__ */ jsx("div", {
|
|
666
|
-
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
667
|
-
children: /* @__PURE__ */ jsx("pre", {
|
|
668
|
-
children: `# .env
|
|
669
|
-
STRIPE_SECRET_KEY=sk_test_...
|
|
670
|
-
STRIPE_WEBHOOK_SECRET=whsec_...
|
|
671
|
-
|
|
672
|
-
POSTMARK_API_TOKEN=...
|
|
673
|
-
POSTMARK_FROM_EMAIL=noreply@example.com
|
|
674
|
-
|
|
675
|
-
OPENAI_API_KEY=sk-...
|
|
676
|
-
OPENAI_ORGANIZATION=org-...
|
|
677
|
-
|
|
678
|
-
MISTRAL_API_KEY=...
|
|
679
|
-
|
|
680
|
-
QDRANT_URL=https://...
|
|
681
|
-
QDRANT_API_KEY=...
|
|
682
|
-
|
|
683
|
-
S3_ENDPOINT=https://s3.fr-par.scw.cloud
|
|
684
|
-
S3_ACCESS_KEY_ID=...
|
|
685
|
-
S3_SECRET_ACCESS_KEY=...
|
|
686
|
-
S3_BUCKET=my-bucket
|
|
687
|
-
S3_REGION=fr-par
|
|
688
|
-
|
|
689
|
-
# Secret references
|
|
690
|
-
STRIPE_SECRET_REF=gcp://projects/tenant/secrets/stripe-secret-key/versions/latest
|
|
691
|
-
STRIPE_SECRET_OVERRIDE=env://STRIPE_SECRET_KEY`
|
|
692
|
-
})
|
|
693
|
-
})
|
|
694
|
-
]
|
|
695
|
-
}),
|
|
696
|
-
/* @__PURE__ */ jsxs("div", {
|
|
697
|
-
className: "space-y-4",
|
|
698
|
-
children: [
|
|
699
|
-
/* @__PURE__ */ jsx("h2", {
|
|
700
|
-
className: "text-2xl font-bold",
|
|
701
|
-
children: "Integration categories"
|
|
11
|
+
className: "font-bold text-4xl",
|
|
12
|
+
children: "Integration Circuit Breakers"
|
|
702
13
|
}),
|
|
703
14
|
/* @__PURE__ */ jsx("p", {
|
|
704
|
-
className: "text-muted-foreground",
|
|
705
|
-
children: "
|
|
706
|
-
}),
|
|
707
|
-
/* @__PURE__ */ jsx("div", {
|
|
708
|
-
className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
|
|
709
|
-
children: /* @__PURE__ */ jsx("pre", {
|
|
710
|
-
children: `type IntegrationCategory =
|
|
711
|
-
| "payments" // Stripe, PayPal, etc.
|
|
712
|
-
| "open-banking" // Powens and open banking providers
|
|
713
|
-
| "email" // Postmark, Resend, Gmail
|
|
714
|
-
| "calendar" // Google Calendar, Outlook
|
|
715
|
-
| "sms" // Twilio, MessageBird
|
|
716
|
-
| "messaging" // Slack, GitHub, WhatsApp
|
|
717
|
-
| "health" // Whoop, Oura, Strava, Fitbit
|
|
718
|
-
| "ai-llm" // OpenAI, Anthropic, Cohere, Mistral
|
|
719
|
-
| "ai-voice-tts" // ElevenLabs, Google TTS
|
|
720
|
-
| "ai-voice-stt" // OpenAI Whisper, Google STT, Mistral Voxtral
|
|
721
|
-
| "ai-voice-conversational" // OpenAI Realtime, Mistral Voice
|
|
722
|
-
| "ai-image" // OpenAI Image, Fal
|
|
723
|
-
| "vector-db" // Qdrant, Pinecone, Weaviate
|
|
724
|
-
| "database" // Supabase, Postgres
|
|
725
|
-
| "storage" // S3, GCS, Azure Blob
|
|
726
|
-
| "meeting-recorder" // Fireflies, tl;dv, Granola
|
|
727
|
-
| "project-management" // Linear, Jira, Notion
|
|
728
|
-
| "accounting" // QuickBooks, Xero (coming soon)
|
|
729
|
-
| "crm" // Salesforce, HubSpot (coming soon)
|
|
730
|
-
| "helpdesk" // Zendesk, Intercom (coming soon)
|
|
731
|
-
| "custom"; // Your own integrations`
|
|
732
|
-
})
|
|
15
|
+
className: "text-lg text-muted-foreground",
|
|
16
|
+
children: "External APIs are the most common source of instability. Wrap every integration call in a circuit breaker to protect your system."
|
|
733
17
|
})
|
|
734
18
|
]
|
|
735
19
|
}),
|
|
@@ -737,73 +21,14 @@ STRIPE_SECRET_OVERRIDE=env://STRIPE_SECRET_KEY`
|
|
|
737
21
|
className: "space-y-4",
|
|
738
22
|
children: [
|
|
739
23
|
/* @__PURE__ */ jsx("h2", {
|
|
740
|
-
className: "text-2xl
|
|
741
|
-
children: "Custom integrations"
|
|
742
|
-
}),
|
|
743
|
-
/* @__PURE__ */ jsxs("p", {
|
|
744
|
-
className: "text-muted-foreground",
|
|
745
|
-
children: [
|
|
746
|
-
"You can create custom integrations by implementing a capability provider. See the",
|
|
747
|
-
" ",
|
|
748
|
-
/* @__PURE__ */ jsx(Link, {
|
|
749
|
-
href: "/docs/advanced/custom-providers",
|
|
750
|
-
className: "text-violet-400 hover:text-violet-300",
|
|
751
|
-
children: "Custom Providers"
|
|
752
|
-
}),
|
|
753
|
-
" ",
|
|
754
|
-
"guide for details."
|
|
755
|
-
]
|
|
756
|
-
})
|
|
757
|
-
]
|
|
758
|
-
}),
|
|
759
|
-
/* @__PURE__ */ jsx("div", {
|
|
760
|
-
className: "flex items-center gap-4 pt-4",
|
|
761
|
-
children: /* @__PURE__ */ jsxs(Link, {
|
|
762
|
-
href: "/docs/integrations/stripe",
|
|
763
|
-
className: "btn-primary",
|
|
764
|
-
children: [
|
|
765
|
-
"Get Started with Stripe ",
|
|
766
|
-
/* @__PURE__ */ jsx(ChevronRight, {
|
|
767
|
-
size: 16
|
|
768
|
-
})
|
|
769
|
-
]
|
|
770
|
-
})
|
|
771
|
-
})
|
|
772
|
-
]
|
|
773
|
-
});
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
// src/components/docs/integrations/IntegrationsCircuitBreakersPage.tsx
|
|
777
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
778
|
-
function IntegrationsCircuitBreakersPage() {
|
|
779
|
-
return /* @__PURE__ */ jsxs2("div", {
|
|
780
|
-
className: "space-y-8",
|
|
781
|
-
children: [
|
|
782
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
783
|
-
className: "space-y-4",
|
|
784
|
-
children: [
|
|
785
|
-
/* @__PURE__ */ jsx2("h1", {
|
|
786
|
-
className: "text-4xl font-bold",
|
|
787
|
-
children: "Integration Circuit Breakers"
|
|
788
|
-
}),
|
|
789
|
-
/* @__PURE__ */ jsx2("p", {
|
|
790
|
-
className: "text-muted-foreground text-lg",
|
|
791
|
-
children: "External APIs are the most common source of instability. Wrap every integration call in a circuit breaker to protect your system."
|
|
792
|
-
})
|
|
793
|
-
]
|
|
794
|
-
}),
|
|
795
|
-
/* @__PURE__ */ jsxs2("div", {
|
|
796
|
-
className: "space-y-4",
|
|
797
|
-
children: [
|
|
798
|
-
/* @__PURE__ */ jsx2("h2", {
|
|
799
|
-
className: "text-2xl font-bold",
|
|
24
|
+
className: "font-bold text-2xl",
|
|
800
25
|
children: "Pattern"
|
|
801
26
|
}),
|
|
802
|
-
/* @__PURE__ */
|
|
27
|
+
/* @__PURE__ */ jsx("p", {
|
|
803
28
|
children: "Create a dedicated circuit breaker instance for each external service. This ensures that a failure in Stripe doesn't trigger the circuit breaker for Twilio."
|
|
804
29
|
}),
|
|
805
|
-
/* @__PURE__ */
|
|
806
|
-
className: "
|
|
30
|
+
/* @__PURE__ */ jsx("pre", {
|
|
31
|
+
className: "rounded-lg border bg-muted p-4 text-sm",
|
|
807
32
|
children: `// integrations/stripe.ts
|
|
808
33
|
import { CircuitBreaker } from '@contractspec/lib.resilience/circuit-breaker';
|
|
809
34
|
|
|
@@ -823,52 +48,52 @@ export async function createCharge(amount: number) {
|
|
|
823
48
|
}
|
|
824
49
|
|
|
825
50
|
// src/components/docs/integrations/IntegrationsElevenLabsPage.tsx
|
|
826
|
-
import
|
|
827
|
-
import { ChevronRight
|
|
828
|
-
import { jsx as
|
|
51
|
+
import Link from "@contractspec/lib.ui-link";
|
|
52
|
+
import { ChevronRight } from "lucide-react";
|
|
53
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
829
54
|
function IntegrationsElevenLabsPage() {
|
|
830
|
-
return /* @__PURE__ */
|
|
55
|
+
return /* @__PURE__ */ jsxs2("div", {
|
|
831
56
|
className: "space-y-8",
|
|
832
57
|
children: [
|
|
833
|
-
/* @__PURE__ */
|
|
58
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
834
59
|
className: "space-y-4",
|
|
835
60
|
children: [
|
|
836
|
-
/* @__PURE__ */
|
|
837
|
-
className: "text-4xl
|
|
61
|
+
/* @__PURE__ */ jsx2("h1", {
|
|
62
|
+
className: "font-bold text-4xl",
|
|
838
63
|
children: "ElevenLabs"
|
|
839
64
|
}),
|
|
840
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ jsx2("p", {
|
|
841
66
|
className: "text-muted-foreground",
|
|
842
67
|
children: "ElevenLabs provides state-of-the-art text-to-speech and voice cloning technology. Create natural-sounding voiceovers, audiobooks, and voice assistants."
|
|
843
68
|
})
|
|
844
69
|
]
|
|
845
70
|
}),
|
|
846
|
-
/* @__PURE__ */
|
|
71
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
847
72
|
className: "space-y-4",
|
|
848
73
|
children: [
|
|
849
|
-
/* @__PURE__ */
|
|
850
|
-
className: "text-2xl
|
|
74
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
75
|
+
className: "font-bold text-2xl",
|
|
851
76
|
children: "Setup"
|
|
852
77
|
}),
|
|
853
|
-
/* @__PURE__ */
|
|
854
|
-
className: "
|
|
855
|
-
children: /* @__PURE__ */
|
|
78
|
+
/* @__PURE__ */ jsx2("div", {
|
|
79
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
80
|
+
children: /* @__PURE__ */ jsx2("pre", {
|
|
856
81
|
children: `# .env
|
|
857
82
|
ELEVENLABS_API_KEY=...`
|
|
858
83
|
})
|
|
859
84
|
})
|
|
860
85
|
]
|
|
861
86
|
}),
|
|
862
|
-
/* @__PURE__ */
|
|
87
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
863
88
|
className: "space-y-4",
|
|
864
89
|
children: [
|
|
865
|
-
/* @__PURE__ */
|
|
866
|
-
className: "text-2xl
|
|
90
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
91
|
+
className: "font-bold text-2xl",
|
|
867
92
|
children: "Text-to-Speech"
|
|
868
93
|
}),
|
|
869
|
-
/* @__PURE__ */
|
|
870
|
-
className: "
|
|
871
|
-
children: /* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ jsx2("div", {
|
|
95
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
96
|
+
children: /* @__PURE__ */ jsx2("pre", {
|
|
872
97
|
children: `capabilityId: elevenlabs-tts
|
|
873
98
|
provider:
|
|
874
99
|
type: elevenlabs
|
|
@@ -893,46 +118,46 @@ outputs:
|
|
|
893
118
|
})
|
|
894
119
|
]
|
|
895
120
|
}),
|
|
896
|
-
/* @__PURE__ */
|
|
121
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
897
122
|
className: "space-y-4",
|
|
898
123
|
children: [
|
|
899
|
-
/* @__PURE__ */
|
|
900
|
-
className: "text-2xl
|
|
124
|
+
/* @__PURE__ */ jsx2("h2", {
|
|
125
|
+
className: "font-bold text-2xl",
|
|
901
126
|
children: "Use cases"
|
|
902
127
|
}),
|
|
903
|
-
/* @__PURE__ */
|
|
904
|
-
className: "
|
|
128
|
+
/* @__PURE__ */ jsxs2("ul", {
|
|
129
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
905
130
|
children: [
|
|
906
|
-
/* @__PURE__ */
|
|
131
|
+
/* @__PURE__ */ jsx2("li", {
|
|
907
132
|
children: "Generate voiceovers for videos"
|
|
908
133
|
}),
|
|
909
|
-
/* @__PURE__ */
|
|
134
|
+
/* @__PURE__ */ jsx2("li", {
|
|
910
135
|
children: "Create audio versions of articles"
|
|
911
136
|
}),
|
|
912
|
-
/* @__PURE__ */
|
|
137
|
+
/* @__PURE__ */ jsx2("li", {
|
|
913
138
|
children: "Build voice assistants"
|
|
914
139
|
}),
|
|
915
|
-
/* @__PURE__ */
|
|
140
|
+
/* @__PURE__ */ jsx2("li", {
|
|
916
141
|
children: "Produce audiobooks"
|
|
917
142
|
})
|
|
918
143
|
]
|
|
919
144
|
})
|
|
920
145
|
]
|
|
921
146
|
}),
|
|
922
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ jsxs2("div", {
|
|
923
148
|
className: "flex items-center gap-4 pt-4",
|
|
924
149
|
children: [
|
|
925
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ jsx2(Link, {
|
|
926
151
|
href: "/docs/integrations/mistral",
|
|
927
152
|
className: "btn-ghost",
|
|
928
153
|
children: "Previous: Mistral"
|
|
929
154
|
}),
|
|
930
|
-
/* @__PURE__ */
|
|
155
|
+
/* @__PURE__ */ jsxs2(Link, {
|
|
931
156
|
href: "/docs/integrations/qdrant",
|
|
932
157
|
className: "btn-primary",
|
|
933
158
|
children: [
|
|
934
159
|
"Next: Qdrant ",
|
|
935
|
-
/* @__PURE__ */
|
|
160
|
+
/* @__PURE__ */ jsx2(ChevronRight, {
|
|
936
161
|
size: 16
|
|
937
162
|
})
|
|
938
163
|
]
|
|
@@ -944,36 +169,36 @@ outputs:
|
|
|
944
169
|
}
|
|
945
170
|
|
|
946
171
|
// src/components/docs/integrations/IntegrationsGithubPage.tsx
|
|
947
|
-
import
|
|
948
|
-
import { ChevronRight as
|
|
949
|
-
import { jsx as
|
|
172
|
+
import Link2 from "@contractspec/lib.ui-link";
|
|
173
|
+
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
174
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
950
175
|
function IntegrationsGithubPage() {
|
|
951
|
-
return /* @__PURE__ */
|
|
176
|
+
return /* @__PURE__ */ jsxs3("div", {
|
|
952
177
|
className: "space-y-8",
|
|
953
178
|
children: [
|
|
954
|
-
/* @__PURE__ */
|
|
179
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
955
180
|
className: "space-y-4",
|
|
956
181
|
children: [
|
|
957
|
-
/* @__PURE__ */
|
|
958
|
-
className: "text-4xl
|
|
182
|
+
/* @__PURE__ */ jsx3("h1", {
|
|
183
|
+
className: "font-bold text-4xl",
|
|
959
184
|
children: "GitHub Messaging"
|
|
960
185
|
}),
|
|
961
|
-
/* @__PURE__ */
|
|
186
|
+
/* @__PURE__ */ jsx3("p", {
|
|
962
187
|
className: "text-muted-foreground",
|
|
963
188
|
children: "Use GitHub issue and pull request comments as an AI-native messaging channel with webhook verification, policy checks, and reliable outbound dispatch."
|
|
964
189
|
})
|
|
965
190
|
]
|
|
966
191
|
}),
|
|
967
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
968
193
|
className: "space-y-4",
|
|
969
194
|
children: [
|
|
970
|
-
/* @__PURE__ */
|
|
971
|
-
className: "text-2xl
|
|
195
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
196
|
+
className: "font-bold text-2xl",
|
|
972
197
|
children: "Required secrets and config"
|
|
973
198
|
}),
|
|
974
|
-
/* @__PURE__ */
|
|
975
|
-
className: "
|
|
976
|
-
children: /* @__PURE__ */
|
|
199
|
+
/* @__PURE__ */ jsx3("div", {
|
|
200
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
201
|
+
children: /* @__PURE__ */ jsx3("pre", {
|
|
977
202
|
children: `// secret payload
|
|
978
203
|
{
|
|
979
204
|
"token": "ghp_...",
|
|
@@ -990,56 +215,56 @@ function IntegrationsGithubPage() {
|
|
|
990
215
|
})
|
|
991
216
|
]
|
|
992
217
|
}),
|
|
993
|
-
/* @__PURE__ */
|
|
218
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
994
219
|
className: "space-y-4",
|
|
995
220
|
children: [
|
|
996
|
-
/* @__PURE__ */
|
|
997
|
-
className: "text-2xl
|
|
221
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
222
|
+
className: "font-bold text-2xl",
|
|
998
223
|
children: "Webhook ingress"
|
|
999
224
|
}),
|
|
1000
|
-
/* @__PURE__ */
|
|
1001
|
-
className: "
|
|
225
|
+
/* @__PURE__ */ jsxs3("ul", {
|
|
226
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1002
227
|
children: [
|
|
1003
|
-
/* @__PURE__ */
|
|
228
|
+
/* @__PURE__ */ jsxs3("li", {
|
|
1004
229
|
children: [
|
|
1005
230
|
"Inbound GitHub events are accepted on",
|
|
1006
231
|
" ",
|
|
1007
|
-
/* @__PURE__ */
|
|
1008
|
-
className: "bg-background/50
|
|
232
|
+
/* @__PURE__ */ jsx3("code", {
|
|
233
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
1009
234
|
children: "/webhooks/github/events"
|
|
1010
235
|
}),
|
|
1011
236
|
"."
|
|
1012
237
|
]
|
|
1013
238
|
}),
|
|
1014
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ jsxs3("li", {
|
|
1015
240
|
children: [
|
|
1016
241
|
"Signatures are checked using",
|
|
1017
242
|
" ",
|
|
1018
|
-
/* @__PURE__ */
|
|
1019
|
-
className: "bg-background/50
|
|
243
|
+
/* @__PURE__ */ jsx3("code", {
|
|
244
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
1020
245
|
children: "x-hub-signature-256"
|
|
1021
246
|
}),
|
|
1022
247
|
" ",
|
|
1023
248
|
"and the configured webhook secret."
|
|
1024
249
|
]
|
|
1025
250
|
}),
|
|
1026
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ jsx3("li", {
|
|
1027
252
|
children: "Current normalization focuses on issue comment workflows and durable comment dispatch."
|
|
1028
253
|
})
|
|
1029
254
|
]
|
|
1030
255
|
})
|
|
1031
256
|
]
|
|
1032
257
|
}),
|
|
1033
|
-
/* @__PURE__ */
|
|
258
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
1034
259
|
className: "space-y-4",
|
|
1035
260
|
children: [
|
|
1036
|
-
/* @__PURE__ */
|
|
1037
|
-
className: "text-2xl
|
|
261
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
262
|
+
className: "font-bold text-2xl",
|
|
1038
263
|
children: "Workspace mapping"
|
|
1039
264
|
}),
|
|
1040
|
-
/* @__PURE__ */
|
|
1041
|
-
className: "
|
|
1042
|
-
children: /* @__PURE__ */
|
|
265
|
+
/* @__PURE__ */ jsx3("div", {
|
|
266
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
267
|
+
children: /* @__PURE__ */ jsx3("pre", {
|
|
1043
268
|
children: `CHANNEL_WORKSPACE_MAP_GITHUB={"lssm-tech/contractspec":"workspace-acme"}
|
|
1044
269
|
|
|
1045
270
|
# Optional dev fallback (off by default)
|
|
@@ -1048,43 +273,43 @@ CHANNEL_ALLOW_UNMAPPED_WORKSPACE=0`
|
|
|
1048
273
|
})
|
|
1049
274
|
]
|
|
1050
275
|
}),
|
|
1051
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
1052
277
|
className: "space-y-4",
|
|
1053
278
|
children: [
|
|
1054
|
-
/* @__PURE__ */
|
|
1055
|
-
className: "text-2xl
|
|
279
|
+
/* @__PURE__ */ jsx3("h2", {
|
|
280
|
+
className: "font-bold text-2xl",
|
|
1056
281
|
children: "Best practices"
|
|
1057
282
|
}),
|
|
1058
|
-
/* @__PURE__ */
|
|
1059
|
-
className: "
|
|
283
|
+
/* @__PURE__ */ jsxs3("ul", {
|
|
284
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1060
285
|
children: [
|
|
1061
|
-
/* @__PURE__ */
|
|
286
|
+
/* @__PURE__ */ jsx3("li", {
|
|
1062
287
|
children: "Use a least-privileged token scoped for comment operations."
|
|
1063
288
|
}),
|
|
1064
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ jsx3("li", {
|
|
1065
290
|
children: "Route repositories explicitly with workspace maps in multi-tenant environments."
|
|
1066
291
|
}),
|
|
1067
|
-
/* @__PURE__ */
|
|
292
|
+
/* @__PURE__ */ jsx3("li", {
|
|
1068
293
|
children: "Keep dispatch endpoints protected with token or bearer auth."
|
|
1069
294
|
})
|
|
1070
295
|
]
|
|
1071
296
|
})
|
|
1072
297
|
]
|
|
1073
298
|
}),
|
|
1074
|
-
/* @__PURE__ */
|
|
299
|
+
/* @__PURE__ */ jsxs3("div", {
|
|
1075
300
|
className: "flex items-center gap-4 pt-4",
|
|
1076
301
|
children: [
|
|
1077
|
-
/* @__PURE__ */
|
|
302
|
+
/* @__PURE__ */ jsx3(Link2, {
|
|
1078
303
|
href: "/docs/integrations/slack",
|
|
1079
304
|
className: "btn-ghost",
|
|
1080
305
|
children: "Previous: Slack Messaging"
|
|
1081
306
|
}),
|
|
1082
|
-
/* @__PURE__ */
|
|
307
|
+
/* @__PURE__ */ jsxs3(Link2, {
|
|
1083
308
|
href: "/docs/integrations/whatsapp-meta",
|
|
1084
309
|
className: "btn-primary",
|
|
1085
310
|
children: [
|
|
1086
311
|
"Next: WhatsApp Meta ",
|
|
1087
|
-
/* @__PURE__ */
|
|
312
|
+
/* @__PURE__ */ jsx3(ChevronRight2, {
|
|
1088
313
|
size: 16
|
|
1089
314
|
})
|
|
1090
315
|
]
|
|
@@ -1096,40 +321,40 @@ CHANNEL_ALLOW_UNMAPPED_WORKSPACE=0`
|
|
|
1096
321
|
}
|
|
1097
322
|
|
|
1098
323
|
// src/components/docs/integrations/IntegrationsGmailPage.tsx
|
|
1099
|
-
import
|
|
1100
|
-
import { ChevronRight as
|
|
1101
|
-
import { jsx as
|
|
324
|
+
import Link3 from "@contractspec/lib.ui-link";
|
|
325
|
+
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
326
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1102
327
|
function IntegrationsGmailPage() {
|
|
1103
|
-
return /* @__PURE__ */
|
|
328
|
+
return /* @__PURE__ */ jsxs4("div", {
|
|
1104
329
|
className: "space-y-8",
|
|
1105
330
|
children: [
|
|
1106
|
-
/* @__PURE__ */
|
|
331
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1107
332
|
className: "space-y-4",
|
|
1108
333
|
children: [
|
|
1109
|
-
/* @__PURE__ */
|
|
1110
|
-
className: "text-4xl
|
|
334
|
+
/* @__PURE__ */ jsx4("h1", {
|
|
335
|
+
className: "font-bold text-4xl",
|
|
1111
336
|
children: "Gmail API"
|
|
1112
337
|
}),
|
|
1113
|
-
/* @__PURE__ */
|
|
338
|
+
/* @__PURE__ */ jsx4("p", {
|
|
1114
339
|
className: "text-muted-foreground",
|
|
1115
340
|
children: "The Gmail API integration allows you to read inbound emails, manage threads, and build email-based workflows. Perfect for support tickets, email parsing, and automated responses."
|
|
1116
341
|
})
|
|
1117
342
|
]
|
|
1118
343
|
}),
|
|
1119
|
-
/* @__PURE__ */
|
|
344
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1120
345
|
className: "space-y-4",
|
|
1121
346
|
children: [
|
|
1122
|
-
/* @__PURE__ */
|
|
1123
|
-
className: "text-2xl
|
|
347
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
348
|
+
className: "font-bold text-2xl",
|
|
1124
349
|
children: "Setup"
|
|
1125
350
|
}),
|
|
1126
|
-
/* @__PURE__ */
|
|
351
|
+
/* @__PURE__ */ jsx4("p", {
|
|
1127
352
|
className: "text-muted-foreground",
|
|
1128
353
|
children: "Configure OAuth 2.0 credentials in Google Cloud Console:"
|
|
1129
354
|
}),
|
|
1130
|
-
/* @__PURE__ */
|
|
1131
|
-
className: "
|
|
1132
|
-
children: /* @__PURE__ */
|
|
355
|
+
/* @__PURE__ */ jsx4("div", {
|
|
356
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
357
|
+
children: /* @__PURE__ */ jsx4("pre", {
|
|
1133
358
|
children: `# .env
|
|
1134
359
|
GOOGLE_CLIENT_ID=...
|
|
1135
360
|
GOOGLE_CLIENT_SECRET=...
|
|
@@ -1138,16 +363,16 @@ GOOGLE_REDIRECT_URI=https://your-app.com/auth/google/callback`
|
|
|
1138
363
|
})
|
|
1139
364
|
]
|
|
1140
365
|
}),
|
|
1141
|
-
/* @__PURE__ */
|
|
366
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1142
367
|
className: "space-y-4",
|
|
1143
368
|
children: [
|
|
1144
|
-
/* @__PURE__ */
|
|
1145
|
-
className: "text-2xl
|
|
369
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
370
|
+
className: "font-bold text-2xl",
|
|
1146
371
|
children: "Reading emails"
|
|
1147
372
|
}),
|
|
1148
|
-
/* @__PURE__ */
|
|
1149
|
-
className: "
|
|
1150
|
-
children: /* @__PURE__ */
|
|
373
|
+
/* @__PURE__ */ jsx4("div", {
|
|
374
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
375
|
+
children: /* @__PURE__ */ jsx4("pre", {
|
|
1151
376
|
children: `capabilityId: gmail-list-messages
|
|
1152
377
|
provider:
|
|
1153
378
|
type: gmail
|
|
@@ -1174,46 +399,46 @@ outputs:
|
|
|
1174
399
|
})
|
|
1175
400
|
]
|
|
1176
401
|
}),
|
|
1177
|
-
/* @__PURE__ */
|
|
402
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1178
403
|
className: "space-y-4",
|
|
1179
404
|
children: [
|
|
1180
|
-
/* @__PURE__ */
|
|
1181
|
-
className: "text-2xl
|
|
405
|
+
/* @__PURE__ */ jsx4("h2", {
|
|
406
|
+
className: "font-bold text-2xl",
|
|
1182
407
|
children: "Use cases"
|
|
1183
408
|
}),
|
|
1184
|
-
/* @__PURE__ */
|
|
1185
|
-
className: "
|
|
409
|
+
/* @__PURE__ */ jsxs4("ul", {
|
|
410
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1186
411
|
children: [
|
|
1187
|
-
/* @__PURE__ */
|
|
412
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1188
413
|
children: "Parse support emails and create tickets"
|
|
1189
414
|
}),
|
|
1190
|
-
/* @__PURE__ */
|
|
415
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1191
416
|
children: "Extract attachments and process them"
|
|
1192
417
|
}),
|
|
1193
|
-
/* @__PURE__ */
|
|
418
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1194
419
|
children: "Build email-to-task workflows"
|
|
1195
420
|
}),
|
|
1196
|
-
/* @__PURE__ */
|
|
421
|
+
/* @__PURE__ */ jsx4("li", {
|
|
1197
422
|
children: "Monitor specific email threads"
|
|
1198
423
|
})
|
|
1199
424
|
]
|
|
1200
425
|
})
|
|
1201
426
|
]
|
|
1202
427
|
}),
|
|
1203
|
-
/* @__PURE__ */
|
|
428
|
+
/* @__PURE__ */ jsxs4("div", {
|
|
1204
429
|
className: "flex items-center gap-4 pt-4",
|
|
1205
430
|
children: [
|
|
1206
|
-
/* @__PURE__ */
|
|
431
|
+
/* @__PURE__ */ jsx4(Link3, {
|
|
1207
432
|
href: "/docs/integrations/resend",
|
|
1208
433
|
className: "btn-ghost",
|
|
1209
434
|
children: "Previous: Resend"
|
|
1210
435
|
}),
|
|
1211
|
-
/* @__PURE__ */
|
|
436
|
+
/* @__PURE__ */ jsxs4(Link3, {
|
|
1212
437
|
href: "/docs/integrations/google-calendar",
|
|
1213
438
|
className: "btn-primary",
|
|
1214
439
|
children: [
|
|
1215
440
|
"Next: Google Calendar ",
|
|
1216
|
-
/* @__PURE__ */
|
|
441
|
+
/* @__PURE__ */ jsx4(ChevronRight3, {
|
|
1217
442
|
size: 16
|
|
1218
443
|
})
|
|
1219
444
|
]
|
|
@@ -1225,36 +450,36 @@ outputs:
|
|
|
1225
450
|
}
|
|
1226
451
|
|
|
1227
452
|
// src/components/docs/integrations/IntegrationsGoogleCalendarPage.tsx
|
|
1228
|
-
import
|
|
1229
|
-
import { ChevronRight as
|
|
1230
|
-
import { jsx as
|
|
453
|
+
import Link4 from "@contractspec/lib.ui-link";
|
|
454
|
+
import { ChevronRight as ChevronRight4 } from "lucide-react";
|
|
455
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1231
456
|
function IntegrationsGoogleCalendarPage() {
|
|
1232
|
-
return /* @__PURE__ */
|
|
457
|
+
return /* @__PURE__ */ jsxs5("div", {
|
|
1233
458
|
className: "space-y-8",
|
|
1234
459
|
children: [
|
|
1235
|
-
/* @__PURE__ */
|
|
460
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1236
461
|
className: "space-y-4",
|
|
1237
462
|
children: [
|
|
1238
|
-
/* @__PURE__ */
|
|
1239
|
-
className: "text-4xl
|
|
463
|
+
/* @__PURE__ */ jsx5("h1", {
|
|
464
|
+
className: "font-bold text-4xl",
|
|
1240
465
|
children: "Google Calendar"
|
|
1241
466
|
}),
|
|
1242
|
-
/* @__PURE__ */
|
|
467
|
+
/* @__PURE__ */ jsx5("p", {
|
|
1243
468
|
className: "text-muted-foreground",
|
|
1244
469
|
children: "Integrate Google Calendar to schedule appointments, manage availability, and sync events with your application."
|
|
1245
470
|
})
|
|
1246
471
|
]
|
|
1247
472
|
}),
|
|
1248
|
-
/* @__PURE__ */
|
|
473
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1249
474
|
className: "space-y-4",
|
|
1250
475
|
children: [
|
|
1251
|
-
/* @__PURE__ */
|
|
1252
|
-
className: "text-2xl
|
|
476
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
477
|
+
className: "font-bold text-2xl",
|
|
1253
478
|
children: "Setup"
|
|
1254
479
|
}),
|
|
1255
|
-
/* @__PURE__ */
|
|
1256
|
-
className: "
|
|
1257
|
-
children: /* @__PURE__ */
|
|
480
|
+
/* @__PURE__ */ jsx5("div", {
|
|
481
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
482
|
+
children: /* @__PURE__ */ jsx5("pre", {
|
|
1258
483
|
children: `# .env
|
|
1259
484
|
GOOGLE_CLIENT_ID=...
|
|
1260
485
|
GOOGLE_CLIENT_SECRET=...
|
|
@@ -1263,16 +488,16 @@ GOOGLE_CALENDAR_ID=primary`
|
|
|
1263
488
|
})
|
|
1264
489
|
]
|
|
1265
490
|
}),
|
|
1266
|
-
/* @__PURE__ */
|
|
491
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1267
492
|
className: "space-y-4",
|
|
1268
493
|
children: [
|
|
1269
|
-
/* @__PURE__ */
|
|
1270
|
-
className: "text-2xl
|
|
494
|
+
/* @__PURE__ */ jsx5("h2", {
|
|
495
|
+
className: "font-bold text-2xl",
|
|
1271
496
|
children: "Creating events"
|
|
1272
497
|
}),
|
|
1273
|
-
/* @__PURE__ */
|
|
1274
|
-
className: "
|
|
1275
|
-
children: /* @__PURE__ */
|
|
498
|
+
/* @__PURE__ */ jsx5("div", {
|
|
499
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
500
|
+
children: /* @__PURE__ */ jsx5("pre", {
|
|
1276
501
|
children: `capabilityId: calendar-create-event
|
|
1277
502
|
provider:
|
|
1278
503
|
type: google-calendar
|
|
@@ -1302,20 +527,20 @@ outputs:
|
|
|
1302
527
|
})
|
|
1303
528
|
]
|
|
1304
529
|
}),
|
|
1305
|
-
/* @__PURE__ */
|
|
530
|
+
/* @__PURE__ */ jsxs5("div", {
|
|
1306
531
|
className: "flex items-center gap-4 pt-4",
|
|
1307
532
|
children: [
|
|
1308
|
-
/* @__PURE__ */
|
|
533
|
+
/* @__PURE__ */ jsx5(Link4, {
|
|
1309
534
|
href: "/docs/integrations/gmail",
|
|
1310
535
|
className: "btn-ghost",
|
|
1311
536
|
children: "Previous: Gmail API"
|
|
1312
537
|
}),
|
|
1313
|
-
/* @__PURE__ */
|
|
538
|
+
/* @__PURE__ */ jsxs5(Link4, {
|
|
1314
539
|
href: "/docs/integrations/openai",
|
|
1315
540
|
className: "btn-primary",
|
|
1316
541
|
children: [
|
|
1317
542
|
"Next: OpenAI ",
|
|
1318
|
-
/* @__PURE__ */
|
|
543
|
+
/* @__PURE__ */ jsx5(ChevronRight4, {
|
|
1319
544
|
size: 16
|
|
1320
545
|
})
|
|
1321
546
|
]
|
|
@@ -1327,35 +552,35 @@ outputs:
|
|
|
1327
552
|
}
|
|
1328
553
|
|
|
1329
554
|
// src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx
|
|
1330
|
-
import
|
|
1331
|
-
import { jsx as
|
|
555
|
+
import Link5 from "@contractspec/lib.ui-link";
|
|
556
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1332
557
|
function IntegrationsHealthRoutingPage() {
|
|
1333
|
-
return /* @__PURE__ */
|
|
558
|
+
return /* @__PURE__ */ jsxs6("div", {
|
|
1334
559
|
className: "space-y-8",
|
|
1335
560
|
children: [
|
|
1336
|
-
/* @__PURE__ */
|
|
561
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1337
562
|
className: "space-y-4",
|
|
1338
563
|
children: [
|
|
1339
|
-
/* @__PURE__ */
|
|
1340
|
-
className: "text-4xl
|
|
564
|
+
/* @__PURE__ */ jsx6("h1", {
|
|
565
|
+
className: "font-bold text-4xl",
|
|
1341
566
|
children: "Health Routing Strategy"
|
|
1342
567
|
}),
|
|
1343
|
-
/* @__PURE__ */
|
|
568
|
+
/* @__PURE__ */ jsx6("p", {
|
|
1344
569
|
className: "text-muted-foreground",
|
|
1345
570
|
children: "Health integrations resolve providers through deterministic transport strategy order with explicit capability gating and unofficial-route controls."
|
|
1346
571
|
})
|
|
1347
572
|
]
|
|
1348
573
|
}),
|
|
1349
|
-
/* @__PURE__ */
|
|
574
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1350
575
|
className: "space-y-4",
|
|
1351
576
|
children: [
|
|
1352
|
-
/* @__PURE__ */
|
|
1353
|
-
className: "text-2xl
|
|
577
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
578
|
+
className: "font-bold text-2xl",
|
|
1354
579
|
children: "Connection config fields"
|
|
1355
580
|
}),
|
|
1356
|
-
/* @__PURE__ */
|
|
1357
|
-
className: "
|
|
1358
|
-
children: /* @__PURE__ */
|
|
581
|
+
/* @__PURE__ */ jsx6("div", {
|
|
582
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
583
|
+
children: /* @__PURE__ */ jsx6("pre", {
|
|
1359
584
|
children: `{
|
|
1360
585
|
"defaultTransport": "official-api",
|
|
1361
586
|
"strategyOrder": [
|
|
@@ -1375,16 +600,16 @@ function IntegrationsHealthRoutingPage() {
|
|
|
1375
600
|
})
|
|
1376
601
|
]
|
|
1377
602
|
}),
|
|
1378
|
-
/* @__PURE__ */
|
|
603
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1379
604
|
className: "space-y-4",
|
|
1380
605
|
children: [
|
|
1381
|
-
/* @__PURE__ */
|
|
1382
|
-
className: "text-2xl
|
|
606
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
607
|
+
className: "font-bold text-2xl",
|
|
1383
608
|
children: "Secret payload fields"
|
|
1384
609
|
}),
|
|
1385
|
-
/* @__PURE__ */
|
|
1386
|
-
className: "
|
|
1387
|
-
children: /* @__PURE__ */
|
|
610
|
+
/* @__PURE__ */ jsx6("div", {
|
|
611
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
612
|
+
children: /* @__PURE__ */ jsx6("pre", {
|
|
1388
613
|
children: `{
|
|
1389
614
|
"apiKey": "...",
|
|
1390
615
|
"accessToken": "...",
|
|
@@ -1399,47 +624,47 @@ function IntegrationsHealthRoutingPage() {
|
|
|
1399
624
|
})
|
|
1400
625
|
]
|
|
1401
626
|
}),
|
|
1402
|
-
/* @__PURE__ */
|
|
627
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1403
628
|
className: "space-y-4",
|
|
1404
629
|
children: [
|
|
1405
|
-
/* @__PURE__ */
|
|
1406
|
-
className: "text-2xl
|
|
630
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
631
|
+
className: "font-bold text-2xl",
|
|
1407
632
|
children: "Routing behavior"
|
|
1408
633
|
}),
|
|
1409
|
-
/* @__PURE__ */
|
|
1410
|
-
className: "
|
|
634
|
+
/* @__PURE__ */ jsxs6("ul", {
|
|
635
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1411
636
|
children: [
|
|
1412
|
-
/* @__PURE__ */
|
|
637
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1413
638
|
children: "Unsupported strategies are skipped per provider capability matrix."
|
|
1414
639
|
}),
|
|
1415
|
-
/* @__PURE__ */
|
|
640
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1416
641
|
children: "Missing credentials fail closed and fall through only when a later strategy is valid."
|
|
1417
642
|
}),
|
|
1418
|
-
/* @__PURE__ */
|
|
643
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1419
644
|
children: [
|
|
1420
645
|
"Unofficial routes are disabled unless",
|
|
1421
|
-
/* @__PURE__ */
|
|
1422
|
-
className: "bg-background/50
|
|
646
|
+
/* @__PURE__ */ jsx6("code", {
|
|
647
|
+
className: "ml-1 rounded bg-background/50 px-2 py-1",
|
|
1423
648
|
children: "allowUnofficial"
|
|
1424
649
|
}),
|
|
1425
650
|
"is true."
|
|
1426
651
|
]
|
|
1427
652
|
}),
|
|
1428
|
-
/* @__PURE__ */
|
|
653
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1429
654
|
children: [
|
|
1430
655
|
"When",
|
|
1431
|
-
/* @__PURE__ */
|
|
1432
|
-
className: "bg-background/50
|
|
656
|
+
/* @__PURE__ */ jsx6("code", {
|
|
657
|
+
className: "ml-1 rounded bg-background/50 px-2 py-1",
|
|
1433
658
|
children: "unofficialAllowList"
|
|
1434
659
|
}),
|
|
1435
660
|
"is set, only listed provider keys can route unofficially."
|
|
1436
661
|
]
|
|
1437
662
|
}),
|
|
1438
|
-
/* @__PURE__ */
|
|
663
|
+
/* @__PURE__ */ jsxs6("li", {
|
|
1439
664
|
children: [
|
|
1440
665
|
"OAuth refresh uses",
|
|
1441
|
-
/* @__PURE__ */
|
|
1442
|
-
className: "bg-background/50
|
|
666
|
+
/* @__PURE__ */ jsx6("code", {
|
|
667
|
+
className: "ml-1 rounded bg-background/50 px-2 py-1",
|
|
1443
668
|
children: "oauthTokenUrl"
|
|
1444
669
|
}),
|
|
1445
670
|
"with refresh/client credentials when APIs return 401."
|
|
@@ -1449,38 +674,38 @@ function IntegrationsHealthRoutingPage() {
|
|
|
1449
674
|
})
|
|
1450
675
|
]
|
|
1451
676
|
}),
|
|
1452
|
-
/* @__PURE__ */
|
|
677
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1453
678
|
className: "space-y-4",
|
|
1454
679
|
children: [
|
|
1455
|
-
/* @__PURE__ */
|
|
1456
|
-
className: "text-2xl
|
|
680
|
+
/* @__PURE__ */ jsx6("h2", {
|
|
681
|
+
className: "font-bold text-2xl",
|
|
1457
682
|
children: "Provider guidance"
|
|
1458
683
|
}),
|
|
1459
|
-
/* @__PURE__ */
|
|
1460
|
-
className: "
|
|
684
|
+
/* @__PURE__ */ jsxs6("ul", {
|
|
685
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1461
686
|
children: [
|
|
1462
|
-
/* @__PURE__ */
|
|
687
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1463
688
|
children: "Use official APIs when available (Whoop, Oura, Strava, Fitbit)."
|
|
1464
689
|
}),
|
|
1465
|
-
/* @__PURE__ */
|
|
690
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1466
691
|
children: "Use aggregator routing for providers without stable official APIs (Garmin, MyFitnessPal, Eight Sleep, Peloton)."
|
|
1467
692
|
}),
|
|
1468
|
-
/* @__PURE__ */
|
|
693
|
+
/* @__PURE__ */ jsx6("li", {
|
|
1469
694
|
children: "Keep unofficial automation opt-in and auditable for production."
|
|
1470
695
|
})
|
|
1471
696
|
]
|
|
1472
697
|
})
|
|
1473
698
|
]
|
|
1474
699
|
}),
|
|
1475
|
-
/* @__PURE__ */
|
|
700
|
+
/* @__PURE__ */ jsxs6("div", {
|
|
1476
701
|
className: "flex items-center gap-4 pt-4",
|
|
1477
702
|
children: [
|
|
1478
|
-
/* @__PURE__ */
|
|
703
|
+
/* @__PURE__ */ jsx6(Link5, {
|
|
1479
704
|
href: "/docs/integrations/whatsapp-twilio",
|
|
1480
705
|
className: "btn-ghost",
|
|
1481
706
|
children: "Previous: WhatsApp Twilio"
|
|
1482
707
|
}),
|
|
1483
|
-
/* @__PURE__ */
|
|
708
|
+
/* @__PURE__ */ jsx6(Link5, {
|
|
1484
709
|
href: "/docs/integrations",
|
|
1485
710
|
className: "btn-primary",
|
|
1486
711
|
children: "Back to Integrations"
|
|
@@ -1492,52 +717,52 @@ function IntegrationsHealthRoutingPage() {
|
|
|
1492
717
|
}
|
|
1493
718
|
|
|
1494
719
|
// src/components/docs/integrations/IntegrationsMistralPage.tsx
|
|
1495
|
-
import
|
|
1496
|
-
import { ChevronRight as
|
|
1497
|
-
import { jsx as
|
|
720
|
+
import Link6 from "@contractspec/lib.ui-link";
|
|
721
|
+
import { ChevronRight as ChevronRight5 } from "lucide-react";
|
|
722
|
+
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1498
723
|
function IntegrationsMistralPage() {
|
|
1499
|
-
return /* @__PURE__ */
|
|
724
|
+
return /* @__PURE__ */ jsxs7("div", {
|
|
1500
725
|
className: "space-y-8",
|
|
1501
726
|
children: [
|
|
1502
|
-
/* @__PURE__ */
|
|
727
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1503
728
|
className: "space-y-4",
|
|
1504
729
|
children: [
|
|
1505
|
-
/* @__PURE__ */
|
|
1506
|
-
className: "text-4xl
|
|
730
|
+
/* @__PURE__ */ jsx7("h1", {
|
|
731
|
+
className: "font-bold text-4xl",
|
|
1507
732
|
children: "Mistral"
|
|
1508
733
|
}),
|
|
1509
|
-
/* @__PURE__ */
|
|
734
|
+
/* @__PURE__ */ jsx7("p", {
|
|
1510
735
|
className: "text-muted-foreground",
|
|
1511
736
|
children: "Integrate Mistral models for chat, reasoning, embeddings, speech-to-text, and conversational voice workflows. ContractSpec ships first-class Mistral support across contracts, provider runtime wiring, and CLI provider selection."
|
|
1512
737
|
})
|
|
1513
738
|
]
|
|
1514
739
|
}),
|
|
1515
|
-
/* @__PURE__ */
|
|
740
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1516
741
|
className: "space-y-4",
|
|
1517
742
|
children: [
|
|
1518
|
-
/* @__PURE__ */
|
|
1519
|
-
className: "text-2xl
|
|
743
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
744
|
+
className: "font-bold text-2xl",
|
|
1520
745
|
children: "Setup"
|
|
1521
746
|
}),
|
|
1522
|
-
/* @__PURE__ */
|
|
1523
|
-
className: "
|
|
1524
|
-
children: /* @__PURE__ */
|
|
747
|
+
/* @__PURE__ */ jsx7("div", {
|
|
748
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
749
|
+
children: /* @__PURE__ */ jsx7("pre", {
|
|
1525
750
|
children: `# .env
|
|
1526
751
|
MISTRAL_API_KEY=...`
|
|
1527
752
|
})
|
|
1528
753
|
})
|
|
1529
754
|
]
|
|
1530
755
|
}),
|
|
1531
|
-
/* @__PURE__ */
|
|
756
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1532
757
|
className: "space-y-4",
|
|
1533
758
|
children: [
|
|
1534
|
-
/* @__PURE__ */
|
|
1535
|
-
className: "text-2xl
|
|
759
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
760
|
+
className: "font-bold text-2xl",
|
|
1536
761
|
children: "Chat and reasoning"
|
|
1537
762
|
}),
|
|
1538
|
-
/* @__PURE__ */
|
|
1539
|
-
className: "
|
|
1540
|
-
children: /* @__PURE__ */
|
|
763
|
+
/* @__PURE__ */ jsx7("div", {
|
|
764
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
765
|
+
children: /* @__PURE__ */ jsx7("pre", {
|
|
1541
766
|
children: `capabilityId: mistral-chat
|
|
1542
767
|
provider:
|
|
1543
768
|
type: mistral
|
|
@@ -1562,16 +787,16 @@ outputs:
|
|
|
1562
787
|
})
|
|
1563
788
|
]
|
|
1564
789
|
}),
|
|
1565
|
-
/* @__PURE__ */
|
|
790
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1566
791
|
className: "space-y-4",
|
|
1567
792
|
children: [
|
|
1568
|
-
/* @__PURE__ */
|
|
1569
|
-
className: "text-2xl
|
|
793
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
794
|
+
className: "font-bold text-2xl",
|
|
1570
795
|
children: "Embeddings"
|
|
1571
796
|
}),
|
|
1572
|
-
/* @__PURE__ */
|
|
1573
|
-
className: "
|
|
1574
|
-
children: /* @__PURE__ */
|
|
797
|
+
/* @__PURE__ */ jsx7("div", {
|
|
798
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
799
|
+
children: /* @__PURE__ */ jsx7("pre", {
|
|
1575
800
|
children: `capabilityId: mistral-embeddings
|
|
1576
801
|
provider:
|
|
1577
802
|
type: mistral
|
|
@@ -1593,16 +818,16 @@ outputs:
|
|
|
1593
818
|
})
|
|
1594
819
|
]
|
|
1595
820
|
}),
|
|
1596
|
-
/* @__PURE__ */
|
|
821
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1597
822
|
className: "space-y-4",
|
|
1598
823
|
children: [
|
|
1599
|
-
/* @__PURE__ */
|
|
1600
|
-
className: "text-2xl
|
|
824
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
825
|
+
className: "font-bold text-2xl",
|
|
1601
826
|
children: "Speech-to-Text (Voxtral)"
|
|
1602
827
|
}),
|
|
1603
|
-
/* @__PURE__ */
|
|
1604
|
-
className: "
|
|
1605
|
-
children: /* @__PURE__ */
|
|
828
|
+
/* @__PURE__ */ jsx7("div", {
|
|
829
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
830
|
+
children: /* @__PURE__ */ jsx7("pre", {
|
|
1606
831
|
children: `capabilityId: mistral-stt
|
|
1607
832
|
provider:
|
|
1608
833
|
type: mistral
|
|
@@ -1628,59 +853,59 @@ outputs:
|
|
|
1628
853
|
})
|
|
1629
854
|
]
|
|
1630
855
|
}),
|
|
1631
|
-
/* @__PURE__ */
|
|
856
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1632
857
|
className: "space-y-4",
|
|
1633
858
|
children: [
|
|
1634
|
-
/* @__PURE__ */
|
|
1635
|
-
className: "text-2xl
|
|
859
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
860
|
+
className: "font-bold text-2xl",
|
|
1636
861
|
children: "Conversational voice sessions"
|
|
1637
862
|
}),
|
|
1638
|
-
/* @__PURE__ */
|
|
863
|
+
/* @__PURE__ */ jsx7("p", {
|
|
1639
864
|
className: "text-muted-foreground",
|
|
1640
865
|
children: "Use the conversational provider for session-based realtime voice flows (turn handling, events, and interruption-safe streaming)."
|
|
1641
866
|
})
|
|
1642
867
|
]
|
|
1643
868
|
}),
|
|
1644
|
-
/* @__PURE__ */
|
|
869
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1645
870
|
className: "space-y-4",
|
|
1646
871
|
children: [
|
|
1647
|
-
/* @__PURE__ */
|
|
1648
|
-
className: "text-2xl
|
|
872
|
+
/* @__PURE__ */ jsx7("h2", {
|
|
873
|
+
className: "font-bold text-2xl",
|
|
1649
874
|
children: "Best practices"
|
|
1650
875
|
}),
|
|
1651
|
-
/* @__PURE__ */
|
|
1652
|
-
className: "
|
|
876
|
+
/* @__PURE__ */ jsxs7("ul", {
|
|
877
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1653
878
|
children: [
|
|
1654
|
-
/* @__PURE__ */
|
|
879
|
+
/* @__PURE__ */ jsx7("li", {
|
|
1655
880
|
children: "Choose model families by workload: coding, reasoning, or speech"
|
|
1656
881
|
}),
|
|
1657
|
-
/* @__PURE__ */
|
|
882
|
+
/* @__PURE__ */ jsx7("li", {
|
|
1658
883
|
children: "Persist session IDs for conversational continuity across turns"
|
|
1659
884
|
}),
|
|
1660
|
-
/* @__PURE__ */
|
|
885
|
+
/* @__PURE__ */ jsx7("li", {
|
|
1661
886
|
children: "Capture token and latency telemetry for provider-level tuning"
|
|
1662
887
|
}),
|
|
1663
|
-
/* @__PURE__ */
|
|
888
|
+
/* @__PURE__ */ jsx7("li", {
|
|
1664
889
|
children: "Set explicit fallbacks for network and rate-limit failures"
|
|
1665
890
|
})
|
|
1666
891
|
]
|
|
1667
892
|
})
|
|
1668
893
|
]
|
|
1669
894
|
}),
|
|
1670
|
-
/* @__PURE__ */
|
|
895
|
+
/* @__PURE__ */ jsxs7("div", {
|
|
1671
896
|
className: "flex items-center gap-4 pt-4",
|
|
1672
897
|
children: [
|
|
1673
|
-
/* @__PURE__ */
|
|
898
|
+
/* @__PURE__ */ jsx7(Link6, {
|
|
1674
899
|
href: "/docs/integrations/openai",
|
|
1675
900
|
className: "btn-ghost",
|
|
1676
901
|
children: "Previous: OpenAI"
|
|
1677
902
|
}),
|
|
1678
|
-
/* @__PURE__ */
|
|
903
|
+
/* @__PURE__ */ jsxs7(Link6, {
|
|
1679
904
|
href: "/docs/integrations/elevenlabs",
|
|
1680
905
|
className: "btn-primary",
|
|
1681
906
|
children: [
|
|
1682
907
|
"Next: ElevenLabs ",
|
|
1683
|
-
/* @__PURE__ */
|
|
908
|
+
/* @__PURE__ */ jsx7(ChevronRight5, {
|
|
1684
909
|
size: 16
|
|
1685
910
|
})
|
|
1686
911
|
]
|
|
@@ -1692,36 +917,36 @@ outputs:
|
|
|
1692
917
|
}
|
|
1693
918
|
|
|
1694
919
|
// src/components/docs/integrations/IntegrationsOpenAIPage.tsx
|
|
1695
|
-
import
|
|
1696
|
-
import { ChevronRight as
|
|
1697
|
-
import { jsx as
|
|
920
|
+
import Link7 from "@contractspec/lib.ui-link";
|
|
921
|
+
import { ChevronRight as ChevronRight6 } from "lucide-react";
|
|
922
|
+
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1698
923
|
function IntegrationsOpenAIPage() {
|
|
1699
|
-
return /* @__PURE__ */
|
|
924
|
+
return /* @__PURE__ */ jsxs8("div", {
|
|
1700
925
|
className: "space-y-8",
|
|
1701
926
|
children: [
|
|
1702
|
-
/* @__PURE__ */
|
|
927
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1703
928
|
className: "space-y-4",
|
|
1704
929
|
children: [
|
|
1705
|
-
/* @__PURE__ */
|
|
1706
|
-
className: "text-4xl
|
|
930
|
+
/* @__PURE__ */ jsx8("h1", {
|
|
931
|
+
className: "font-bold text-4xl",
|
|
1707
932
|
children: "OpenAI"
|
|
1708
933
|
}),
|
|
1709
|
-
/* @__PURE__ */
|
|
934
|
+
/* @__PURE__ */ jsx8("p", {
|
|
1710
935
|
className: "text-muted-foreground",
|
|
1711
936
|
children: "Integrate OpenAI's powerful AI models for chat completion, embeddings, and speech-to-text. Build intelligent features with GPT-4, generate embeddings for semantic search, and transcribe audio with Whisper."
|
|
1712
937
|
})
|
|
1713
938
|
]
|
|
1714
939
|
}),
|
|
1715
|
-
/* @__PURE__ */
|
|
940
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1716
941
|
className: "space-y-4",
|
|
1717
942
|
children: [
|
|
1718
|
-
/* @__PURE__ */
|
|
1719
|
-
className: "text-2xl
|
|
943
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
944
|
+
className: "font-bold text-2xl",
|
|
1720
945
|
children: "Setup"
|
|
1721
946
|
}),
|
|
1722
|
-
/* @__PURE__ */
|
|
1723
|
-
className: "
|
|
1724
|
-
children: /* @__PURE__ */
|
|
947
|
+
/* @__PURE__ */ jsx8("div", {
|
|
948
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
949
|
+
children: /* @__PURE__ */ jsx8("pre", {
|
|
1725
950
|
children: `# .env
|
|
1726
951
|
OPENAI_API_KEY=sk-...
|
|
1727
952
|
OPENAI_ORGANIZATION=org-...`
|
|
@@ -1729,16 +954,16 @@ OPENAI_ORGANIZATION=org-...`
|
|
|
1729
954
|
})
|
|
1730
955
|
]
|
|
1731
956
|
}),
|
|
1732
|
-
/* @__PURE__ */
|
|
957
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1733
958
|
className: "space-y-4",
|
|
1734
959
|
children: [
|
|
1735
|
-
/* @__PURE__ */
|
|
1736
|
-
className: "text-2xl
|
|
960
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
961
|
+
className: "font-bold text-2xl",
|
|
1737
962
|
children: "Chat completions"
|
|
1738
963
|
}),
|
|
1739
|
-
/* @__PURE__ */
|
|
1740
|
-
className: "
|
|
1741
|
-
children: /* @__PURE__ */
|
|
964
|
+
/* @__PURE__ */ jsx8("div", {
|
|
965
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
966
|
+
children: /* @__PURE__ */ jsx8("pre", {
|
|
1742
967
|
children: `capabilityId: openai-chat
|
|
1743
968
|
provider:
|
|
1744
969
|
type: openai
|
|
@@ -1769,16 +994,16 @@ outputs:
|
|
|
1769
994
|
})
|
|
1770
995
|
]
|
|
1771
996
|
}),
|
|
1772
|
-
/* @__PURE__ */
|
|
997
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1773
998
|
className: "space-y-4",
|
|
1774
999
|
children: [
|
|
1775
|
-
/* @__PURE__ */
|
|
1776
|
-
className: "text-2xl
|
|
1000
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
1001
|
+
className: "font-bold text-2xl",
|
|
1777
1002
|
children: "Embeddings"
|
|
1778
1003
|
}),
|
|
1779
|
-
/* @__PURE__ */
|
|
1780
|
-
className: "
|
|
1781
|
-
children: /* @__PURE__ */
|
|
1004
|
+
/* @__PURE__ */ jsx8("div", {
|
|
1005
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
1006
|
+
children: /* @__PURE__ */ jsx8("pre", {
|
|
1782
1007
|
children: `capabilityId: openai-embeddings
|
|
1783
1008
|
provider:
|
|
1784
1009
|
type: openai
|
|
@@ -1800,16 +1025,16 @@ outputs:
|
|
|
1800
1025
|
})
|
|
1801
1026
|
]
|
|
1802
1027
|
}),
|
|
1803
|
-
/* @__PURE__ */
|
|
1028
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1804
1029
|
className: "space-y-4",
|
|
1805
1030
|
children: [
|
|
1806
|
-
/* @__PURE__ */
|
|
1807
|
-
className: "text-2xl
|
|
1031
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
1032
|
+
className: "font-bold text-2xl",
|
|
1808
1033
|
children: "Whisper (Speech-to-Text)"
|
|
1809
1034
|
}),
|
|
1810
|
-
/* @__PURE__ */
|
|
1811
|
-
className: "
|
|
1812
|
-
children: /* @__PURE__ */
|
|
1035
|
+
/* @__PURE__ */ jsx8("div", {
|
|
1036
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
1037
|
+
children: /* @__PURE__ */ jsx8("pre", {
|
|
1813
1038
|
children: `capabilityId: openai-transcribe
|
|
1814
1039
|
provider:
|
|
1815
1040
|
type: openai
|
|
@@ -1831,49 +1056,49 @@ outputs:
|
|
|
1831
1056
|
})
|
|
1832
1057
|
]
|
|
1833
1058
|
}),
|
|
1834
|
-
/* @__PURE__ */
|
|
1059
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1835
1060
|
className: "space-y-4",
|
|
1836
1061
|
children: [
|
|
1837
|
-
/* @__PURE__ */
|
|
1838
|
-
className: "text-2xl
|
|
1062
|
+
/* @__PURE__ */ jsx8("h2", {
|
|
1063
|
+
className: "font-bold text-2xl",
|
|
1839
1064
|
children: "Best practices"
|
|
1840
1065
|
}),
|
|
1841
|
-
/* @__PURE__ */
|
|
1842
|
-
className: "
|
|
1066
|
+
/* @__PURE__ */ jsxs8("ul", {
|
|
1067
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
1843
1068
|
children: [
|
|
1844
|
-
/* @__PURE__ */
|
|
1069
|
+
/* @__PURE__ */ jsx8("li", {
|
|
1845
1070
|
children: "Use streaming for real-time chat responses"
|
|
1846
1071
|
}),
|
|
1847
|
-
/* @__PURE__ */
|
|
1072
|
+
/* @__PURE__ */ jsx8("li", {
|
|
1848
1073
|
children: "Cache embeddings to reduce API costs"
|
|
1849
1074
|
}),
|
|
1850
|
-
/* @__PURE__ */
|
|
1075
|
+
/* @__PURE__ */ jsx8("li", {
|
|
1851
1076
|
children: "Implement rate limiting to avoid quota issues"
|
|
1852
1077
|
}),
|
|
1853
|
-
/* @__PURE__ */
|
|
1078
|
+
/* @__PURE__ */ jsx8("li", {
|
|
1854
1079
|
children: "Store conversation history for context"
|
|
1855
1080
|
}),
|
|
1856
|
-
/* @__PURE__ */
|
|
1081
|
+
/* @__PURE__ */ jsx8("li", {
|
|
1857
1082
|
children: "Monitor token usage and costs"
|
|
1858
1083
|
})
|
|
1859
1084
|
]
|
|
1860
1085
|
})
|
|
1861
1086
|
]
|
|
1862
1087
|
}),
|
|
1863
|
-
/* @__PURE__ */
|
|
1088
|
+
/* @__PURE__ */ jsxs8("div", {
|
|
1864
1089
|
className: "flex items-center gap-4 pt-4",
|
|
1865
1090
|
children: [
|
|
1866
|
-
/* @__PURE__ */
|
|
1091
|
+
/* @__PURE__ */ jsx8(Link7, {
|
|
1867
1092
|
href: "/docs/integrations/google-calendar",
|
|
1868
1093
|
className: "btn-ghost",
|
|
1869
1094
|
children: "Previous: Google Calendar"
|
|
1870
1095
|
}),
|
|
1871
|
-
/* @__PURE__ */
|
|
1096
|
+
/* @__PURE__ */ jsxs8(Link7, {
|
|
1872
1097
|
href: "/docs/integrations/mistral",
|
|
1873
1098
|
className: "btn-primary",
|
|
1874
1099
|
children: [
|
|
1875
1100
|
"Next: Mistral ",
|
|
1876
|
-
/* @__PURE__ */
|
|
1101
|
+
/* @__PURE__ */ jsx8(ChevronRight6, {
|
|
1877
1102
|
size: 16
|
|
1878
1103
|
})
|
|
1879
1104
|
]
|
|
@@ -1884,9 +1109,167 @@ outputs:
|
|
|
1884
1109
|
});
|
|
1885
1110
|
}
|
|
1886
1111
|
|
|
1112
|
+
// src/components/docs/integrations/IntegrationsOverviewPage.tsx
|
|
1113
|
+
import Link8 from "@contractspec/lib.ui-link";
|
|
1114
|
+
import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1115
|
+
var groups = [
|
|
1116
|
+
{
|
|
1117
|
+
title: "Models and voice",
|
|
1118
|
+
items: [
|
|
1119
|
+
{ title: "OpenAI", href: "/docs/integrations/openai" },
|
|
1120
|
+
{ title: "Mistral", href: "/docs/integrations/mistral" },
|
|
1121
|
+
{ title: "ElevenLabs", href: "/docs/integrations/elevenlabs" }
|
|
1122
|
+
]
|
|
1123
|
+
},
|
|
1124
|
+
{
|
|
1125
|
+
title: "Messaging and product operations",
|
|
1126
|
+
items: [
|
|
1127
|
+
{ title: "GitHub", href: "/docs/integrations/github" },
|
|
1128
|
+
{ title: "Slack", href: "/docs/integrations/slack" },
|
|
1129
|
+
{ title: "Twilio", href: "/docs/integrations/twilio" },
|
|
1130
|
+
{ title: "Postmark", href: "/docs/integrations/postmark" }
|
|
1131
|
+
]
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
title: "Data, storage, and retrieval",
|
|
1135
|
+
items: [
|
|
1136
|
+
{ title: "Qdrant", href: "/docs/integrations/qdrant" },
|
|
1137
|
+
{ title: "S3 storage", href: "/docs/integrations/s3" },
|
|
1138
|
+
{ title: "Gmail", href: "/docs/integrations/gmail" },
|
|
1139
|
+
{ title: "Google Calendar", href: "/docs/integrations/google-calendar" }
|
|
1140
|
+
]
|
|
1141
|
+
},
|
|
1142
|
+
{
|
|
1143
|
+
title: "Payments and external workflows",
|
|
1144
|
+
items: [
|
|
1145
|
+
{ title: "Stripe", href: "/docs/integrations/stripe" },
|
|
1146
|
+
{ title: "Powens", href: "/docs/integrations/powens" },
|
|
1147
|
+
{
|
|
1148
|
+
title: "Circuit breakers",
|
|
1149
|
+
href: "/docs/integrations/circuit-breakers"
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
title: "Health routing",
|
|
1153
|
+
href: "/docs/integrations/health-routing"
|
|
1154
|
+
}
|
|
1155
|
+
]
|
|
1156
|
+
}
|
|
1157
|
+
];
|
|
1158
|
+
function IntegrationsOverviewPage() {
|
|
1159
|
+
return /* @__PURE__ */ jsxs9("div", {
|
|
1160
|
+
className: "space-y-10",
|
|
1161
|
+
children: [
|
|
1162
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1163
|
+
className: "space-y-3",
|
|
1164
|
+
children: [
|
|
1165
|
+
/* @__PURE__ */ jsx9("p", {
|
|
1166
|
+
className: "editorial-kicker",
|
|
1167
|
+
children: "Integrations"
|
|
1168
|
+
}),
|
|
1169
|
+
/* @__PURE__ */ jsx9("h1", {
|
|
1170
|
+
className: "font-serif text-4xl tracking-[-0.04em] md:text-5xl",
|
|
1171
|
+
children: "Integrations stay explicit: spec what a provider offers, then bind it per tenant and per app."
|
|
1172
|
+
}),
|
|
1173
|
+
/* @__PURE__ */ jsx9("p", {
|
|
1174
|
+
className: "max-w-3xl text-lg text-muted-foreground leading-8",
|
|
1175
|
+
children: "The integration model keeps provider behavior out of ad hoc glue code. Define the capability contract first, configure the provider connection explicitly, then bind the integration into app workflows and runtime surfaces with clear ownership."
|
|
1176
|
+
})
|
|
1177
|
+
]
|
|
1178
|
+
}),
|
|
1179
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1180
|
+
className: "editorial-proof-strip",
|
|
1181
|
+
children: [
|
|
1182
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1183
|
+
className: "editorial-stat",
|
|
1184
|
+
children: [
|
|
1185
|
+
/* @__PURE__ */ jsx9("span", {
|
|
1186
|
+
className: "editorial-label",
|
|
1187
|
+
children: "Binding model"
|
|
1188
|
+
}),
|
|
1189
|
+
/* @__PURE__ */ jsx9("span", {
|
|
1190
|
+
className: "editorial-stat-value",
|
|
1191
|
+
children: "Integration spec → tenant connection → app binding"
|
|
1192
|
+
})
|
|
1193
|
+
]
|
|
1194
|
+
}),
|
|
1195
|
+
/* @__PURE__ */ jsx9("p", {
|
|
1196
|
+
className: "max-w-2xl text-muted-foreground text-sm leading-7",
|
|
1197
|
+
children: "That separation is what makes reuse, tenant isolation, and provider swaps practical without rewriting every surface."
|
|
1198
|
+
})
|
|
1199
|
+
]
|
|
1200
|
+
}),
|
|
1201
|
+
/* @__PURE__ */ jsx9("section", {
|
|
1202
|
+
className: "editorial-panel space-y-5",
|
|
1203
|
+
children: /* @__PURE__ */ jsxs9("div", {
|
|
1204
|
+
className: "space-y-2",
|
|
1205
|
+
children: [
|
|
1206
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1207
|
+
className: "font-serif text-3xl tracking-[-0.03em]",
|
|
1208
|
+
children: "Start with the model, then pick a provider"
|
|
1209
|
+
}),
|
|
1210
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
1211
|
+
className: "grid gap-4 md:grid-cols-2",
|
|
1212
|
+
children: [
|
|
1213
|
+
/* @__PURE__ */ jsxs9(Link8, {
|
|
1214
|
+
href: "/docs/integrations/spec-model",
|
|
1215
|
+
className: "docs-footer-link",
|
|
1216
|
+
children: [
|
|
1217
|
+
/* @__PURE__ */ jsx9("h3", {
|
|
1218
|
+
className: "font-semibold text-lg",
|
|
1219
|
+
children: "Integration spec model"
|
|
1220
|
+
}),
|
|
1221
|
+
/* @__PURE__ */ jsx9("p", {
|
|
1222
|
+
className: "text-muted-foreground text-sm leading-7",
|
|
1223
|
+
children: "Define what the provider offers, what configuration it needs, and how the runtime should treat it."
|
|
1224
|
+
})
|
|
1225
|
+
]
|
|
1226
|
+
}),
|
|
1227
|
+
/* @__PURE__ */ jsxs9(Link8, {
|
|
1228
|
+
href: "/docs/architecture/integration-binding",
|
|
1229
|
+
className: "docs-footer-link",
|
|
1230
|
+
children: [
|
|
1231
|
+
/* @__PURE__ */ jsx9("h3", {
|
|
1232
|
+
className: "font-semibold text-lg",
|
|
1233
|
+
children: "Integration binding"
|
|
1234
|
+
}),
|
|
1235
|
+
/* @__PURE__ */ jsx9("p", {
|
|
1236
|
+
className: "text-muted-foreground text-sm leading-7",
|
|
1237
|
+
children: "Understand how tenant connections get mapped into concrete app surfaces and workflows."
|
|
1238
|
+
})
|
|
1239
|
+
]
|
|
1240
|
+
})
|
|
1241
|
+
]
|
|
1242
|
+
})
|
|
1243
|
+
]
|
|
1244
|
+
})
|
|
1245
|
+
}),
|
|
1246
|
+
/* @__PURE__ */ jsx9("div", {
|
|
1247
|
+
className: "grid gap-5 md:grid-cols-2",
|
|
1248
|
+
children: groups.map((group) => /* @__PURE__ */ jsxs9("section", {
|
|
1249
|
+
className: "editorial-panel space-y-4",
|
|
1250
|
+
children: [
|
|
1251
|
+
/* @__PURE__ */ jsx9("h2", {
|
|
1252
|
+
className: "font-serif text-2xl tracking-[-0.03em]",
|
|
1253
|
+
children: group.title
|
|
1254
|
+
}),
|
|
1255
|
+
/* @__PURE__ */ jsx9("div", {
|
|
1256
|
+
className: "space-y-3",
|
|
1257
|
+
children: group.items.map((item) => /* @__PURE__ */ jsx9(Link8, {
|
|
1258
|
+
href: item.href,
|
|
1259
|
+
className: "docs-chip-link",
|
|
1260
|
+
children: item.title
|
|
1261
|
+
}, item.href))
|
|
1262
|
+
})
|
|
1263
|
+
]
|
|
1264
|
+
}, group.title))
|
|
1265
|
+
})
|
|
1266
|
+
]
|
|
1267
|
+
});
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1887
1270
|
// src/components/docs/integrations/IntegrationsPostmarkPage.tsx
|
|
1888
1271
|
import Link9 from "@contractspec/lib.ui-link";
|
|
1889
|
-
import { ChevronRight as
|
|
1272
|
+
import { ChevronRight as ChevronRight7 } from "lucide-react";
|
|
1890
1273
|
import { jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1891
1274
|
function IntegrationsPostmarkPage() {
|
|
1892
1275
|
return /* @__PURE__ */ jsxs10("div", {
|
|
@@ -1896,7 +1279,7 @@ function IntegrationsPostmarkPage() {
|
|
|
1896
1279
|
className: "space-y-4",
|
|
1897
1280
|
children: [
|
|
1898
1281
|
/* @__PURE__ */ jsx10("h1", {
|
|
1899
|
-
className: "text-4xl
|
|
1282
|
+
className: "font-bold text-4xl",
|
|
1900
1283
|
children: "Postmark"
|
|
1901
1284
|
}),
|
|
1902
1285
|
/* @__PURE__ */ jsx10("p", {
|
|
@@ -1909,7 +1292,7 @@ function IntegrationsPostmarkPage() {
|
|
|
1909
1292
|
className: "space-y-4",
|
|
1910
1293
|
children: [
|
|
1911
1294
|
/* @__PURE__ */ jsx10("h2", {
|
|
1912
|
-
className: "text-2xl
|
|
1295
|
+
className: "font-bold text-2xl",
|
|
1913
1296
|
children: "Setup"
|
|
1914
1297
|
}),
|
|
1915
1298
|
/* @__PURE__ */ jsx10("p", {
|
|
@@ -1917,7 +1300,7 @@ function IntegrationsPostmarkPage() {
|
|
|
1917
1300
|
children: "Add your Postmark credentials to your environment variables:"
|
|
1918
1301
|
}),
|
|
1919
1302
|
/* @__PURE__ */ jsx10("div", {
|
|
1920
|
-
className: "
|
|
1303
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
1921
1304
|
children: /* @__PURE__ */ jsx10("pre", {
|
|
1922
1305
|
children: `# .env
|
|
1923
1306
|
POSTMARK_API_TOKEN=...
|
|
@@ -1946,11 +1329,11 @@ POSTMARK_FROM_NAME="Your App Name"`
|
|
|
1946
1329
|
className: "space-y-4",
|
|
1947
1330
|
children: [
|
|
1948
1331
|
/* @__PURE__ */ jsx10("h2", {
|
|
1949
|
-
className: "text-2xl
|
|
1332
|
+
className: "font-bold text-2xl",
|
|
1950
1333
|
children: "Sending emails"
|
|
1951
1334
|
}),
|
|
1952
1335
|
/* @__PURE__ */ jsx10("div", {
|
|
1953
|
-
className: "
|
|
1336
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
1954
1337
|
children: /* @__PURE__ */ jsx10("pre", {
|
|
1955
1338
|
children: `capabilityId: send-email
|
|
1956
1339
|
provider:
|
|
@@ -1989,7 +1372,7 @@ outputs:
|
|
|
1989
1372
|
className: "space-y-4",
|
|
1990
1373
|
children: [
|
|
1991
1374
|
/* @__PURE__ */ jsx10("h2", {
|
|
1992
|
-
className: "text-2xl
|
|
1375
|
+
className: "font-bold text-2xl",
|
|
1993
1376
|
children: "Using templates"
|
|
1994
1377
|
}),
|
|
1995
1378
|
/* @__PURE__ */ jsx10("p", {
|
|
@@ -1997,7 +1380,7 @@ outputs:
|
|
|
1997
1380
|
children: "Postmark templates allow you to design emails in their dashboard and populate them with data:"
|
|
1998
1381
|
}),
|
|
1999
1382
|
/* @__PURE__ */ jsx10("div", {
|
|
2000
|
-
className: "
|
|
1383
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2001
1384
|
children: /* @__PURE__ */ jsx10("pre", {
|
|
2002
1385
|
children: `capabilityId: send-welcome-email
|
|
2003
1386
|
provider:
|
|
@@ -2023,7 +1406,7 @@ config:
|
|
|
2023
1406
|
className: "space-y-4",
|
|
2024
1407
|
children: [
|
|
2025
1408
|
/* @__PURE__ */ jsx10("h2", {
|
|
2026
|
-
className: "text-2xl
|
|
1409
|
+
className: "font-bold text-2xl",
|
|
2027
1410
|
children: "Webhooks"
|
|
2028
1411
|
}),
|
|
2029
1412
|
/* @__PURE__ */ jsx10("p", {
|
|
@@ -2031,7 +1414,7 @@ config:
|
|
|
2031
1414
|
children: "Postmark can notify your app about delivery, bounces, and opens:"
|
|
2032
1415
|
}),
|
|
2033
1416
|
/* @__PURE__ */ jsx10("div", {
|
|
2034
|
-
className: "
|
|
1417
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2035
1418
|
children: /* @__PURE__ */ jsx10("pre", {
|
|
2036
1419
|
children: `https://your-app.com/api/webhooks/postmark`
|
|
2037
1420
|
})
|
|
@@ -2041,7 +1424,7 @@ config:
|
|
|
2041
1424
|
children: "ContractSpec automatically processes these webhook events:"
|
|
2042
1425
|
}),
|
|
2043
1426
|
/* @__PURE__ */ jsxs10("ul", {
|
|
2044
|
-
className: "
|
|
1427
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
2045
1428
|
children: [
|
|
2046
1429
|
/* @__PURE__ */ jsxs10("li", {
|
|
2047
1430
|
children: [
|
|
@@ -2091,11 +1474,11 @@ config:
|
|
|
2091
1474
|
className: "space-y-4",
|
|
2092
1475
|
children: [
|
|
2093
1476
|
/* @__PURE__ */ jsx10("h2", {
|
|
2094
|
-
className: "text-2xl
|
|
1477
|
+
className: "font-bold text-2xl",
|
|
2095
1478
|
children: "Best practices"
|
|
2096
1479
|
}),
|
|
2097
1480
|
/* @__PURE__ */ jsxs10("ul", {
|
|
2098
|
-
className: "
|
|
1481
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
2099
1482
|
children: [
|
|
2100
1483
|
/* @__PURE__ */ jsx10("li", {
|
|
2101
1484
|
children: "Use templates for consistent branding"
|
|
@@ -2132,7 +1515,7 @@ config:
|
|
|
2132
1515
|
className: "btn-primary",
|
|
2133
1516
|
children: [
|
|
2134
1517
|
"Next: Resend ",
|
|
2135
|
-
/* @__PURE__ */ jsx10(
|
|
1518
|
+
/* @__PURE__ */ jsx10(ChevronRight7, {
|
|
2136
1519
|
size: 16
|
|
2137
1520
|
})
|
|
2138
1521
|
]
|
|
@@ -2145,7 +1528,7 @@ config:
|
|
|
2145
1528
|
|
|
2146
1529
|
// src/components/docs/integrations/IntegrationsPowensPage.tsx
|
|
2147
1530
|
import Link10 from "@contractspec/lib.ui-link";
|
|
2148
|
-
import { ChevronRight as
|
|
1531
|
+
import { ChevronRight as ChevronRight8 } from "lucide-react";
|
|
2149
1532
|
import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2150
1533
|
function IntegrationsPowensPage() {
|
|
2151
1534
|
return /* @__PURE__ */ jsxs11("div", {
|
|
@@ -2155,7 +1538,7 @@ function IntegrationsPowensPage() {
|
|
|
2155
1538
|
className: "space-y-4",
|
|
2156
1539
|
children: [
|
|
2157
1540
|
/* @__PURE__ */ jsx11("h1", {
|
|
2158
|
-
className: "text-4xl
|
|
1541
|
+
className: "font-bold text-4xl",
|
|
2159
1542
|
children: "Powens Open Banking"
|
|
2160
1543
|
}),
|
|
2161
1544
|
/* @__PURE__ */ jsx11("p", {
|
|
@@ -2168,7 +1551,7 @@ function IntegrationsPowensPage() {
|
|
|
2168
1551
|
className: "space-y-4",
|
|
2169
1552
|
children: [
|
|
2170
1553
|
/* @__PURE__ */ jsx11("h2", {
|
|
2171
|
-
className: "text-2xl
|
|
1554
|
+
className: "font-bold text-2xl",
|
|
2172
1555
|
children: "Setup"
|
|
2173
1556
|
}),
|
|
2174
1557
|
/* @__PURE__ */ jsx11("p", {
|
|
@@ -2176,7 +1559,7 @@ function IntegrationsPowensPage() {
|
|
|
2176
1559
|
children: "Create a Powens BYOK project, then store the credentials in your secret manager. The ContractSpec integration expects the following fields:"
|
|
2177
1560
|
}),
|
|
2178
1561
|
/* @__PURE__ */ jsx11("div", {
|
|
2179
|
-
className: "
|
|
1562
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2180
1563
|
children: /* @__PURE__ */ jsx11("pre", {
|
|
2181
1564
|
children: `{
|
|
2182
1565
|
"clientId": "powens-client-id",
|
|
@@ -2191,7 +1574,7 @@ function IntegrationsPowensPage() {
|
|
|
2191
1574
|
children: "Configure non-secret settings on the integration connection:"
|
|
2192
1575
|
}),
|
|
2193
1576
|
/* @__PURE__ */ jsx11("div", {
|
|
2194
|
-
className: "
|
|
1577
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2195
1578
|
children: /* @__PURE__ */ jsx11("pre", {
|
|
2196
1579
|
children: `environment: sandbox | production
|
|
2197
1580
|
baseUrl?: https://api-sandbox.powens.com/v2
|
|
@@ -2221,11 +1604,11 @@ pollingIntervalMs?: 300000`
|
|
|
2221
1604
|
className: "space-y-4",
|
|
2222
1605
|
children: [
|
|
2223
1606
|
/* @__PURE__ */ jsx11("h2", {
|
|
2224
|
-
className: "text-2xl
|
|
1607
|
+
className: "font-bold text-2xl",
|
|
2225
1608
|
children: "Capabilities"
|
|
2226
1609
|
}),
|
|
2227
1610
|
/* @__PURE__ */ jsx11("div", {
|
|
2228
|
-
className: "
|
|
1611
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2229
1612
|
children: /* @__PURE__ */ jsx11("pre", {
|
|
2230
1613
|
children: `capabilityId: openbanking.accounts.read
|
|
2231
1614
|
provider:
|
|
@@ -2283,14 +1666,14 @@ outputs:
|
|
|
2283
1666
|
className: "space-y-4",
|
|
2284
1667
|
children: [
|
|
2285
1668
|
/* @__PURE__ */ jsx11("h2", {
|
|
2286
|
-
className: "text-2xl
|
|
1669
|
+
className: "font-bold text-2xl",
|
|
2287
1670
|
children: "Primary workflows"
|
|
2288
1671
|
}),
|
|
2289
1672
|
/* @__PURE__ */ jsxs11("div", {
|
|
2290
1673
|
className: "space-y-3",
|
|
2291
1674
|
children: [
|
|
2292
1675
|
/* @__PURE__ */ jsx11("h3", {
|
|
2293
|
-
className: "text-lg
|
|
1676
|
+
className: "font-semibold text-lg",
|
|
2294
1677
|
children: "Account sync"
|
|
2295
1678
|
}),
|
|
2296
1679
|
/* @__PURE__ */ jsxs11("p", {
|
|
@@ -2299,7 +1682,7 @@ outputs:
|
|
|
2299
1682
|
"The workflow",
|
|
2300
1683
|
" ",
|
|
2301
1684
|
/* @__PURE__ */ jsx11("code", {
|
|
2302
|
-
className: "bg-background/50
|
|
1685
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2303
1686
|
children: "pfo.workflow.sync-openbanking-accounts"
|
|
2304
1687
|
}),
|
|
2305
1688
|
" ",
|
|
@@ -2312,14 +1695,14 @@ outputs:
|
|
|
2312
1695
|
className: "space-y-3",
|
|
2313
1696
|
children: [
|
|
2314
1697
|
/* @__PURE__ */ jsx11("h3", {
|
|
2315
|
-
className: "text-lg
|
|
1698
|
+
className: "font-semibold text-lg",
|
|
2316
1699
|
children: "Transaction sync"
|
|
2317
1700
|
}),
|
|
2318
1701
|
/* @__PURE__ */ jsxs11("p", {
|
|
2319
1702
|
className: "text-muted-foreground",
|
|
2320
1703
|
children: [
|
|
2321
1704
|
/* @__PURE__ */ jsx11("code", {
|
|
2322
|
-
className: "bg-background/50
|
|
1705
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2323
1706
|
children: "pfo.workflow.sync-openbanking-transactions"
|
|
2324
1707
|
}),
|
|
2325
1708
|
" ",
|
|
@@ -2332,14 +1715,14 @@ outputs:
|
|
|
2332
1715
|
className: "space-y-3",
|
|
2333
1716
|
children: [
|
|
2334
1717
|
/* @__PURE__ */ jsx11("h3", {
|
|
2335
|
-
className: "text-lg
|
|
1718
|
+
className: "font-semibold text-lg",
|
|
2336
1719
|
children: "Balance refresh"
|
|
2337
1720
|
}),
|
|
2338
1721
|
/* @__PURE__ */ jsxs11("p", {
|
|
2339
1722
|
className: "text-muted-foreground",
|
|
2340
1723
|
children: [
|
|
2341
1724
|
/* @__PURE__ */ jsx11("code", {
|
|
2342
|
-
className: "bg-background/50
|
|
1725
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2343
1726
|
children: "pfo.workflow.refresh-openbanking-balances"
|
|
2344
1727
|
}),
|
|
2345
1728
|
" ",
|
|
@@ -2352,14 +1735,14 @@ outputs:
|
|
|
2352
1735
|
className: "space-y-3",
|
|
2353
1736
|
children: [
|
|
2354
1737
|
/* @__PURE__ */ jsx11("h3", {
|
|
2355
|
-
className: "text-lg
|
|
1738
|
+
className: "font-semibold text-lg",
|
|
2356
1739
|
children: "Derived financial overview"
|
|
2357
1740
|
}),
|
|
2358
1741
|
/* @__PURE__ */ jsxs11("p", {
|
|
2359
1742
|
className: "text-muted-foreground",
|
|
2360
1743
|
children: [
|
|
2361
1744
|
/* @__PURE__ */ jsx11("code", {
|
|
2362
|
-
className: "bg-background/50
|
|
1745
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2363
1746
|
children: "pfo.workflow.generate-openbanking-overview"
|
|
2364
1747
|
}),
|
|
2365
1748
|
" ",
|
|
@@ -2378,25 +1761,25 @@ outputs:
|
|
|
2378
1761
|
className: "space-y-4",
|
|
2379
1762
|
children: [
|
|
2380
1763
|
/* @__PURE__ */ jsx11("h2", {
|
|
2381
|
-
className: "text-2xl
|
|
1764
|
+
className: "font-bold text-2xl",
|
|
2382
1765
|
children: "Telemetry & guardrails"
|
|
2383
1766
|
}),
|
|
2384
1767
|
/* @__PURE__ */ jsxs11("ul", {
|
|
2385
|
-
className: "
|
|
1768
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
2386
1769
|
children: [
|
|
2387
1770
|
/* @__PURE__ */ jsxs11("li", {
|
|
2388
1771
|
children: [
|
|
2389
1772
|
"Telemetry events such as",
|
|
2390
1773
|
" ",
|
|
2391
1774
|
/* @__PURE__ */ jsx11("code", {
|
|
2392
|
-
className: "bg-background/50
|
|
1775
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2393
1776
|
children: "openbanking.accounts.synced"
|
|
2394
1777
|
}),
|
|
2395
1778
|
" ",
|
|
2396
1779
|
"and",
|
|
2397
1780
|
" ",
|
|
2398
1781
|
/* @__PURE__ */ jsx11("code", {
|
|
2399
|
-
className: "bg-background/50
|
|
1782
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2400
1783
|
children: "openbanking.transactions.synced"
|
|
2401
1784
|
}),
|
|
2402
1785
|
" ",
|
|
@@ -2408,7 +1791,7 @@ outputs:
|
|
|
2408
1791
|
"Guard helpers ensure the",
|
|
2409
1792
|
" ",
|
|
2410
1793
|
/* @__PURE__ */ jsx11("code", {
|
|
2411
|
-
className: "bg-background/50
|
|
1794
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2412
1795
|
children: "primaryOpenBanking"
|
|
2413
1796
|
}),
|
|
2414
1797
|
" ",
|
|
@@ -2420,7 +1803,7 @@ outputs:
|
|
|
2420
1803
|
"PII fields (IBAN, counterparty names, descriptions) are redacted via",
|
|
2421
1804
|
" ",
|
|
2422
1805
|
/* @__PURE__ */ jsx11("code", {
|
|
2423
|
-
className: "bg-background/50
|
|
1806
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2424
1807
|
children: "redactOpenBankingTelemetryPayload"
|
|
2425
1808
|
}),
|
|
2426
1809
|
" ",
|
|
@@ -2435,11 +1818,11 @@ outputs:
|
|
|
2435
1818
|
className: "space-y-4",
|
|
2436
1819
|
children: [
|
|
2437
1820
|
/* @__PURE__ */ jsx11("h2", {
|
|
2438
|
-
className: "text-2xl
|
|
1821
|
+
className: "font-bold text-2xl",
|
|
2439
1822
|
children: "Best practices"
|
|
2440
1823
|
}),
|
|
2441
1824
|
/* @__PURE__ */ jsxs11("ul", {
|
|
2442
|
-
className: "
|
|
1825
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
2443
1826
|
children: [
|
|
2444
1827
|
/* @__PURE__ */ jsx11("li", {
|
|
2445
1828
|
children: "Use BYOK credentials per tenant to avoid cross-tenant exposure."
|
|
@@ -2458,7 +1841,7 @@ outputs:
|
|
|
2458
1841
|
"Monitor telemetry for",
|
|
2459
1842
|
" ",
|
|
2460
1843
|
/* @__PURE__ */ jsx11("code", {
|
|
2461
|
-
className: "bg-background/50
|
|
1844
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
2462
1845
|
children: "openbanking.*.sync_failed"
|
|
2463
1846
|
}),
|
|
2464
1847
|
" ",
|
|
@@ -2482,7 +1865,7 @@ outputs:
|
|
|
2482
1865
|
className: "btn-primary",
|
|
2483
1866
|
children: [
|
|
2484
1867
|
"Next: Stripe ",
|
|
2485
|
-
/* @__PURE__ */ jsx11(
|
|
1868
|
+
/* @__PURE__ */ jsx11(ChevronRight8, {
|
|
2486
1869
|
size: 16
|
|
2487
1870
|
})
|
|
2488
1871
|
]
|
|
@@ -2495,7 +1878,7 @@ outputs:
|
|
|
2495
1878
|
|
|
2496
1879
|
// src/components/docs/integrations/IntegrationsQdrantPage.tsx
|
|
2497
1880
|
import Link11 from "@contractspec/lib.ui-link";
|
|
2498
|
-
import { ChevronRight as
|
|
1881
|
+
import { ChevronRight as ChevronRight9 } from "lucide-react";
|
|
2499
1882
|
import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2500
1883
|
function IntegrationsQdrantPage() {
|
|
2501
1884
|
return /* @__PURE__ */ jsxs12("div", {
|
|
@@ -2505,7 +1888,7 @@ function IntegrationsQdrantPage() {
|
|
|
2505
1888
|
className: "space-y-4",
|
|
2506
1889
|
children: [
|
|
2507
1890
|
/* @__PURE__ */ jsx12("h1", {
|
|
2508
|
-
className: "text-4xl
|
|
1891
|
+
className: "font-bold text-4xl",
|
|
2509
1892
|
children: "Qdrant"
|
|
2510
1893
|
}),
|
|
2511
1894
|
/* @__PURE__ */ jsx12("p", {
|
|
@@ -2518,11 +1901,11 @@ function IntegrationsQdrantPage() {
|
|
|
2518
1901
|
className: "space-y-4",
|
|
2519
1902
|
children: [
|
|
2520
1903
|
/* @__PURE__ */ jsx12("h2", {
|
|
2521
|
-
className: "text-2xl
|
|
1904
|
+
className: "font-bold text-2xl",
|
|
2522
1905
|
children: "Setup"
|
|
2523
1906
|
}),
|
|
2524
1907
|
/* @__PURE__ */ jsx12("div", {
|
|
2525
|
-
className: "
|
|
1908
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2526
1909
|
children: /* @__PURE__ */ jsx12("pre", {
|
|
2527
1910
|
children: `# .env
|
|
2528
1911
|
QDRANT_URL=https://...
|
|
@@ -2536,11 +1919,11 @@ QDRANT_COLLECTION=documents`
|
|
|
2536
1919
|
className: "space-y-4",
|
|
2537
1920
|
children: [
|
|
2538
1921
|
/* @__PURE__ */ jsx12("h2", {
|
|
2539
|
-
className: "text-2xl
|
|
1922
|
+
className: "font-bold text-2xl",
|
|
2540
1923
|
children: "Storing vectors"
|
|
2541
1924
|
}),
|
|
2542
1925
|
/* @__PURE__ */ jsx12("div", {
|
|
2543
|
-
className: "
|
|
1926
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2544
1927
|
children: /* @__PURE__ */ jsx12("pre", {
|
|
2545
1928
|
children: `capabilityId: qdrant-upsert
|
|
2546
1929
|
provider:
|
|
@@ -2570,11 +1953,11 @@ outputs:
|
|
|
2570
1953
|
className: "space-y-4",
|
|
2571
1954
|
children: [
|
|
2572
1955
|
/* @__PURE__ */ jsx12("h2", {
|
|
2573
|
-
className: "text-2xl
|
|
1956
|
+
className: "font-bold text-2xl",
|
|
2574
1957
|
children: "Semantic search"
|
|
2575
1958
|
}),
|
|
2576
1959
|
/* @__PURE__ */ jsx12("div", {
|
|
2577
|
-
className: "
|
|
1960
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2578
1961
|
children: /* @__PURE__ */ jsx12("pre", {
|
|
2579
1962
|
children: `capabilityId: qdrant-search
|
|
2580
1963
|
provider:
|
|
@@ -2609,11 +1992,11 @@ outputs:
|
|
|
2609
1992
|
className: "space-y-4",
|
|
2610
1993
|
children: [
|
|
2611
1994
|
/* @__PURE__ */ jsx12("h2", {
|
|
2612
|
-
className: "text-2xl
|
|
1995
|
+
className: "font-bold text-2xl",
|
|
2613
1996
|
children: "RAG workflow example"
|
|
2614
1997
|
}),
|
|
2615
1998
|
/* @__PURE__ */ jsx12("div", {
|
|
2616
|
-
className: "
|
|
1999
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2617
2000
|
children: /* @__PURE__ */ jsx12("pre", {
|
|
2618
2001
|
children: `workflowId: rag-query
|
|
2619
2002
|
version: '1.0.0'.0.0
|
|
@@ -2658,7 +2041,7 @@ steps:
|
|
|
2658
2041
|
className: "btn-primary",
|
|
2659
2042
|
children: [
|
|
2660
2043
|
"Next: S3 Storage ",
|
|
2661
|
-
/* @__PURE__ */ jsx12(
|
|
2044
|
+
/* @__PURE__ */ jsx12(ChevronRight9, {
|
|
2662
2045
|
size: 16
|
|
2663
2046
|
})
|
|
2664
2047
|
]
|
|
@@ -2671,7 +2054,7 @@ steps:
|
|
|
2671
2054
|
|
|
2672
2055
|
// src/components/docs/integrations/IntegrationsResendPage.tsx
|
|
2673
2056
|
import Link12 from "@contractspec/lib.ui-link";
|
|
2674
|
-
import { ChevronRight as
|
|
2057
|
+
import { ChevronRight as ChevronRight10 } from "lucide-react";
|
|
2675
2058
|
import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2676
2059
|
function IntegrationsResendPage() {
|
|
2677
2060
|
return /* @__PURE__ */ jsxs13("div", {
|
|
@@ -2681,7 +2064,7 @@ function IntegrationsResendPage() {
|
|
|
2681
2064
|
className: "space-y-4",
|
|
2682
2065
|
children: [
|
|
2683
2066
|
/* @__PURE__ */ jsx13("h1", {
|
|
2684
|
-
className: "text-4xl
|
|
2067
|
+
className: "font-bold text-4xl",
|
|
2685
2068
|
children: "Resend"
|
|
2686
2069
|
}),
|
|
2687
2070
|
/* @__PURE__ */ jsx13("p", {
|
|
@@ -2694,11 +2077,11 @@ function IntegrationsResendPage() {
|
|
|
2694
2077
|
className: "space-y-4",
|
|
2695
2078
|
children: [
|
|
2696
2079
|
/* @__PURE__ */ jsx13("h2", {
|
|
2697
|
-
className: "text-2xl
|
|
2080
|
+
className: "font-bold text-2xl",
|
|
2698
2081
|
children: "Setup"
|
|
2699
2082
|
}),
|
|
2700
2083
|
/* @__PURE__ */ jsx13("div", {
|
|
2701
|
-
className: "
|
|
2084
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2702
2085
|
children: /* @__PURE__ */ jsx13("pre", {
|
|
2703
2086
|
children: `# .env
|
|
2704
2087
|
RESEND_API_KEY=re_...
|
|
@@ -2711,11 +2094,11 @@ RESEND_FROM_EMAIL=onboarding@resend.dev`
|
|
|
2711
2094
|
className: "space-y-4",
|
|
2712
2095
|
children: [
|
|
2713
2096
|
/* @__PURE__ */ jsx13("h2", {
|
|
2714
|
-
className: "text-2xl
|
|
2097
|
+
className: "font-bold text-2xl",
|
|
2715
2098
|
children: "Sending emails"
|
|
2716
2099
|
}),
|
|
2717
2100
|
/* @__PURE__ */ jsx13("div", {
|
|
2718
|
-
className: "
|
|
2101
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2719
2102
|
children: /* @__PURE__ */ jsx13("pre", {
|
|
2720
2103
|
children: `capabilityId: resend-send-email
|
|
2721
2104
|
provider:
|
|
@@ -2747,11 +2130,11 @@ outputs:
|
|
|
2747
2130
|
className: "space-y-4",
|
|
2748
2131
|
children: [
|
|
2749
2132
|
/* @__PURE__ */ jsx13("h2", {
|
|
2750
|
-
className: "text-2xl
|
|
2133
|
+
className: "font-bold text-2xl",
|
|
2751
2134
|
children: "Best practices"
|
|
2752
2135
|
}),
|
|
2753
2136
|
/* @__PURE__ */ jsxs13("ul", {
|
|
2754
|
-
className: "
|
|
2137
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
2755
2138
|
children: [
|
|
2756
2139
|
/* @__PURE__ */ jsx13("li", {
|
|
2757
2140
|
children: "Use React Email for type-safe templates"
|
|
@@ -2779,7 +2162,7 @@ outputs:
|
|
|
2779
2162
|
className: "btn-primary",
|
|
2780
2163
|
children: [
|
|
2781
2164
|
"Next: Gmail API ",
|
|
2782
|
-
/* @__PURE__ */ jsx13(
|
|
2165
|
+
/* @__PURE__ */ jsx13(ChevronRight10, {
|
|
2783
2166
|
size: 16
|
|
2784
2167
|
})
|
|
2785
2168
|
]
|
|
@@ -2792,7 +2175,7 @@ outputs:
|
|
|
2792
2175
|
|
|
2793
2176
|
// src/components/docs/integrations/IntegrationsS3Page.tsx
|
|
2794
2177
|
import Link13 from "@contractspec/lib.ui-link";
|
|
2795
|
-
import { ChevronRight as
|
|
2178
|
+
import { ChevronRight as ChevronRight11 } from "lucide-react";
|
|
2796
2179
|
import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2797
2180
|
function IntegrationsS3Page() {
|
|
2798
2181
|
return /* @__PURE__ */ jsxs14("div", {
|
|
@@ -2802,7 +2185,7 @@ function IntegrationsS3Page() {
|
|
|
2802
2185
|
className: "space-y-4",
|
|
2803
2186
|
children: [
|
|
2804
2187
|
/* @__PURE__ */ jsx14("h1", {
|
|
2805
|
-
className: "text-4xl
|
|
2188
|
+
className: "font-bold text-4xl",
|
|
2806
2189
|
children: "S3-Compatible Storage"
|
|
2807
2190
|
}),
|
|
2808
2191
|
/* @__PURE__ */ jsx14("p", {
|
|
@@ -2815,11 +2198,11 @@ function IntegrationsS3Page() {
|
|
|
2815
2198
|
className: "space-y-4",
|
|
2816
2199
|
children: [
|
|
2817
2200
|
/* @__PURE__ */ jsx14("h2", {
|
|
2818
|
-
className: "text-2xl
|
|
2201
|
+
className: "font-bold text-2xl",
|
|
2819
2202
|
children: "Setup"
|
|
2820
2203
|
}),
|
|
2821
2204
|
/* @__PURE__ */ jsx14("div", {
|
|
2822
|
-
className: "
|
|
2205
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2823
2206
|
children: /* @__PURE__ */ jsx14("pre", {
|
|
2824
2207
|
children: `# .env
|
|
2825
2208
|
S3_ENDPOINT=https://s3.fr-par.scw.cloud
|
|
@@ -2835,11 +2218,11 @@ S3_REGION=fr-par`
|
|
|
2835
2218
|
className: "space-y-4",
|
|
2836
2219
|
children: [
|
|
2837
2220
|
/* @__PURE__ */ jsx14("h2", {
|
|
2838
|
-
className: "text-2xl
|
|
2221
|
+
className: "font-bold text-2xl",
|
|
2839
2222
|
children: "Uploading files"
|
|
2840
2223
|
}),
|
|
2841
2224
|
/* @__PURE__ */ jsx14("div", {
|
|
2842
|
-
className: "
|
|
2225
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2843
2226
|
children: /* @__PURE__ */ jsx14("pre", {
|
|
2844
2227
|
children: `capabilityId: s3-upload
|
|
2845
2228
|
provider:
|
|
@@ -2872,11 +2255,11 @@ outputs:
|
|
|
2872
2255
|
className: "space-y-4",
|
|
2873
2256
|
children: [
|
|
2874
2257
|
/* @__PURE__ */ jsx14("h2", {
|
|
2875
|
-
className: "text-2xl
|
|
2258
|
+
className: "font-bold text-2xl",
|
|
2876
2259
|
children: "Generating presigned URLs"
|
|
2877
2260
|
}),
|
|
2878
2261
|
/* @__PURE__ */ jsx14("div", {
|
|
2879
|
-
className: "
|
|
2262
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2880
2263
|
children: /* @__PURE__ */ jsx14("pre", {
|
|
2881
2264
|
children: `capabilityId: s3-presigned-url
|
|
2882
2265
|
provider:
|
|
@@ -2902,11 +2285,11 @@ outputs:
|
|
|
2902
2285
|
className: "space-y-4",
|
|
2903
2286
|
children: [
|
|
2904
2287
|
/* @__PURE__ */ jsx14("h2", {
|
|
2905
|
-
className: "text-2xl
|
|
2288
|
+
className: "font-bold text-2xl",
|
|
2906
2289
|
children: "Best practices"
|
|
2907
2290
|
}),
|
|
2908
2291
|
/* @__PURE__ */ jsxs14("ul", {
|
|
2909
|
-
className: "
|
|
2292
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
2910
2293
|
children: [
|
|
2911
2294
|
/* @__PURE__ */ jsx14("li", {
|
|
2912
2295
|
children: "Use presigned URLs for secure, temporary access"
|
|
@@ -2940,7 +2323,7 @@ outputs:
|
|
|
2940
2323
|
className: "btn-primary",
|
|
2941
2324
|
children: [
|
|
2942
2325
|
"Next: Twilio ",
|
|
2943
|
-
/* @__PURE__ */ jsx14(
|
|
2326
|
+
/* @__PURE__ */ jsx14(ChevronRight11, {
|
|
2944
2327
|
size: 16
|
|
2945
2328
|
})
|
|
2946
2329
|
]
|
|
@@ -2953,7 +2336,7 @@ outputs:
|
|
|
2953
2336
|
|
|
2954
2337
|
// src/components/docs/integrations/IntegrationsSlackPage.tsx
|
|
2955
2338
|
import Link14 from "@contractspec/lib.ui-link";
|
|
2956
|
-
import { ChevronRight as
|
|
2339
|
+
import { ChevronRight as ChevronRight12 } from "lucide-react";
|
|
2957
2340
|
import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2958
2341
|
function IntegrationsSlackPage() {
|
|
2959
2342
|
return /* @__PURE__ */ jsxs15("div", {
|
|
@@ -2963,7 +2346,7 @@ function IntegrationsSlackPage() {
|
|
|
2963
2346
|
className: "space-y-4",
|
|
2964
2347
|
children: [
|
|
2965
2348
|
/* @__PURE__ */ jsx15("h1", {
|
|
2966
|
-
className: "text-4xl
|
|
2349
|
+
className: "font-bold text-4xl",
|
|
2967
2350
|
children: "Slack Messaging"
|
|
2968
2351
|
}),
|
|
2969
2352
|
/* @__PURE__ */ jsx15("p", {
|
|
@@ -2976,11 +2359,11 @@ function IntegrationsSlackPage() {
|
|
|
2976
2359
|
className: "space-y-4",
|
|
2977
2360
|
children: [
|
|
2978
2361
|
/* @__PURE__ */ jsx15("h2", {
|
|
2979
|
-
className: "text-2xl
|
|
2362
|
+
className: "font-bold text-2xl",
|
|
2980
2363
|
children: "Required secrets and config"
|
|
2981
2364
|
}),
|
|
2982
2365
|
/* @__PURE__ */ jsx15("div", {
|
|
2983
|
-
className: "
|
|
2366
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
2984
2367
|
children: /* @__PURE__ */ jsx15("pre", {
|
|
2985
2368
|
children: `// secret payload
|
|
2986
2369
|
{
|
|
@@ -3001,18 +2384,18 @@ function IntegrationsSlackPage() {
|
|
|
3001
2384
|
className: "space-y-4",
|
|
3002
2385
|
children: [
|
|
3003
2386
|
/* @__PURE__ */ jsx15("h2", {
|
|
3004
|
-
className: "text-2xl
|
|
2387
|
+
className: "font-bold text-2xl",
|
|
3005
2388
|
children: "Webhook ingress"
|
|
3006
2389
|
}),
|
|
3007
2390
|
/* @__PURE__ */ jsxs15("ul", {
|
|
3008
|
-
className: "
|
|
2391
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
3009
2392
|
children: [
|
|
3010
2393
|
/* @__PURE__ */ jsxs15("li", {
|
|
3011
2394
|
children: [
|
|
3012
2395
|
"Inbound events are accepted on",
|
|
3013
2396
|
" ",
|
|
3014
2397
|
/* @__PURE__ */ jsx15("code", {
|
|
3015
|
-
className: "bg-background/50
|
|
2398
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3016
2399
|
children: "/webhooks/slack/events"
|
|
3017
2400
|
}),
|
|
3018
2401
|
"."
|
|
@@ -3022,7 +2405,7 @@ function IntegrationsSlackPage() {
|
|
|
3022
2405
|
children: [
|
|
3023
2406
|
"Requests are validated with Slack signatures (",
|
|
3024
2407
|
/* @__PURE__ */ jsx15("code", {
|
|
3025
|
-
className: "bg-background/50
|
|
2408
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3026
2409
|
children: "x-slack-signature"
|
|
3027
2410
|
}),
|
|
3028
2411
|
" ",
|
|
@@ -3040,11 +2423,11 @@ function IntegrationsSlackPage() {
|
|
|
3040
2423
|
className: "space-y-4",
|
|
3041
2424
|
children: [
|
|
3042
2425
|
/* @__PURE__ */ jsx15("h2", {
|
|
3043
|
-
className: "text-2xl
|
|
2426
|
+
className: "font-bold text-2xl",
|
|
3044
2427
|
children: "Workspace routing and dispatch"
|
|
3045
2428
|
}),
|
|
3046
2429
|
/* @__PURE__ */ jsx15("div", {
|
|
3047
|
-
className: "
|
|
2430
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3048
2431
|
children: /* @__PURE__ */ jsx15("pre", {
|
|
3049
2432
|
children: `# Workspace mapping (recommended)
|
|
3050
2433
|
CHANNEL_WORKSPACE_MAP_SLACK={"T123":"workspace-acme"}
|
|
@@ -3063,11 +2446,11 @@ CHANNEL_DISPATCH_RUN_ON_START=1`
|
|
|
3063
2446
|
className: "space-y-4",
|
|
3064
2447
|
children: [
|
|
3065
2448
|
/* @__PURE__ */ jsx15("h2", {
|
|
3066
|
-
className: "text-2xl
|
|
2449
|
+
className: "font-bold text-2xl",
|
|
3067
2450
|
children: "Best practices"
|
|
3068
2451
|
}),
|
|
3069
2452
|
/* @__PURE__ */ jsxs15("ul", {
|
|
3070
|
-
className: "
|
|
2453
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
3071
2454
|
children: [
|
|
3072
2455
|
/* @__PURE__ */ jsx15("li", {
|
|
3073
2456
|
children: "Keep bot tokens and signing secrets in a managed secret provider."
|
|
@@ -3098,7 +2481,7 @@ CHANNEL_DISPATCH_RUN_ON_START=1`
|
|
|
3098
2481
|
className: "btn-primary",
|
|
3099
2482
|
children: [
|
|
3100
2483
|
"Next: GitHub Messaging ",
|
|
3101
|
-
/* @__PURE__ */ jsx15(
|
|
2484
|
+
/* @__PURE__ */ jsx15(ChevronRight12, {
|
|
3102
2485
|
size: 16
|
|
3103
2486
|
})
|
|
3104
2487
|
]
|
|
@@ -3111,7 +2494,7 @@ CHANNEL_DISPATCH_RUN_ON_START=1`
|
|
|
3111
2494
|
|
|
3112
2495
|
// src/components/docs/integrations/IntegrationsSpecModelPage.tsx
|
|
3113
2496
|
import Link15 from "@contractspec/lib.ui-link";
|
|
3114
|
-
import { ChevronRight as
|
|
2497
|
+
import { ChevronRight as ChevronRight13 } from "lucide-react";
|
|
3115
2498
|
import { jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3116
2499
|
function IntegrationsSpecModelPage() {
|
|
3117
2500
|
return /* @__PURE__ */ jsxs16("div", {
|
|
@@ -3121,7 +2504,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3121
2504
|
className: "space-y-4",
|
|
3122
2505
|
children: [
|
|
3123
2506
|
/* @__PURE__ */ jsx16("h1", {
|
|
3124
|
-
className: "text-4xl
|
|
2507
|
+
className: "font-bold text-4xl",
|
|
3125
2508
|
children: "Integration Spec Model"
|
|
3126
2509
|
}),
|
|
3127
2510
|
/* @__PURE__ */ jsx16("p", {
|
|
@@ -3134,7 +2517,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3134
2517
|
className: "space-y-4",
|
|
3135
2518
|
children: [
|
|
3136
2519
|
/* @__PURE__ */ jsx16("h2", {
|
|
3137
|
-
className: "text-2xl
|
|
2520
|
+
className: "font-bold text-2xl",
|
|
3138
2521
|
children: "IntegrationSpec"
|
|
3139
2522
|
}),
|
|
3140
2523
|
/* @__PURE__ */ jsxs16("p", {
|
|
@@ -3148,7 +2531,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3148
2531
|
]
|
|
3149
2532
|
}),
|
|
3150
2533
|
/* @__PURE__ */ jsx16("div", {
|
|
3151
|
-
className: "
|
|
2534
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3152
2535
|
children: /* @__PURE__ */ jsx16("pre", {
|
|
3153
2536
|
children: `type IntegrationSpec = {
|
|
3154
2537
|
id: string;
|
|
@@ -3212,11 +2595,11 @@ function IntegrationsSpecModelPage() {
|
|
|
3212
2595
|
className: "space-y-4",
|
|
3213
2596
|
children: [
|
|
3214
2597
|
/* @__PURE__ */ jsx16("h2", {
|
|
3215
|
-
className: "text-2xl
|
|
2598
|
+
className: "font-bold text-2xl",
|
|
3216
2599
|
children: "Example: Stripe IntegrationSpec"
|
|
3217
2600
|
}),
|
|
3218
2601
|
/* @__PURE__ */ jsx16("div", {
|
|
3219
|
-
className: "
|
|
2602
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3220
2603
|
children: /* @__PURE__ */ jsx16("pre", {
|
|
3221
2604
|
children: `{
|
|
3222
2605
|
id: "stripe",
|
|
@@ -3292,7 +2675,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3292
2675
|
className: "space-y-4",
|
|
3293
2676
|
children: [
|
|
3294
2677
|
/* @__PURE__ */ jsx16("h2", {
|
|
3295
|
-
className: "text-2xl
|
|
2678
|
+
className: "font-bold text-2xl",
|
|
3296
2679
|
children: "IntegrationConnection"
|
|
3297
2680
|
}),
|
|
3298
2681
|
/* @__PURE__ */ jsxs16("p", {
|
|
@@ -3306,7 +2689,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3306
2689
|
]
|
|
3307
2690
|
}),
|
|
3308
2691
|
/* @__PURE__ */ jsx16("div", {
|
|
3309
|
-
className: "
|
|
2692
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3310
2693
|
children: /* @__PURE__ */ jsx16("pre", {
|
|
3311
2694
|
children: `type IntegrationConnection = {
|
|
3312
2695
|
id: string;
|
|
@@ -3341,11 +2724,11 @@ function IntegrationsSpecModelPage() {
|
|
|
3341
2724
|
className: "space-y-4",
|
|
3342
2725
|
children: [
|
|
3343
2726
|
/* @__PURE__ */ jsx16("h2", {
|
|
3344
|
-
className: "text-2xl
|
|
2727
|
+
className: "font-bold text-2xl",
|
|
3345
2728
|
children: "Example: Stripe IntegrationConnection"
|
|
3346
2729
|
}),
|
|
3347
2730
|
/* @__PURE__ */ jsx16("div", {
|
|
3348
|
-
className: "
|
|
2731
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3349
2732
|
children: /* @__PURE__ */ jsx16("pre", {
|
|
3350
2733
|
children: `// Production connection
|
|
3351
2734
|
{
|
|
@@ -3390,7 +2773,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3390
2773
|
className: "space-y-4",
|
|
3391
2774
|
children: [
|
|
3392
2775
|
/* @__PURE__ */ jsx16("h2", {
|
|
3393
|
-
className: "text-2xl
|
|
2776
|
+
className: "font-bold text-2xl",
|
|
3394
2777
|
children: "Example: Messaging IntegrationConnection"
|
|
3395
2778
|
}),
|
|
3396
2779
|
/* @__PURE__ */ jsx16("p", {
|
|
@@ -3398,7 +2781,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3398
2781
|
children: "Messaging providers use the same spec + connection model, then route inbound events through the channel runtime for signature validation, idempotent ingestion, policy decisions, and outbox-backed dispatch."
|
|
3399
2782
|
}),
|
|
3400
2783
|
/* @__PURE__ */ jsx16("div", {
|
|
3401
|
-
className: "
|
|
2784
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3402
2785
|
children: /* @__PURE__ */ jsx16("pre", {
|
|
3403
2786
|
children: `{
|
|
3404
2787
|
id: "conn_slack_acme_prod",
|
|
@@ -3426,7 +2809,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3426
2809
|
className: "space-y-4",
|
|
3427
2810
|
children: [
|
|
3428
2811
|
/* @__PURE__ */ jsx16("h2", {
|
|
3429
|
-
className: "text-2xl
|
|
2812
|
+
className: "font-bold text-2xl",
|
|
3430
2813
|
children: "Health transport strategy config"
|
|
3431
2814
|
}),
|
|
3432
2815
|
/* @__PURE__ */ jsx16("p", {
|
|
@@ -3434,7 +2817,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3434
2817
|
children: "Health providers support deterministic transport routing and explicit unofficial gating in connection config."
|
|
3435
2818
|
}),
|
|
3436
2819
|
/* @__PURE__ */ jsx16("div", {
|
|
3437
|
-
className: "
|
|
2820
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3438
2821
|
children: /* @__PURE__ */ jsx16("pre", {
|
|
3439
2822
|
children: `{
|
|
3440
2823
|
"defaultTransport": "official-api",
|
|
@@ -3462,7 +2845,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3462
2845
|
className: "space-y-4",
|
|
3463
2846
|
children: [
|
|
3464
2847
|
/* @__PURE__ */ jsx16("h2", {
|
|
3465
|
-
className: "text-2xl
|
|
2848
|
+
className: "font-bold text-2xl",
|
|
3466
2849
|
children: "Health checks"
|
|
3467
2850
|
}),
|
|
3468
2851
|
/* @__PURE__ */ jsx16("p", {
|
|
@@ -3470,7 +2853,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3470
2853
|
children: "IntegrationConnections are periodically health-checked to ensure they remain valid:"
|
|
3471
2854
|
}),
|
|
3472
2855
|
/* @__PURE__ */ jsxs16("ul", {
|
|
3473
|
-
className: "
|
|
2856
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
3474
2857
|
children: [
|
|
3475
2858
|
/* @__PURE__ */ jsxs16("li", {
|
|
3476
2859
|
children: [
|
|
@@ -3516,7 +2899,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3516
2899
|
className: "space-y-4",
|
|
3517
2900
|
children: [
|
|
3518
2901
|
/* @__PURE__ */ jsx16("h2", {
|
|
3519
|
-
className: "text-2xl
|
|
2902
|
+
className: "font-bold text-2xl",
|
|
3520
2903
|
children: "Secret management"
|
|
3521
2904
|
}),
|
|
3522
2905
|
/* @__PURE__ */ jsx16("p", {
|
|
@@ -3524,7 +2907,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3524
2907
|
children: "Secrets (API keys, tokens) are never stored in plaintext:"
|
|
3525
2908
|
}),
|
|
3526
2909
|
/* @__PURE__ */ jsxs16("ol", {
|
|
3527
|
-
className: "
|
|
2910
|
+
className: "list-inside list-decimal space-y-2 text-muted-foreground",
|
|
3528
2911
|
children: [
|
|
3529
2912
|
/* @__PURE__ */ jsx16("li", {
|
|
3530
2913
|
children: "User provides secrets through secure UI or API"
|
|
@@ -3549,11 +2932,11 @@ function IntegrationsSpecModelPage() {
|
|
|
3549
2932
|
className: "space-y-4",
|
|
3550
2933
|
children: [
|
|
3551
2934
|
/* @__PURE__ */ jsx16("h2", {
|
|
3552
|
-
className: "text-2xl
|
|
2935
|
+
className: "font-bold text-2xl",
|
|
3553
2936
|
children: "Best practices"
|
|
3554
2937
|
}),
|
|
3555
2938
|
/* @__PURE__ */ jsxs16("ul", {
|
|
3556
|
-
className: "
|
|
2939
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
3557
2940
|
children: [
|
|
3558
2941
|
/* @__PURE__ */ jsx16("li", {
|
|
3559
2942
|
children: "Always maintain separate sandbox and production connections"
|
|
@@ -3590,7 +2973,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3590
2973
|
className: "btn-primary",
|
|
3591
2974
|
children: [
|
|
3592
2975
|
"Integration Binding ",
|
|
3593
|
-
/* @__PURE__ */ jsx16(
|
|
2976
|
+
/* @__PURE__ */ jsx16(ChevronRight13, {
|
|
3594
2977
|
size: 16
|
|
3595
2978
|
})
|
|
3596
2979
|
]
|
|
@@ -3603,7 +2986,7 @@ function IntegrationsSpecModelPage() {
|
|
|
3603
2986
|
|
|
3604
2987
|
// src/components/docs/integrations/IntegrationsStripePage.tsx
|
|
3605
2988
|
import Link16 from "@contractspec/lib.ui-link";
|
|
3606
|
-
import { ChevronRight as
|
|
2989
|
+
import { ChevronRight as ChevronRight14 } from "lucide-react";
|
|
3607
2990
|
import { jsx as jsx17, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3608
2991
|
function IntegrationsStripePage() {
|
|
3609
2992
|
return /* @__PURE__ */ jsxs17("div", {
|
|
@@ -3613,7 +2996,7 @@ function IntegrationsStripePage() {
|
|
|
3613
2996
|
className: "space-y-4",
|
|
3614
2997
|
children: [
|
|
3615
2998
|
/* @__PURE__ */ jsx17("h1", {
|
|
3616
|
-
className: "text-4xl
|
|
2999
|
+
className: "font-bold text-4xl",
|
|
3617
3000
|
children: "Stripe"
|
|
3618
3001
|
}),
|
|
3619
3002
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3626,7 +3009,7 @@ function IntegrationsStripePage() {
|
|
|
3626
3009
|
className: "space-y-4",
|
|
3627
3010
|
children: [
|
|
3628
3011
|
/* @__PURE__ */ jsx17("h2", {
|
|
3629
|
-
className: "text-2xl
|
|
3012
|
+
className: "font-bold text-2xl",
|
|
3630
3013
|
children: "Setup"
|
|
3631
3014
|
}),
|
|
3632
3015
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3634,7 +3017,7 @@ function IntegrationsStripePage() {
|
|
|
3634
3017
|
children: "Add your Stripe credentials to your environment variables:"
|
|
3635
3018
|
}),
|
|
3636
3019
|
/* @__PURE__ */ jsx17("div", {
|
|
3637
|
-
className: "
|
|
3020
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3638
3021
|
children: /* @__PURE__ */ jsx17("pre", {
|
|
3639
3022
|
children: `# .env
|
|
3640
3023
|
STRIPE_SECRET_KEY=sk_test_...
|
|
@@ -3663,18 +3046,18 @@ STRIPE_WEBHOOK_SECRET=whsec_...`
|
|
|
3663
3046
|
className: "space-y-4",
|
|
3664
3047
|
children: [
|
|
3665
3048
|
/* @__PURE__ */ jsx17("h2", {
|
|
3666
|
-
className: "text-2xl
|
|
3049
|
+
className: "font-bold text-2xl",
|
|
3667
3050
|
children: "Available capabilities"
|
|
3668
3051
|
}),
|
|
3669
3052
|
/* @__PURE__ */ jsxs17("div", {
|
|
3670
3053
|
className: "space-y-3",
|
|
3671
3054
|
children: [
|
|
3672
3055
|
/* @__PURE__ */ jsx17("h3", {
|
|
3673
|
-
className: "text-lg
|
|
3056
|
+
className: "font-semibold text-lg",
|
|
3674
3057
|
children: "Payment Intents"
|
|
3675
3058
|
}),
|
|
3676
3059
|
/* @__PURE__ */ jsx17("div", {
|
|
3677
|
-
className: "
|
|
3060
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3678
3061
|
children: /* @__PURE__ */ jsx17("pre", {
|
|
3679
3062
|
children: `capabilityId: stripe-create-payment-intent
|
|
3680
3063
|
provider:
|
|
@@ -3710,11 +3093,11 @@ outputs:
|
|
|
3710
3093
|
className: "space-y-3",
|
|
3711
3094
|
children: [
|
|
3712
3095
|
/* @__PURE__ */ jsx17("h3", {
|
|
3713
|
-
className: "text-lg
|
|
3096
|
+
className: "font-semibold text-lg",
|
|
3714
3097
|
children: "Customers"
|
|
3715
3098
|
}),
|
|
3716
3099
|
/* @__PURE__ */ jsx17("div", {
|
|
3717
|
-
className: "
|
|
3100
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3718
3101
|
children: /* @__PURE__ */ jsx17("pre", {
|
|
3719
3102
|
children: `capabilityId: stripe-create-customer
|
|
3720
3103
|
provider:
|
|
@@ -3744,11 +3127,11 @@ outputs:
|
|
|
3744
3127
|
className: "space-y-3",
|
|
3745
3128
|
children: [
|
|
3746
3129
|
/* @__PURE__ */ jsx17("h3", {
|
|
3747
|
-
className: "text-lg
|
|
3130
|
+
className: "font-semibold text-lg",
|
|
3748
3131
|
children: "Subscriptions"
|
|
3749
3132
|
}),
|
|
3750
3133
|
/* @__PURE__ */ jsx17("div", {
|
|
3751
|
-
className: "
|
|
3134
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3752
3135
|
children: /* @__PURE__ */ jsx17("pre", {
|
|
3753
3136
|
children: `capabilityId: stripe-create-subscription
|
|
3754
3137
|
provider:
|
|
@@ -3781,7 +3164,7 @@ outputs:
|
|
|
3781
3164
|
className: "space-y-4",
|
|
3782
3165
|
children: [
|
|
3783
3166
|
/* @__PURE__ */ jsx17("h2", {
|
|
3784
|
-
className: "text-2xl
|
|
3167
|
+
className: "font-bold text-2xl",
|
|
3785
3168
|
children: "Webhooks"
|
|
3786
3169
|
}),
|
|
3787
3170
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3789,7 +3172,7 @@ outputs:
|
|
|
3789
3172
|
children: "ContractSpec automatically handles Stripe webhooks. Configure your webhook endpoint in the Stripe Dashboard:"
|
|
3790
3173
|
}),
|
|
3791
3174
|
/* @__PURE__ */ jsx17("div", {
|
|
3792
|
-
className: "
|
|
3175
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3793
3176
|
children: /* @__PURE__ */ jsx17("pre", {
|
|
3794
3177
|
children: `https://your-app.com/api/webhooks/stripe`
|
|
3795
3178
|
})
|
|
@@ -3799,35 +3182,35 @@ outputs:
|
|
|
3799
3182
|
children: "Subscribe to these events:"
|
|
3800
3183
|
}),
|
|
3801
3184
|
/* @__PURE__ */ jsxs17("ul", {
|
|
3802
|
-
className: "
|
|
3185
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
3803
3186
|
children: [
|
|
3804
3187
|
/* @__PURE__ */ jsx17("li", {
|
|
3805
3188
|
children: /* @__PURE__ */ jsx17("code", {
|
|
3806
|
-
className: "bg-background/50
|
|
3189
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3807
3190
|
children: "payment_intent.succeeded"
|
|
3808
3191
|
})
|
|
3809
3192
|
}),
|
|
3810
3193
|
/* @__PURE__ */ jsx17("li", {
|
|
3811
3194
|
children: /* @__PURE__ */ jsx17("code", {
|
|
3812
|
-
className: "bg-background/50
|
|
3195
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3813
3196
|
children: "payment_intent.payment_failed"
|
|
3814
3197
|
})
|
|
3815
3198
|
}),
|
|
3816
3199
|
/* @__PURE__ */ jsx17("li", {
|
|
3817
3200
|
children: /* @__PURE__ */ jsx17("code", {
|
|
3818
|
-
className: "bg-background/50
|
|
3201
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3819
3202
|
children: "customer.subscription.created"
|
|
3820
3203
|
})
|
|
3821
3204
|
}),
|
|
3822
3205
|
/* @__PURE__ */ jsx17("li", {
|
|
3823
3206
|
children: /* @__PURE__ */ jsx17("code", {
|
|
3824
|
-
className: "bg-background/50
|
|
3207
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3825
3208
|
children: "customer.subscription.updated"
|
|
3826
3209
|
})
|
|
3827
3210
|
}),
|
|
3828
3211
|
/* @__PURE__ */ jsx17("li", {
|
|
3829
3212
|
children: /* @__PURE__ */ jsx17("code", {
|
|
3830
|
-
className: "bg-background/50
|
|
3213
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
3831
3214
|
children: "customer.subscription.deleted"
|
|
3832
3215
|
})
|
|
3833
3216
|
})
|
|
@@ -3839,7 +3222,7 @@ outputs:
|
|
|
3839
3222
|
className: "space-y-4",
|
|
3840
3223
|
children: [
|
|
3841
3224
|
/* @__PURE__ */ jsx17("h2", {
|
|
3842
|
-
className: "text-2xl
|
|
3225
|
+
className: "font-bold text-2xl",
|
|
3843
3226
|
children: "Example workflow"
|
|
3844
3227
|
}),
|
|
3845
3228
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3847,7 +3230,7 @@ outputs:
|
|
|
3847
3230
|
children: "Here's a complete payment workflow using Stripe:"
|
|
3848
3231
|
}),
|
|
3849
3232
|
/* @__PURE__ */ jsx17("div", {
|
|
3850
|
-
className: "
|
|
3233
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
3851
3234
|
children: /* @__PURE__ */ jsx17("pre", {
|
|
3852
3235
|
children: `workflowId: process-payment
|
|
3853
3236
|
version: '1.0.0'.0.0
|
|
@@ -3894,7 +3277,7 @@ steps:
|
|
|
3894
3277
|
className: "space-y-4",
|
|
3895
3278
|
children: [
|
|
3896
3279
|
/* @__PURE__ */ jsx17("h2", {
|
|
3897
|
-
className: "text-2xl
|
|
3280
|
+
className: "font-bold text-2xl",
|
|
3898
3281
|
children: "Testing"
|
|
3899
3282
|
}),
|
|
3900
3283
|
/* @__PURE__ */ jsx17("p", {
|
|
@@ -3902,7 +3285,7 @@ steps:
|
|
|
3902
3285
|
children: "Use Stripe's test cards for development:"
|
|
3903
3286
|
}),
|
|
3904
3287
|
/* @__PURE__ */ jsx17("div", {
|
|
3905
|
-
className: "
|
|
3288
|
+
className: "overflow-x-auto rounded-lg border border-border/50",
|
|
3906
3289
|
children: /* @__PURE__ */ jsxs17("table", {
|
|
3907
3290
|
className: "w-full text-left text-sm",
|
|
3908
3291
|
children: [
|
|
@@ -3923,7 +3306,7 @@ steps:
|
|
|
3923
3306
|
})
|
|
3924
3307
|
}),
|
|
3925
3308
|
/* @__PURE__ */ jsxs17("tbody", {
|
|
3926
|
-
className: "divide-border/50
|
|
3309
|
+
className: "divide-y divide-border/50",
|
|
3927
3310
|
children: [
|
|
3928
3311
|
/* @__PURE__ */ jsxs17("tr", {
|
|
3929
3312
|
children: [
|
|
@@ -3972,11 +3355,11 @@ steps:
|
|
|
3972
3355
|
className: "space-y-4",
|
|
3973
3356
|
children: [
|
|
3974
3357
|
/* @__PURE__ */ jsx17("h2", {
|
|
3975
|
-
className: "text-2xl
|
|
3358
|
+
className: "font-bold text-2xl",
|
|
3976
3359
|
children: "Best practices"
|
|
3977
3360
|
}),
|
|
3978
3361
|
/* @__PURE__ */ jsxs17("ul", {
|
|
3979
|
-
className: "
|
|
3362
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
3980
3363
|
children: [
|
|
3981
3364
|
/* @__PURE__ */ jsx17("li", {
|
|
3982
3365
|
children: "Always use test mode during development"
|
|
@@ -4013,7 +3396,7 @@ steps:
|
|
|
4013
3396
|
className: "btn-primary",
|
|
4014
3397
|
children: [
|
|
4015
3398
|
"Next: Postmark ",
|
|
4016
|
-
/* @__PURE__ */ jsx17(
|
|
3399
|
+
/* @__PURE__ */ jsx17(ChevronRight14, {
|
|
4017
3400
|
size: 16
|
|
4018
3401
|
})
|
|
4019
3402
|
]
|
|
@@ -4035,7 +3418,7 @@ function IntegrationsTwilioPage() {
|
|
|
4035
3418
|
className: "space-y-4",
|
|
4036
3419
|
children: [
|
|
4037
3420
|
/* @__PURE__ */ jsx18("h1", {
|
|
4038
|
-
className: "text-4xl
|
|
3421
|
+
className: "font-bold text-4xl",
|
|
4039
3422
|
children: "Twilio"
|
|
4040
3423
|
}),
|
|
4041
3424
|
/* @__PURE__ */ jsx18("p", {
|
|
@@ -4048,11 +3431,11 @@ function IntegrationsTwilioPage() {
|
|
|
4048
3431
|
className: "space-y-4",
|
|
4049
3432
|
children: [
|
|
4050
3433
|
/* @__PURE__ */ jsx18("h2", {
|
|
4051
|
-
className: "text-2xl
|
|
3434
|
+
className: "font-bold text-2xl",
|
|
4052
3435
|
children: "Setup"
|
|
4053
3436
|
}),
|
|
4054
3437
|
/* @__PURE__ */ jsx18("div", {
|
|
4055
|
-
className: "
|
|
3438
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
4056
3439
|
children: /* @__PURE__ */ jsx18("pre", {
|
|
4057
3440
|
children: `# .env
|
|
4058
3441
|
TWILIO_ACCOUNT_SID=...
|
|
@@ -4066,11 +3449,11 @@ TWILIO_PHONE_NUMBER=+1234567890`
|
|
|
4066
3449
|
className: "space-y-4",
|
|
4067
3450
|
children: [
|
|
4068
3451
|
/* @__PURE__ */ jsx18("h2", {
|
|
4069
|
-
className: "text-2xl
|
|
3452
|
+
className: "font-bold text-2xl",
|
|
4070
3453
|
children: "Sending SMS"
|
|
4071
3454
|
}),
|
|
4072
3455
|
/* @__PURE__ */ jsx18("div", {
|
|
4073
|
-
className: "
|
|
3456
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
4074
3457
|
children: /* @__PURE__ */ jsx18("pre", {
|
|
4075
3458
|
children: `capabilityId: twilio-send-sms
|
|
4076
3459
|
provider:
|
|
@@ -4098,11 +3481,11 @@ outputs:
|
|
|
4098
3481
|
className: "space-y-4",
|
|
4099
3482
|
children: [
|
|
4100
3483
|
/* @__PURE__ */ jsx18("h2", {
|
|
4101
|
-
className: "text-2xl
|
|
3484
|
+
className: "font-bold text-2xl",
|
|
4102
3485
|
children: "Use cases"
|
|
4103
3486
|
}),
|
|
4104
3487
|
/* @__PURE__ */ jsxs18("ul", {
|
|
4105
|
-
className: "
|
|
3488
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4106
3489
|
children: [
|
|
4107
3490
|
/* @__PURE__ */ jsx18("li", {
|
|
4108
3491
|
children: "Order confirmations and shipping updates"
|
|
@@ -4124,11 +3507,11 @@ outputs:
|
|
|
4124
3507
|
className: "space-y-4",
|
|
4125
3508
|
children: [
|
|
4126
3509
|
/* @__PURE__ */ jsx18("h2", {
|
|
4127
|
-
className: "text-2xl
|
|
3510
|
+
className: "font-bold text-2xl",
|
|
4128
3511
|
children: "Best practices"
|
|
4129
3512
|
}),
|
|
4130
3513
|
/* @__PURE__ */ jsxs18("ul", {
|
|
4131
|
-
className: "
|
|
3514
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4132
3515
|
children: [
|
|
4133
3516
|
/* @__PURE__ */ jsx18("li", {
|
|
4134
3517
|
children: "Always use E.164 format for phone numbers (+1234567890)"
|
|
@@ -4170,7 +3553,7 @@ outputs:
|
|
|
4170
3553
|
|
|
4171
3554
|
// src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx
|
|
4172
3555
|
import Link18 from "@contractspec/lib.ui-link";
|
|
4173
|
-
import { ChevronRight as
|
|
3556
|
+
import { ChevronRight as ChevronRight15 } from "lucide-react";
|
|
4174
3557
|
import { jsx as jsx19, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4175
3558
|
function IntegrationsWhatsappMetaPage() {
|
|
4176
3559
|
return /* @__PURE__ */ jsxs19("div", {
|
|
@@ -4180,7 +3563,7 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4180
3563
|
className: "space-y-4",
|
|
4181
3564
|
children: [
|
|
4182
3565
|
/* @__PURE__ */ jsx19("h1", {
|
|
4183
|
-
className: "text-4xl
|
|
3566
|
+
className: "font-bold text-4xl",
|
|
4184
3567
|
children: "WhatsApp Meta"
|
|
4185
3568
|
}),
|
|
4186
3569
|
/* @__PURE__ */ jsx19("p", {
|
|
@@ -4193,11 +3576,11 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4193
3576
|
className: "space-y-4",
|
|
4194
3577
|
children: [
|
|
4195
3578
|
/* @__PURE__ */ jsx19("h2", {
|
|
4196
|
-
className: "text-2xl
|
|
3579
|
+
className: "font-bold text-2xl",
|
|
4197
3580
|
children: "Required secrets and config"
|
|
4198
3581
|
}),
|
|
4199
3582
|
/* @__PURE__ */ jsx19("div", {
|
|
4200
|
-
className: "
|
|
3583
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
4201
3584
|
children: /* @__PURE__ */ jsx19("pre", {
|
|
4202
3585
|
children: `// secret payload
|
|
4203
3586
|
{
|
|
@@ -4219,18 +3602,18 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4219
3602
|
className: "space-y-4",
|
|
4220
3603
|
children: [
|
|
4221
3604
|
/* @__PURE__ */ jsx19("h2", {
|
|
4222
|
-
className: "text-2xl
|
|
3605
|
+
className: "font-bold text-2xl",
|
|
4223
3606
|
children: "Webhook endpoints"
|
|
4224
3607
|
}),
|
|
4225
3608
|
/* @__PURE__ */ jsxs19("ul", {
|
|
4226
|
-
className: "
|
|
3609
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4227
3610
|
children: [
|
|
4228
3611
|
/* @__PURE__ */ jsxs19("li", {
|
|
4229
3612
|
children: [
|
|
4230
3613
|
"Verification challenge:",
|
|
4231
3614
|
" ",
|
|
4232
3615
|
/* @__PURE__ */ jsx19("code", {
|
|
4233
|
-
className: "bg-background/50
|
|
3616
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
4234
3617
|
children: "GET /webhooks/whatsapp/meta"
|
|
4235
3618
|
})
|
|
4236
3619
|
]
|
|
@@ -4240,7 +3623,7 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4240
3623
|
"Inbound messages:",
|
|
4241
3624
|
" ",
|
|
4242
3625
|
/* @__PURE__ */ jsx19("code", {
|
|
4243
|
-
className: "bg-background/50
|
|
3626
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
4244
3627
|
children: "POST /webhooks/whatsapp/meta"
|
|
4245
3628
|
})
|
|
4246
3629
|
]
|
|
@@ -4250,7 +3633,7 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4250
3633
|
"Signatures are validated with",
|
|
4251
3634
|
" ",
|
|
4252
3635
|
/* @__PURE__ */ jsx19("code", {
|
|
4253
|
-
className: "bg-background/50
|
|
3636
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
4254
3637
|
children: "x-hub-signature-256"
|
|
4255
3638
|
}),
|
|
4256
3639
|
"."
|
|
@@ -4264,11 +3647,11 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4264
3647
|
className: "space-y-4",
|
|
4265
3648
|
children: [
|
|
4266
3649
|
/* @__PURE__ */ jsx19("h2", {
|
|
4267
|
-
className: "text-2xl
|
|
3650
|
+
className: "font-bold text-2xl",
|
|
4268
3651
|
children: "Workspace mapping"
|
|
4269
3652
|
}),
|
|
4270
3653
|
/* @__PURE__ */ jsx19("div", {
|
|
4271
|
-
className: "
|
|
3654
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
4272
3655
|
children: /* @__PURE__ */ jsx19("pre", {
|
|
4273
3656
|
children: `CHANNEL_WORKSPACE_MAP_WHATSAPP_META={"120000000001":"workspace-acme"}`
|
|
4274
3657
|
})
|
|
@@ -4279,11 +3662,11 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4279
3662
|
className: "space-y-4",
|
|
4280
3663
|
children: [
|
|
4281
3664
|
/* @__PURE__ */ jsx19("h2", {
|
|
4282
|
-
className: "text-2xl
|
|
3665
|
+
className: "font-bold text-2xl",
|
|
4283
3666
|
children: "Best practices"
|
|
4284
3667
|
}),
|
|
4285
3668
|
/* @__PURE__ */ jsxs19("ul", {
|
|
4286
|
-
className: "
|
|
3669
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4287
3670
|
children: [
|
|
4288
3671
|
/* @__PURE__ */ jsx19("li", {
|
|
4289
3672
|
children: "Keep verify and app secrets separate from access tokens."
|
|
@@ -4311,7 +3694,7 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4311
3694
|
className: "btn-primary",
|
|
4312
3695
|
children: [
|
|
4313
3696
|
"Next: WhatsApp Twilio ",
|
|
4314
|
-
/* @__PURE__ */ jsx19(
|
|
3697
|
+
/* @__PURE__ */ jsx19(ChevronRight15, {
|
|
4315
3698
|
size: 16
|
|
4316
3699
|
})
|
|
4317
3700
|
]
|
|
@@ -4324,7 +3707,7 @@ function IntegrationsWhatsappMetaPage() {
|
|
|
4324
3707
|
|
|
4325
3708
|
// src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx
|
|
4326
3709
|
import Link19 from "@contractspec/lib.ui-link";
|
|
4327
|
-
import { ChevronRight as
|
|
3710
|
+
import { ChevronRight as ChevronRight16 } from "lucide-react";
|
|
4328
3711
|
import { jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4329
3712
|
function IntegrationsWhatsappTwilioPage() {
|
|
4330
3713
|
return /* @__PURE__ */ jsxs20("div", {
|
|
@@ -4334,7 +3717,7 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4334
3717
|
className: "space-y-4",
|
|
4335
3718
|
children: [
|
|
4336
3719
|
/* @__PURE__ */ jsx20("h1", {
|
|
4337
|
-
className: "text-4xl
|
|
3720
|
+
className: "font-bold text-4xl",
|
|
4338
3721
|
children: "WhatsApp Twilio"
|
|
4339
3722
|
}),
|
|
4340
3723
|
/* @__PURE__ */ jsx20("p", {
|
|
@@ -4347,11 +3730,11 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4347
3730
|
className: "space-y-4",
|
|
4348
3731
|
children: [
|
|
4349
3732
|
/* @__PURE__ */ jsx20("h2", {
|
|
4350
|
-
className: "text-2xl
|
|
3733
|
+
className: "font-bold text-2xl",
|
|
4351
3734
|
children: "Required secrets and config"
|
|
4352
3735
|
}),
|
|
4353
3736
|
/* @__PURE__ */ jsx20("div", {
|
|
4354
|
-
className: "
|
|
3737
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
4355
3738
|
children: /* @__PURE__ */ jsx20("pre", {
|
|
4356
3739
|
children: `// secret payload
|
|
4357
3740
|
{
|
|
@@ -4371,18 +3754,18 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4371
3754
|
className: "space-y-4",
|
|
4372
3755
|
children: [
|
|
4373
3756
|
/* @__PURE__ */ jsx20("h2", {
|
|
4374
|
-
className: "text-2xl
|
|
3757
|
+
className: "font-bold text-2xl",
|
|
4375
3758
|
children: "Webhook ingress"
|
|
4376
3759
|
}),
|
|
4377
3760
|
/* @__PURE__ */ jsxs20("ul", {
|
|
4378
|
-
className: "
|
|
3761
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4379
3762
|
children: [
|
|
4380
3763
|
/* @__PURE__ */ jsxs20("li", {
|
|
4381
3764
|
children: [
|
|
4382
3765
|
"Inbound Twilio form payloads are accepted on",
|
|
4383
3766
|
" ",
|
|
4384
3767
|
/* @__PURE__ */ jsx20("code", {
|
|
4385
|
-
className: "bg-background/50
|
|
3768
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
4386
3769
|
children: "/webhooks/whatsapp/twilio"
|
|
4387
3770
|
}),
|
|
4388
3771
|
"."
|
|
@@ -4393,7 +3776,7 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4393
3776
|
"Signatures are validated with",
|
|
4394
3777
|
" ",
|
|
4395
3778
|
/* @__PURE__ */ jsx20("code", {
|
|
4396
|
-
className: "bg-background/50
|
|
3779
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
4397
3780
|
children: "x-twilio-signature"
|
|
4398
3781
|
}),
|
|
4399
3782
|
" ",
|
|
@@ -4405,7 +3788,7 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4405
3788
|
"For deterministic verification, set the exact public webhook URL in",
|
|
4406
3789
|
" ",
|
|
4407
3790
|
/* @__PURE__ */ jsx20("code", {
|
|
4408
|
-
className: "bg-background/50
|
|
3791
|
+
className: "rounded bg-background/50 px-2 py-1",
|
|
4409
3792
|
children: "WHATSAPP_TWILIO_WEBHOOK_URL"
|
|
4410
3793
|
}),
|
|
4411
3794
|
"."
|
|
@@ -4419,11 +3802,11 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4419
3802
|
className: "space-y-4",
|
|
4420
3803
|
children: [
|
|
4421
3804
|
/* @__PURE__ */ jsx20("h2", {
|
|
4422
|
-
className: "text-2xl
|
|
3805
|
+
className: "font-bold text-2xl",
|
|
4423
3806
|
children: "Workspace mapping"
|
|
4424
3807
|
}),
|
|
4425
3808
|
/* @__PURE__ */ jsx20("div", {
|
|
4426
|
-
className: "
|
|
3809
|
+
className: "overflow-x-auto rounded-lg border border-border bg-background/50 p-4 font-mono text-muted-foreground text-sm",
|
|
4427
3810
|
children: /* @__PURE__ */ jsx20("pre", {
|
|
4428
3811
|
children: `CHANNEL_WORKSPACE_MAP_WHATSAPP_TWILIO={"AC123":"workspace-acme"}`
|
|
4429
3812
|
})
|
|
@@ -4434,11 +3817,11 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4434
3817
|
className: "space-y-4",
|
|
4435
3818
|
children: [
|
|
4436
3819
|
/* @__PURE__ */ jsx20("h2", {
|
|
4437
|
-
className: "text-2xl
|
|
3820
|
+
className: "font-bold text-2xl",
|
|
4438
3821
|
children: "Best practices"
|
|
4439
3822
|
}),
|
|
4440
3823
|
/* @__PURE__ */ jsxs20("ul", {
|
|
4441
|
-
className: "
|
|
3824
|
+
className: "list-inside list-disc space-y-2 text-muted-foreground",
|
|
4442
3825
|
children: [
|
|
4443
3826
|
/* @__PURE__ */ jsx20("li", {
|
|
4444
3827
|
children: "Use Twilio as fallback when Meta WhatsApp is your primary route."
|
|
@@ -4450,7 +3833,7 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4450
3833
|
children: [
|
|
4451
3834
|
"Protect internal dispatch endpoints with",
|
|
4452
3835
|
/* @__PURE__ */ jsx20("code", {
|
|
4453
|
-
className: "bg-background/50
|
|
3836
|
+
className: "ml-1 rounded bg-background/50 px-2 py-1",
|
|
4454
3837
|
children: "CHANNEL_DISPATCH_TOKEN"
|
|
4455
3838
|
}),
|
|
4456
3839
|
"."
|
|
@@ -4473,7 +3856,7 @@ function IntegrationsWhatsappTwilioPage() {
|
|
|
4473
3856
|
className: "btn-primary",
|
|
4474
3857
|
children: [
|
|
4475
3858
|
"Next: Health Routing ",
|
|
4476
|
-
/* @__PURE__ */ jsx20(
|
|
3859
|
+
/* @__PURE__ */ jsx20(ChevronRight16, {
|
|
4477
3860
|
size: 16
|
|
4478
3861
|
})
|
|
4479
3862
|
]
|