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