@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.
Files changed (900) hide show
  1. package/.turbo/turbo-build.log +258 -252
  2. package/AGENTS.md +42 -24
  3. package/CHANGELOG.md +56 -0
  4. package/README.md +59 -37
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.js +842 -840
  7. package/dist/application/mcp/cliMcp.js +30 -30
  8. package/dist/application/mcp/common.d.ts +2 -2
  9. package/dist/application/mcp/common.js +2 -2
  10. package/dist/application/mcp/contractsMcp.d.ts +1 -1
  11. package/dist/application/mcp/contractsMcp.js +163 -163
  12. package/dist/application/mcp/docsMcp.js +31 -31
  13. package/dist/application/mcp/index.d.ts +2 -2
  14. package/dist/application/mcp/index.js +842 -840
  15. package/dist/application/mcp/internalMcp.js +30 -30
  16. package/dist/application/mcp/providerRankingMcp.js +35 -33
  17. package/dist/components/docs/DocsIndexPage.js +859 -212
  18. package/dist/components/docs/advanced/AdvancedMCPPage.js +15 -15
  19. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
  20. package/dist/components/docs/advanced/AdvancedRenderersPage.js +7 -7
  21. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
  22. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
  23. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
  24. package/dist/components/docs/advanced/index.d.ts +2 -2
  25. package/dist/components/docs/advanced/index.js +57 -57
  26. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
  27. package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
  28. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
  29. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
  30. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
  31. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
  32. package/dist/components/docs/architecture/index.d.ts +3 -3
  33. package/dist/components/docs/architecture/index.js +145 -466
  34. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
  35. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
  36. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
  37. package/dist/components/docs/comparison/ComparisonOverviewPage.js +4 -4
  38. package/dist/components/docs/comparison/ComparisonWindmillPage.js +6 -6
  39. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
  40. package/dist/components/docs/comparison/index.d.ts +2 -2
  41. package/dist/components/docs/comparison/index.js +35 -35
  42. package/dist/components/docs/docsManifest.d.ts +42 -0
  43. package/dist/components/docs/docsManifest.js +612 -0
  44. package/dist/components/docs/ecosystem/IntegrationsPage.js +5 -5
  45. package/dist/components/docs/ecosystem/PluginsPage.js +7 -7
  46. package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
  47. package/dist/components/docs/ecosystem/TemplatesPage.js +11 -11
  48. package/dist/components/docs/ecosystem/index.d.ts +2 -2
  49. package/dist/components/docs/ecosystem/index.js +27 -27
  50. package/dist/components/docs/examples/DocsExamplesPage.js +59 -6
  51. package/dist/components/docs/examples/ExampleShowcasePage.d.ts +5 -0
  52. package/dist/components/docs/examples/ExampleShowcasePage.js +258 -0
  53. package/dist/components/docs/examples/exampleShowcaseData.d.ts +10 -0
  54. package/dist/components/docs/examples/exampleShowcaseData.js +53 -0
  55. package/dist/components/docs/examples/index.d.ts +1 -0
  56. package/dist/components/docs/examples/index.js +265 -6
  57. package/dist/components/docs/getting-started/CLIPage.js +9 -9
  58. package/dist/components/docs/getting-started/CompatibilityPage.js +12 -12
  59. package/dist/components/docs/getting-started/DataViewTutorialPage.js +7 -7
  60. package/dist/components/docs/getting-started/DeveloperToolsPage.js +10 -10
  61. package/dist/components/docs/getting-started/HelloWorldPage.js +8 -8
  62. package/dist/components/docs/getting-started/InstallationPage.js +10 -10
  63. package/dist/components/docs/getting-started/StartHerePage.js +8 -8
  64. package/dist/components/docs/getting-started/TroubleshootingPage.js +12 -12
  65. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
  66. package/dist/components/docs/getting-started/index.d.ts +5 -5
  67. package/dist/components/docs/getting-started/index.js +89 -89
  68. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
  69. package/dist/components/docs/guides/GuideContractTypesPage.js +33 -33
  70. package/dist/components/docs/guides/GuideDocsPipelinePage.js +13 -13
  71. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
  72. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
  73. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
  74. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
  75. package/dist/components/docs/guides/GuidesIndexPage.js +69 -46
  76. package/dist/components/docs/guides/index.d.ts +4 -4
  77. package/dist/components/docs/guides/index.js +174 -151
  78. package/dist/components/docs/index.d.ts +13 -12
  79. package/dist/components/docs/index.js +15220 -16233
  80. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
  81. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
  82. package/dist/components/docs/integrations/IntegrationsGithubPage.js +11 -11
  83. package/dist/components/docs/integrations/IntegrationsGmailPage.js +7 -7
  84. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
  85. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
  86. package/dist/components/docs/integrations/IntegrationsMistralPage.js +12 -12
  87. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
  88. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
  89. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
  90. package/dist/components/docs/integrations/IntegrationsPowensPage.js +24 -24
  91. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
  92. package/dist/components/docs/integrations/IntegrationsResendPage.js +7 -7
  93. package/dist/components/docs/integrations/IntegrationsS3Page.js +9 -9
  94. package/dist/components/docs/integrations/IntegrationsSlackPage.js +11 -11
  95. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
  96. package/dist/components/docs/integrations/IntegrationsStripePage.js +25 -25
  97. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
  98. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
  99. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
  100. package/dist/components/docs/integrations/index.d.ts +1 -1
  101. package/dist/components/docs/integrations/index.js +614 -1231
  102. package/dist/components/docs/intent/ContractFirstApiPage.js +8 -8
  103. package/dist/components/docs/intent/DeterministicCodegenPage.js +9 -9
  104. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
  105. package/dist/components/docs/intent/OpenapiAlternativePage.js +13 -13
  106. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
  107. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
  108. package/dist/components/docs/intent/index.d.ts +3 -3
  109. package/dist/components/docs/intent/index.js +766 -766
  110. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
  111. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
  112. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
  113. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
  114. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
  115. package/dist/components/docs/knowledge/index.d.ts +1 -1
  116. package/dist/components/docs/knowledge/index.js +437 -785
  117. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
  118. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
  119. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
  120. package/dist/components/docs/libraries/LibrariesContentGenPage.js +6 -6
  121. package/dist/components/docs/libraries/LibrariesContractsPage.js +16 -16
  122. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
  123. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
  124. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
  125. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
  126. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
  127. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
  128. package/dist/components/docs/libraries/LibrariesGrowthPage.js +5 -5
  129. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
  130. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
  131. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
  132. package/dist/components/docs/libraries/LibrariesOverviewPage.js +117 -430
  133. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
  134. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
  135. package/dist/components/docs/libraries/LibrariesResiliencePage.js +6 -6
  136. package/dist/components/docs/libraries/LibrariesRuntimePage.js +13 -13
  137. package/dist/components/docs/libraries/LibrariesSLOPage.js +6 -6
  138. package/dist/components/docs/libraries/LibrariesSchemaPage.js +16 -16
  139. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
  140. package/dist/components/docs/libraries/LibrariesTestingPage.js +7 -7
  141. package/dist/components/docs/libraries/LibrariesUIKitPage.js +10 -10
  142. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
  143. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
  144. package/dist/components/docs/libraries/index.d.ts +4 -4
  145. package/dist/components/docs/libraries/index.js +1308 -1621
  146. package/dist/components/docs/manifesto/ManifestoPage.js +33 -138
  147. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
  148. package/dist/components/docs/ops/DistributedTracingOpsPage.js +5 -5
  149. package/dist/components/docs/ops/index.js +14 -14
  150. package/dist/components/docs/reference/DocsMarkdownContent.js +1 -1
  151. package/dist/components/docs/reference/DocsReferenceContent.js +2 -2
  152. package/dist/components/docs/reference/DocsReferenceIndexClient.js +8 -8
  153. package/dist/components/docs/reference/DocsReferenceIndexPage.js +8 -8
  154. package/dist/components/docs/reference/DocsReferencePage.js +2 -2
  155. package/dist/components/docs/reference/index.js +10 -10
  156. package/dist/components/docs/safety/SafetyAuditingPage.js +16 -16
  157. package/dist/components/docs/safety/SafetyMigrationsPage.js +15 -15
  158. package/dist/components/docs/safety/SafetyOverviewPage.js +69 -206
  159. package/dist/components/docs/safety/SafetyPDPPage.js +12 -12
  160. package/dist/components/docs/safety/SafetySecurityTrustPage.js +11 -11
  161. package/dist/components/docs/safety/SafetySigningPage.js +7 -7
  162. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
  163. package/dist/components/docs/safety/index.d.ts +3 -3
  164. package/dist/components/docs/safety/index.js +616 -753
  165. package/dist/components/docs/shared/StudioPrompt.js +5 -5
  166. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
  167. package/dist/components/docs/specs/SpecsDataViewsPage.js +14 -14
  168. package/dist/components/docs/specs/SpecsOverlaysPage.js +14 -14
  169. package/dist/components/docs/specs/SpecsOverviewPage.js +135 -297
  170. package/dist/components/docs/specs/SpecsPolicyPage.js +29 -29
  171. package/dist/components/docs/specs/SpecsWorkflowsPage.js +18 -18
  172. package/dist/components/docs/specs/index.d.ts +3 -3
  173. package/dist/components/docs/specs/index.js +814 -976
  174. package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
  175. package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
  176. package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
  177. package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
  178. package/dist/components/docs/studio/StudioOverviewPage.js +109 -56
  179. package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  180. package/dist/components/docs/studio/index.d.ts +4 -4
  181. package/dist/components/docs/studio/index.js +170 -117
  182. package/dist/components/integrations/index.js +25 -25
  183. package/dist/components/integrations/molecules/IntegrationCard.js +5 -5
  184. package/dist/components/integrations/organisms/IntegrationMarketplace.js +12 -12
  185. package/dist/components/integrations/organisms/IntegrationSettings.js +7 -7
  186. package/dist/components/integrations/organisms/KnowledgeSourceList.js +6 -6
  187. package/dist/components/legal/PrivacyTemplate.js +67 -67
  188. package/dist/components/legal/TermsTemplate.js +54 -54
  189. package/dist/components/legal/index.js +121 -121
  190. package/dist/components/shared/FeatureGateNotice.js +4 -4
  191. package/dist/components/shared/index.js +4 -4
  192. package/dist/components/shell/WorkspaceHeader.js +4 -4
  193. package/dist/components/shell/WorkspaceProjectShellLayout.d.ts +3 -3
  194. package/dist/components/shell/WorkspaceProjectShellLayout.js +10 -10
  195. package/dist/components/shell/WorkspaceShellRenderer.d.ts +4 -4
  196. package/dist/components/shell/WorkspaceShellRenderer.js +8 -8
  197. package/dist/components/shell/WorkspaceSidebar.js +2 -2
  198. package/dist/components/shell/index.d.ts +1 -1
  199. package/dist/components/shell/index.js +12 -12
  200. package/dist/components/templates/engine/index.d.ts +1 -1
  201. package/dist/components/templates/index.d.ts +1 -1
  202. package/dist/components/templates/index.js +835 -835
  203. package/dist/components/templates/messaging/ConversationList.js +11 -11
  204. package/dist/components/templates/messaging/MessageComposer.js +11 -11
  205. package/dist/components/templates/messaging/MessageThread.js +6 -6
  206. package/dist/components/templates/messaging/MessagingWorkspace.js +23 -23
  207. package/dist/components/templates/messaging/index.d.ts +1 -1
  208. package/dist/components/templates/messaging/index.js +23 -23
  209. package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
  210. package/dist/components/templates/recipes/RecipeCard.js +5 -5
  211. package/dist/components/templates/recipes/RecipeDetail.js +8 -8
  212. package/dist/components/templates/recipes/RecipeList.js +17 -17
  213. package/dist/components/templates/recipes/index.d.ts +2 -2
  214. package/dist/components/templates/recipes/index.js +17 -17
  215. package/dist/components/templates/todos/FilterBar.d.ts +1 -1
  216. package/dist/components/templates/todos/FilterBar.js +9 -9
  217. package/dist/components/templates/todos/TaskForm.js +14 -14
  218. package/dist/components/templates/todos/TaskItem.js +4 -4
  219. package/dist/components/templates/todos/TaskList.js +30 -30
  220. package/dist/components/templates/todos/index.d.ts +2 -2
  221. package/dist/components/templates/todos/index.js +30 -30
  222. package/dist/config/index.d.ts +2 -2
  223. package/dist/features/contracts-registry.d.ts +3 -3
  224. package/dist/features/contracts-registry.js +15 -15
  225. package/dist/features/docs/docs.contracts.d.ts +1 -1
  226. package/dist/features/docs/docs.contracts.js +2 -2
  227. package/dist/features/docs/index.d.ts +1 -1
  228. package/dist/features/docs/index.js +2 -2
  229. package/dist/features/index.d.ts +4 -4
  230. package/dist/features/index.js +18 -18
  231. package/dist/features/registry.js +1 -1
  232. package/dist/index.d.ts +2 -2
  233. package/dist/index.js +17034 -18047
  234. package/dist/libs/email/client.js +1 -1
  235. package/dist/libs/email/contact.js +1 -1
  236. package/dist/libs/email/newsletter.js +1 -1
  237. package/dist/libs/email/waitlist-application.js +1 -1
  238. package/dist/libs/email/waitlist.js +1 -1
  239. package/dist/libs/email.d.ts +1 -1
  240. package/dist/libs/email.js +1 -1
  241. package/dist/node/application/index.js +842 -840
  242. package/dist/node/application/mcp/cliMcp.js +30 -30
  243. package/dist/node/application/mcp/common.js +2 -2
  244. package/dist/node/application/mcp/contractsMcp.js +163 -163
  245. package/dist/node/application/mcp/docsMcp.js +31 -31
  246. package/dist/node/application/mcp/index.js +842 -840
  247. package/dist/node/application/mcp/internalMcp.js +30 -30
  248. package/dist/node/application/mcp/providerRankingMcp.js +35 -33
  249. package/dist/node/components/docs/DocsIndexPage.js +859 -212
  250. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +15 -15
  251. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +4 -4
  252. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +7 -7
  253. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +9 -9
  254. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +16 -16
  255. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +6 -6
  256. package/dist/node/components/docs/advanced/index.js +57 -57
  257. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +10 -10
  258. package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +8 -8
  259. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +14 -14
  260. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +16 -16
  261. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +7 -7
  262. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +90 -411
  263. package/dist/node/components/docs/architecture/index.js +145 -466
  264. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +6 -6
  265. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +7 -7
  266. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +6 -6
  267. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +4 -4
  268. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +6 -6
  269. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +6 -6
  270. package/dist/node/components/docs/comparison/index.js +35 -35
  271. package/dist/node/components/docs/docsManifest.js +611 -0
  272. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +5 -5
  273. package/dist/node/components/docs/ecosystem/PluginsPage.js +7 -7
  274. package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
  275. package/dist/node/components/docs/ecosystem/TemplatesPage.js +11 -11
  276. package/dist/node/components/docs/ecosystem/index.js +27 -27
  277. package/dist/node/components/docs/examples/DocsExamplesPage.js +59 -6
  278. package/dist/node/components/docs/examples/ExampleShowcasePage.js +257 -0
  279. package/dist/node/components/docs/examples/exampleShowcaseData.js +52 -0
  280. package/dist/node/components/docs/examples/index.js +265 -6
  281. package/dist/node/components/docs/getting-started/CLIPage.js +9 -9
  282. package/dist/node/components/docs/getting-started/CompatibilityPage.js +12 -12
  283. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +7 -7
  284. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +10 -10
  285. package/dist/node/components/docs/getting-started/HelloWorldPage.js +8 -8
  286. package/dist/node/components/docs/getting-started/InstallationPage.js +10 -10
  287. package/dist/node/components/docs/getting-started/StartHerePage.js +8 -8
  288. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +12 -12
  289. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +13 -13
  290. package/dist/node/components/docs/getting-started/index.js +89 -89
  291. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +13 -13
  292. package/dist/node/components/docs/guides/GuideContractTypesPage.js +33 -33
  293. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +13 -13
  294. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +13 -13
  295. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +35 -35
  296. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +15 -15
  297. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +13 -13
  298. package/dist/node/components/docs/guides/GuidesIndexPage.js +69 -46
  299. package/dist/node/components/docs/guides/index.js +174 -151
  300. package/dist/node/components/docs/index.js +15220 -16233
  301. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +4 -4
  302. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +7 -7
  303. package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +11 -11
  304. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +7 -7
  305. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +5 -5
  306. package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +12 -12
  307. package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +12 -12
  308. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +11 -11
  309. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +119 -736
  310. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +12 -12
  311. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +24 -24
  312. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +9 -9
  313. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +7 -7
  314. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +9 -9
  315. package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +11 -11
  316. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +19 -19
  317. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +25 -25
  318. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +9 -9
  319. package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +12 -12
  320. package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +13 -13
  321. package/dist/node/components/docs/integrations/index.js +614 -1231
  322. package/dist/node/components/docs/intent/ContractFirstApiPage.js +8 -8
  323. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +9 -9
  324. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +13 -13
  325. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +13 -13
  326. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +9 -9
  327. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +8 -8
  328. package/dist/node/components/docs/intent/index.js +766 -766
  329. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +38 -38
  330. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +9 -9
  331. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +91 -439
  332. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +28 -28
  333. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +21 -21
  334. package/dist/node/components/docs/knowledge/index.js +437 -785
  335. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +16 -16
  336. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +8 -8
  337. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +6 -6
  338. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +6 -6
  339. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +16 -16
  340. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +6 -6
  341. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +14 -14
  342. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +7 -7
  343. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +13 -13
  344. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +7 -7
  345. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +13 -13
  346. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +5 -5
  347. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +5 -5
  348. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +7 -7
  349. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +6 -6
  350. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +117 -430
  351. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +6 -6
  352. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +6 -6
  353. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +6 -6
  354. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +13 -13
  355. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +6 -6
  356. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +16 -16
  357. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +7 -7
  358. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +7 -7
  359. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +10 -10
  360. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +5 -5
  361. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +8 -8
  362. package/dist/node/components/docs/libraries/index.js +1308 -1621
  363. package/dist/node/components/docs/manifesto/ManifestoPage.js +33 -138
  364. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +9 -9
  365. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +5 -5
  366. package/dist/node/components/docs/ops/index.js +14 -14
  367. package/dist/node/components/docs/reference/DocsMarkdownContent.js +1 -1
  368. package/dist/node/components/docs/reference/DocsReferenceContent.js +2 -2
  369. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +8 -8
  370. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +8 -8
  371. package/dist/node/components/docs/reference/DocsReferencePage.js +2 -2
  372. package/dist/node/components/docs/reference/index.js +10 -10
  373. package/dist/node/components/docs/safety/SafetyAuditingPage.js +16 -16
  374. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +15 -15
  375. package/dist/node/components/docs/safety/SafetyOverviewPage.js +69 -206
  376. package/dist/node/components/docs/safety/SafetyPDPPage.js +12 -12
  377. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +11 -11
  378. package/dist/node/components/docs/safety/SafetySigningPage.js +7 -7
  379. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +6 -6
  380. package/dist/node/components/docs/safety/index.js +616 -753
  381. package/dist/node/components/docs/shared/StudioPrompt.js +5 -5
  382. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +12 -12
  383. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +14 -14
  384. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +14 -14
  385. package/dist/node/components/docs/specs/SpecsOverviewPage.js +135 -297
  386. package/dist/node/components/docs/specs/SpecsPolicyPage.js +29 -29
  387. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +18 -18
  388. package/dist/node/components/docs/specs/index.js +814 -976
  389. package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
  390. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
  391. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
  392. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
  393. package/dist/node/components/docs/studio/StudioOverviewPage.js +109 -56
  394. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  395. package/dist/node/components/docs/studio/index.js +170 -117
  396. package/dist/node/components/integrations/index.js +25 -25
  397. package/dist/node/components/integrations/molecules/IntegrationCard.js +5 -5
  398. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +12 -12
  399. package/dist/node/components/integrations/organisms/IntegrationSettings.js +7 -7
  400. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +6 -6
  401. package/dist/node/components/legal/PrivacyTemplate.js +67 -67
  402. package/dist/node/components/legal/TermsTemplate.js +54 -54
  403. package/dist/node/components/legal/index.js +121 -121
  404. package/dist/node/components/shared/FeatureGateNotice.js +4 -4
  405. package/dist/node/components/shared/index.js +4 -4
  406. package/dist/node/components/shell/WorkspaceHeader.js +4 -4
  407. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +10 -10
  408. package/dist/node/components/shell/WorkspaceShellRenderer.js +8 -8
  409. package/dist/node/components/shell/WorkspaceSidebar.js +2 -2
  410. package/dist/node/components/shell/index.js +12 -12
  411. package/dist/node/components/templates/index.js +835 -835
  412. package/dist/node/components/templates/messaging/ConversationList.js +11 -11
  413. package/dist/node/components/templates/messaging/MessageComposer.js +11 -11
  414. package/dist/node/components/templates/messaging/MessageThread.js +6 -6
  415. package/dist/node/components/templates/messaging/MessagingWorkspace.js +23 -23
  416. package/dist/node/components/templates/messaging/index.js +23 -23
  417. package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
  418. package/dist/node/components/templates/recipes/RecipeCard.js +5 -5
  419. package/dist/node/components/templates/recipes/RecipeDetail.js +8 -8
  420. package/dist/node/components/templates/recipes/RecipeList.js +17 -17
  421. package/dist/node/components/templates/recipes/index.js +17 -17
  422. package/dist/node/components/templates/todos/FilterBar.js +9 -9
  423. package/dist/node/components/templates/todos/TaskForm.js +14 -14
  424. package/dist/node/components/templates/todos/TaskItem.js +4 -4
  425. package/dist/node/components/templates/todos/TaskList.js +30 -30
  426. package/dist/node/components/templates/todos/index.js +30 -30
  427. package/dist/node/features/contracts-registry.js +15 -15
  428. package/dist/node/features/docs/docs.contracts.js +2 -2
  429. package/dist/node/features/docs/index.js +2 -2
  430. package/dist/node/features/index.js +18 -18
  431. package/dist/node/features/registry.js +1 -1
  432. package/dist/node/index.js +17034 -18047
  433. package/dist/node/libs/email/client.js +1 -1
  434. package/dist/node/libs/email/contact.js +1 -1
  435. package/dist/node/libs/email/newsletter.js +1 -1
  436. package/dist/node/libs/email/waitlist-application.js +1 -1
  437. package/dist/node/libs/email/waitlist.js +1 -1
  438. package/dist/node/libs/email.js +1 -1
  439. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
  440. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +7 -7
  441. package/dist/node/presentation/features/atoms/index.js +7 -7
  442. package/dist/node/presentation/features/hooks/index.js +56 -56
  443. package/dist/node/presentation/features/hooks/useContractsRegistry.js +18 -18
  444. package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
  445. package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
  446. package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
  447. package/dist/node/presentation/features/index.js +1364 -1364
  448. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
  449. package/dist/node/presentation/features/molecules/FeatureCard/index.js +15 -15
  450. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
  451. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
  452. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  453. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
  454. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
  455. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
  456. package/dist/node/presentation/features/molecules/index.js +77 -77
  457. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +18 -18
  458. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
  459. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
  460. package/dist/node/presentation/features/organisms/FeatureEventsList.js +18 -18
  461. package/dist/node/presentation/features/organisms/FeatureFormsList.js +18 -18
  462. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +15 -15
  463. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +18 -18
  464. package/dist/node/presentation/features/organisms/index.js +401 -401
  465. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
  466. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
  467. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
  468. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
  469. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
  470. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
  471. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
  472. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
  473. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
  474. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
  475. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
  476. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
  477. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
  478. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
  479. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
  480. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
  481. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
  482. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
  483. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
  484. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
  485. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
  486. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
  487. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +7 -7
  488. package/dist/presentation/features/atoms/FeatureIcon/index.d.ts +1 -1
  489. package/dist/presentation/features/atoms/FeatureIcon/index.js +7 -7
  490. package/dist/presentation/features/atoms/index.js +7 -7
  491. package/dist/presentation/features/hooks/index.d.ts +3 -3
  492. package/dist/presentation/features/hooks/index.js +56 -56
  493. package/dist/presentation/features/hooks/useContractsRegistry.js +18 -18
  494. package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
  495. package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
  496. package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
  497. package/dist/presentation/features/index.d.ts +14 -14
  498. package/dist/presentation/features/index.js +1364 -1364
  499. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +15 -15
  500. package/dist/presentation/features/molecules/FeatureCard/index.js +15 -15
  501. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +7 -7
  502. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +7 -7
  503. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  504. package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
  505. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +5 -5
  506. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +5 -5
  507. package/dist/presentation/features/molecules/index.d.ts +1 -1
  508. package/dist/presentation/features/molecules/index.js +77 -77
  509. package/dist/presentation/features/organisms/FeatureDataViewsList.js +18 -18
  510. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +121 -121
  511. package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts +1 -1
  512. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +121 -121
  513. package/dist/presentation/features/organisms/FeatureEventsList.js +18 -18
  514. package/dist/presentation/features/organisms/FeatureFormsList.js +18 -18
  515. package/dist/presentation/features/organisms/FeatureOperationsList.js +15 -15
  516. package/dist/presentation/features/organisms/FeaturePresentationsList.js +18 -18
  517. package/dist/presentation/features/organisms/index.d.ts +4 -4
  518. package/dist/presentation/features/organisms/index.js +401 -401
  519. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +13 -13
  520. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +13 -13
  521. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts +1 -1
  522. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +20 -20
  523. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +20 -20
  524. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +12 -12
  525. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +12 -12
  526. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +18 -18
  527. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +18 -18
  528. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +13 -13
  529. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +13 -13
  530. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +20 -20
  531. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +20 -20
  532. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +8 -8
  533. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +8 -8
  534. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +15 -15
  535. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +15 -15
  536. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +2 -2
  537. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +2 -2
  538. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +12 -12
  539. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +12 -12
  540. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +18 -18
  541. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +18 -18
  542. package/package.json +70 -32
  543. package/src/__tests__/env-setup.ts +1 -1
  544. package/src/__tests__/mocks/prisma.ts +78 -78
  545. package/src/__tests__/setup.ts +2 -2
  546. package/src/application/context-storage/index.ts +42 -42
  547. package/src/application/index.ts +1 -1
  548. package/src/application/mcp/cliMcp.ts +221 -221
  549. package/src/application/mcp/common.ts +210 -210
  550. package/src/application/mcp/contractsMcp.ts +15 -15
  551. package/src/application/mcp/contractsMcpResources.ts +119 -119
  552. package/src/application/mcp/contractsMcpTools.ts +218 -218
  553. package/src/application/mcp/contractsMcpTypes.ts +35 -35
  554. package/src/application/mcp/docsMcp.ts +173 -173
  555. package/src/application/mcp/index.ts +2 -2
  556. package/src/application/mcp/internalMcp.ts +204 -204
  557. package/src/application/mcp/providerRankingMcp.ts +346 -344
  558. package/src/bundles/LibraryBundle.ts +136 -136
  559. package/src/components/docs/DocsIndexPage.tsx +189 -241
  560. package/src/components/docs/advanced/AdvancedMCPPage.tsx +168 -168
  561. package/src/components/docs/advanced/AdvancedOverlayEditorPage.tsx +52 -52
  562. package/src/components/docs/advanced/AdvancedRenderersPage.tsx +53 -53
  563. package/src/components/docs/advanced/AdvancedSpecExperimentsPage.tsx +48 -48
  564. package/src/components/docs/advanced/AdvancedTelemetryPage.tsx +205 -205
  565. package/src/components/docs/advanced/AdvancedWorkflowMonitoringPage.tsx +42 -42
  566. package/src/components/docs/advanced/index.ts +2 -2
  567. package/src/components/docs/architecture/ArchitectureAppConfigPage.tsx +127 -127
  568. package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +79 -79
  569. package/src/components/docs/architecture/ArchitectureIntegrationBindingPage.tsx +147 -147
  570. package/src/components/docs/architecture/ArchitectureKnowledgeBindingPage.tsx +193 -193
  571. package/src/components/docs/architecture/ArchitectureMultiTenancyPage.tsx +73 -73
  572. package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +98 -273
  573. package/src/components/docs/architecture/index.ts +3 -3
  574. package/src/components/docs/comparison/ComparisonAutomationPlatformsPage.tsx +137 -137
  575. package/src/components/docs/comparison/ComparisonEnterprisePlatformsPage.tsx +138 -138
  576. package/src/components/docs/comparison/ComparisonInternalToolBuildersPage.tsx +147 -147
  577. package/src/components/docs/comparison/ComparisonOverviewPage.tsx +106 -106
  578. package/src/components/docs/comparison/ComparisonWindmillPage.tsx +143 -143
  579. package/src/components/docs/comparison/ComparisonWorkflowEnginesPage.tsx +168 -168
  580. package/src/components/docs/comparison/index.ts +2 -2
  581. package/src/components/docs/docsManifest.ts +720 -0
  582. package/src/components/docs/ecosystem/IntegrationsPage.tsx +45 -45
  583. package/src/components/docs/ecosystem/PluginsPage.tsx +77 -77
  584. package/src/components/docs/ecosystem/RegistryPage.tsx +48 -48
  585. package/src/components/docs/ecosystem/TemplatesPage.tsx +52 -52
  586. package/src/components/docs/ecosystem/ecosystem.docblocks.ts +42 -42
  587. package/src/components/docs/ecosystem/index.ts +2 -2
  588. package/src/components/docs/examples/DocsExamplesPage.tsx +78 -66
  589. package/src/components/docs/examples/ExampleShowcasePage.tsx +122 -0
  590. package/src/components/docs/examples/exampleShowcaseData.ts +65 -0
  591. package/src/components/docs/examples/index.ts +1 -0
  592. package/src/components/docs/generated/docs-index._common.json +1757 -1757
  593. package/src/components/docs/generated/docs-index.agent-console.json +376 -376
  594. package/src/components/docs/generated/docs-index.ai-chat-assistant.json +8 -8
  595. package/src/components/docs/generated/docs-index.ai-chat.json +104 -104
  596. package/src/components/docs/generated/docs-index.ai-support-bot.json +8 -8
  597. package/src/components/docs/generated/docs-index.analytics-dashboard.json +168 -168
  598. package/src/components/docs/generated/docs-index.app-config.json +136 -136
  599. package/src/components/docs/generated/docs-index.audit-trail.json +48 -48
  600. package/src/components/docs/generated/docs-index.calendar-google.json +8 -8
  601. package/src/components/docs/generated/docs-index.content-generation.json +8 -8
  602. package/src/components/docs/generated/docs-index.crm-pipeline.json +160 -160
  603. package/src/components/docs/generated/docs-index.email-gmail.json +8 -8
  604. package/src/components/docs/generated/docs-index.feature-flags.json +216 -216
  605. package/src/components/docs/generated/docs-index.files.json +176 -176
  606. package/src/components/docs/generated/docs-index.generated.ts +19 -19
  607. package/src/components/docs/generated/docs-index.health.json +96 -96
  608. package/src/components/docs/generated/docs-index.identity-rbac.json +312 -312
  609. package/src/components/docs/generated/docs-index.in-app-docs.json +8 -8
  610. package/src/components/docs/generated/docs-index.integration-hub.json +264 -264
  611. package/src/components/docs/generated/docs-index.integration-posthog.json +8 -8
  612. package/src/components/docs/generated/docs-index.integration-stripe.json +8 -8
  613. package/src/components/docs/generated/docs-index.integration-supabase.json +8 -8
  614. package/src/components/docs/generated/docs-index.jobs.json +136 -136
  615. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +128 -128
  616. package/src/components/docs/generated/docs-index.knowledge-canon.json +8 -8
  617. package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +8 -8
  618. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +48 -48
  619. package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +8 -8
  620. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +48 -48
  621. package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +8 -8
  622. package/src/components/docs/generated/docs-index.learning-journey-registry.json +32 -32
  623. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +48 -48
  624. package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +8 -8
  625. package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +8 -8
  626. package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +8 -8
  627. package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +8 -8
  628. package/src/components/docs/generated/docs-index.learning-journey.json +216 -216
  629. package/src/components/docs/generated/docs-index.learning-patterns.json +8 -8
  630. package/src/components/docs/generated/docs-index.lifecycle-cli.json +8 -8
  631. package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +8 -8
  632. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +48 -48
  633. package/src/components/docs/generated/docs-index.manifest.json +376 -376
  634. package/src/components/docs/generated/docs-index.marketplace.json +336 -336
  635. package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +8 -8
  636. package/src/components/docs/generated/docs-index.meeting-recorder.json +48 -48
  637. package/src/components/docs/generated/docs-index.metrics.json +200 -200
  638. package/src/components/docs/generated/docs-index.minimal.json +16 -16
  639. package/src/components/docs/generated/docs-index.notifications.json +64 -64
  640. package/src/components/docs/generated/docs-index.openbanking-powens.json +8 -8
  641. package/src/components/docs/generated/docs-index.openbanking.json +64 -64
  642. package/src/components/docs/generated/docs-index.opencode-cli.json +16 -16
  643. package/src/components/docs/generated/docs-index.personalization.json +8 -8
  644. package/src/components/docs/generated/docs-index.platform-acp.json +72 -72
  645. package/src/components/docs/generated/docs-index.platform-agent.json +96 -96
  646. package/src/components/docs/generated/docs-index.platform-context.json +56 -56
  647. package/src/components/docs/generated/docs-index.platform-database.json +48 -48
  648. package/src/components/docs/generated/docs-index.platform-docs.json +88 -88
  649. package/src/components/docs/generated/docs-index.platform-integrations.json +320 -320
  650. package/src/components/docs/generated/docs-index.platform-knowledge.json +56 -56
  651. package/src/components/docs/generated/docs-index.platform-provider-ranking.json +96 -96
  652. package/src/components/docs/generated/docs-index.pocket-family-office.json +120 -120
  653. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +8 -8
  654. package/src/components/docs/generated/docs-index.product-intent.json +8 -8
  655. package/src/components/docs/generated/docs-index.project-management-sync.json +8 -8
  656. package/src/components/docs/generated/docs-index.saas-boilerplate.json +208 -208
  657. package/src/components/docs/generated/docs-index.service-business-os.json +192 -192
  658. package/src/components/docs/generated/docs-index.team-hub.json +184 -184
  659. package/src/components/docs/generated/docs-index.unknown.json +512 -512
  660. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +80 -80
  661. package/src/components/docs/generated/docs-index.video-api-showcase.json +32 -32
  662. package/src/components/docs/generated/docs-index.video-docs-terminal.json +8 -8
  663. package/src/components/docs/generated/docs-index.video-marketing-clip.json +8 -8
  664. package/src/components/docs/generated/docs-index.voice-providers.json +8 -8
  665. package/src/components/docs/generated/docs-index.wealth-snapshot.json +152 -152
  666. package/src/components/docs/generated/docs-index.workflow-system.json +432 -432
  667. package/src/components/docs/generated/docs-index.workspace-cli.json +8 -8
  668. package/src/components/docs/generated/index.ts +6 -6
  669. package/src/components/docs/generated/loader.ts +49 -49
  670. package/src/components/docs/getting-started/CLIPage.tsx +157 -157
  671. package/src/components/docs/getting-started/CompatibilityPage.tsx +69 -69
  672. package/src/components/docs/getting-started/DataViewTutorialPage.tsx +63 -63
  673. package/src/components/docs/getting-started/DeveloperToolsPage.tsx +141 -140
  674. package/src/components/docs/getting-started/HelloWorldPage.tsx +88 -88
  675. package/src/components/docs/getting-started/InstallationPage.tsx +78 -78
  676. package/src/components/docs/getting-started/StartHerePage.tsx +64 -64
  677. package/src/components/docs/getting-started/TroubleshootingPage.tsx +68 -68
  678. package/src/components/docs/getting-started/VSCodeExtensionPage.tsx +233 -233
  679. package/src/components/docs/getting-started/getting-started.docblocks.ts +30 -30
  680. package/src/components/docs/getting-started/index.ts +6 -5
  681. package/src/components/docs/guides/GuideCIDiffGatingPage.tsx +88 -88
  682. package/src/components/docs/guides/GuideContractTypesPage.tsx +266 -266
  683. package/src/components/docs/guides/GuideDocsPipelinePage.tsx +78 -78
  684. package/src/components/docs/guides/GuideGenerateDocsClientsSchemasPage.tsx +89 -89
  685. package/src/components/docs/guides/GuideImportExistingCodebasesPage.tsx +360 -360
  686. package/src/components/docs/guides/GuideNextjsOneEndpointPage.tsx +117 -117
  687. package/src/components/docs/guides/GuideSpecValidationTypingPage.tsx +82 -82
  688. package/src/components/docs/guides/GuidesIndexPage.tsx +109 -99
  689. package/src/components/docs/guides/guides.docblocks.ts +60 -60
  690. package/src/components/docs/guides/index.ts +4 -4
  691. package/src/components/docs/index.ts +26 -40
  692. package/src/components/docs/integrations/IntegrationsCircuitBreakersPage.tsx +22 -22
  693. package/src/components/docs/integrations/IntegrationsElevenLabsPage.tsx +41 -41
  694. package/src/components/docs/integrations/IntegrationsGithubPage.tsx +66 -66
  695. package/src/components/docs/integrations/IntegrationsGmailPage.tsx +44 -44
  696. package/src/components/docs/integrations/IntegrationsGoogleCalendarPage.tsx +31 -31
  697. package/src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx +80 -80
  698. package/src/components/docs/integrations/IntegrationsMistralPage.tsx +65 -65
  699. package/src/components/docs/integrations/IntegrationsOpenAIPage.tsx +54 -54
  700. package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +124 -529
  701. package/src/components/docs/integrations/IntegrationsPostmarkPage.tsx +97 -97
  702. package/src/components/docs/integrations/IntegrationsPowensPage.tsx +165 -165
  703. package/src/components/docs/integrations/IntegrationsQdrantPage.tsx +44 -44
  704. package/src/components/docs/integrations/IntegrationsResendPage.tsx +40 -40
  705. package/src/components/docs/integrations/IntegrationsS3Page.tsx +48 -48
  706. package/src/components/docs/integrations/IntegrationsSlackPage.tsx +70 -70
  707. package/src/components/docs/integrations/IntegrationsSpecModelPage.tsx +139 -139
  708. package/src/components/docs/integrations/IntegrationsStripePage.tsx +153 -153
  709. package/src/components/docs/integrations/IntegrationsTwilioPage.tsx +50 -50
  710. package/src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx +69 -69
  711. package/src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx +73 -73
  712. package/src/components/docs/integrations/index.ts +1 -1
  713. package/src/components/docs/intent/ContractFirstApiPage.tsx +61 -61
  714. package/src/components/docs/intent/DeterministicCodegenPage.tsx +81 -80
  715. package/src/components/docs/intent/GenerateClientFromSchemaPage.tsx +108 -108
  716. package/src/components/docs/intent/OpenapiAlternativePage.tsx +98 -98
  717. package/src/components/docs/intent/SchemaValidationTypescriptPage.tsx +79 -79
  718. package/src/components/docs/intent/SpecDrivenDevelopmentPage.tsx +67 -67
  719. package/src/components/docs/intent/index.ts +3 -3
  720. package/src/components/docs/intent/intent-pages.docblocks.ts +186 -186
  721. package/src/components/docs/knowledge/KnowledgeCategoriesPage.tsx +304 -304
  722. package/src/components/docs/knowledge/KnowledgeExamplesPage.tsx +84 -84
  723. package/src/components/docs/knowledge/KnowledgeOverviewPage.tsx +76 -285
  724. package/src/components/docs/knowledge/KnowledgeSourcesPage.tsx +171 -171
  725. package/src/components/docs/knowledge/KnowledgeSpacesPage.tsx +132 -132
  726. package/src/components/docs/knowledge/index.ts +1 -1
  727. package/src/components/docs/libraries/LibrariesAccessibilityPage.tsx +95 -95
  728. package/src/components/docs/libraries/LibrariesAiAgentPage.tsx +58 -58
  729. package/src/components/docs/libraries/LibrariesAnalyticsPage.tsx +39 -39
  730. package/src/components/docs/libraries/LibrariesContentGenPage.tsx +41 -41
  731. package/src/components/docs/libraries/LibrariesContractsPage.tsx +132 -132
  732. package/src/components/docs/libraries/LibrariesCostTrackingPage.tsx +47 -47
  733. package/src/components/docs/libraries/LibrariesDataBackendPage.tsx +73 -73
  734. package/src/components/docs/libraries/LibrariesDataViewsPage.tsx +76 -76
  735. package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +115 -115
  736. package/src/components/docs/libraries/LibrariesEvolutionPage.tsx +64 -64
  737. package/src/components/docs/libraries/LibrariesGraphQLPage.tsx +92 -92
  738. package/src/components/docs/libraries/LibrariesGrowthPage.tsx +37 -37
  739. package/src/components/docs/libraries/LibrariesMultiTenancyPage.tsx +47 -47
  740. package/src/components/docs/libraries/LibrariesObservabilityPage.tsx +58 -58
  741. package/src/components/docs/libraries/LibrariesOverlayEnginePage.tsx +51 -51
  742. package/src/components/docs/libraries/LibrariesOverviewPage.tsx +137 -301
  743. package/src/components/docs/libraries/LibrariesPersonalizationPage.tsx +57 -57
  744. package/src/components/docs/libraries/LibrariesProgressiveDeliveryPage.tsx +51 -51
  745. package/src/components/docs/libraries/LibrariesResiliencePage.tsx +54 -54
  746. package/src/components/docs/libraries/LibrariesRuntimePage.tsx +96 -96
  747. package/src/components/docs/libraries/LibrariesSLOPage.tsx +52 -52
  748. package/src/components/docs/libraries/LibrariesSchemaPage.tsx +131 -131
  749. package/src/components/docs/libraries/LibrariesSupportBotPage.tsx +59 -59
  750. package/src/components/docs/libraries/LibrariesTestingPage.tsx +64 -64
  751. package/src/components/docs/libraries/LibrariesUIKitPage.tsx +85 -85
  752. package/src/components/docs/libraries/LibrariesWorkflowComposerPage.tsx +38 -38
  753. package/src/components/docs/libraries/LibrariesWorkflowsPage.tsx +79 -79
  754. package/src/components/docs/libraries/index.ts +4 -4
  755. package/src/components/docs/manifesto/ManifestoPage.tsx +61 -132
  756. package/src/components/docs/ops/AutoEvolutionOpsPage.tsx +81 -81
  757. package/src/components/docs/ops/DistributedTracingOpsPage.tsx +28 -28
  758. package/src/components/docs/ops/ops-lifecycle.docblocks.ts +32 -32
  759. package/src/components/docs/ops/ops-runbooks-a.docblocks.ts +60 -60
  760. package/src/components/docs/ops/ops-runbooks-b.docblocks.ts +60 -60
  761. package/src/components/docs/ops/ops-slo-tenant.docblocks.ts +61 -61
  762. package/src/components/docs/ops/ops-top.docs.ts +10 -10
  763. package/src/components/docs/ops/ops.docs.ts +6 -6
  764. package/src/components/docs/product/product.docblocks.ts +60 -60
  765. package/src/components/docs/reference/DocsMarkdownContent.tsx +74 -74
  766. package/src/components/docs/reference/DocsReferenceContent.tsx +51 -51
  767. package/src/components/docs/reference/DocsReferenceIndexClient.tsx +106 -105
  768. package/src/components/docs/reference/DocsReferenceIndexPage.tsx +2 -2
  769. package/src/components/docs/reference/DocsReferencePage.tsx +3 -3
  770. package/src/components/docs/reference/docsMarkdownParser.ts +90 -90
  771. package/src/components/docs/safety/SafetyAuditingPage.tsx +189 -189
  772. package/src/components/docs/safety/SafetyMigrationsPage.tsx +189 -189
  773. package/src/components/docs/safety/SafetyOverviewPage.tsx +70 -157
  774. package/src/components/docs/safety/SafetyPDPPage.tsx +163 -163
  775. package/src/components/docs/safety/SafetySecurityTrustPage.tsx +89 -89
  776. package/src/components/docs/safety/SafetySigningPage.tsx +38 -38
  777. package/src/components/docs/safety/SafetyTenantIsolationPage.tsx +39 -39
  778. package/src/components/docs/safety/index.ts +3 -3
  779. package/src/components/docs/shared/StudioPrompt.tsx +17 -17
  780. package/src/components/docs/specs/SpecsCapabilitiesPage.tsx +79 -79
  781. package/src/components/docs/specs/SpecsDataViewsPage.tsx +142 -142
  782. package/src/components/docs/specs/SpecsOverlaysPage.tsx +202 -202
  783. package/src/components/docs/specs/SpecsOverviewPage.tsx +118 -193
  784. package/src/components/docs/specs/SpecsPolicyPage.tsx +233 -233
  785. package/src/components/docs/specs/SpecsWorkflowsPage.tsx +156 -156
  786. package/src/components/docs/specs/index.ts +3 -3
  787. package/src/components/docs/studio/StudioBYOKPage.tsx +11 -11
  788. package/src/components/docs/studio/StudioDeploymentsPage.tsx +11 -11
  789. package/src/components/docs/studio/StudioGettingStartedPage.tsx +11 -11
  790. package/src/components/docs/studio/StudioIntegrationsPage.tsx +11 -11
  791. package/src/components/docs/studio/StudioOverviewPage.tsx +94 -73
  792. package/src/components/docs/studio/StudioVisualBuilderPage.tsx +11 -11
  793. package/src/components/docs/studio/index.ts +4 -4
  794. package/src/components/docs/tech/contracts/tech-docs.docblocks.ts +10 -10
  795. package/src/components/integrations/molecules/IntegrationCard.tsx +71 -72
  796. package/src/components/integrations/organisms/IntegrationMarketplace.tsx +116 -116
  797. package/src/components/integrations/organisms/IntegrationSettings.tsx +201 -201
  798. package/src/components/integrations/organisms/KnowledgeSourceList.tsx +93 -94
  799. package/src/components/legal/PrivacyTemplate.tsx +611 -611
  800. package/src/components/legal/TermsTemplate.tsx +675 -675
  801. package/src/components/shared/FeatureGateNotice.tsx +26 -27
  802. package/src/components/shell/WorkspaceHeader.tsx +80 -80
  803. package/src/components/shell/WorkspaceProjectShellLayout.tsx +59 -58
  804. package/src/components/shell/WorkspaceShellRenderer.tsx +69 -68
  805. package/src/components/shell/WorkspaceSidebar.tsx +58 -58
  806. package/src/components/shell/index.ts +1 -1
  807. package/src/components/templates/engine/index.ts +29 -28
  808. package/src/components/templates/index.ts +1 -1
  809. package/src/components/templates/messaging/ConversationList.tsx +68 -69
  810. package/src/components/templates/messaging/MessageComposer.tsx +59 -59
  811. package/src/components/templates/messaging/MessageThread.tsx +73 -74
  812. package/src/components/templates/messaging/MessagingWorkspace.tsx +18 -19
  813. package/src/components/templates/messaging/index.ts +1 -1
  814. package/src/components/templates/messaging/types.ts +17 -17
  815. package/src/components/templates/recipes/LanguageSwitcher.tsx +20 -20
  816. package/src/components/templates/recipes/RecipeCard.tsx +56 -56
  817. package/src/components/templates/recipes/RecipeDetail.tsx +43 -43
  818. package/src/components/templates/recipes/RecipeList.tsx +62 -63
  819. package/src/components/templates/recipes/index.ts +2 -2
  820. package/src/components/templates/recipes/types.ts +24 -24
  821. package/src/components/templates/todos/FilterBar.tsx +84 -84
  822. package/src/components/templates/todos/TaskForm.tsx +118 -119
  823. package/src/components/templates/todos/TaskItem.tsx +78 -78
  824. package/src/components/templates/todos/TaskList.tsx +106 -107
  825. package/src/components/templates/todos/index.ts +2 -2
  826. package/src/components/templates/todos/types.ts +11 -11
  827. package/src/config/contractspec-blueprint.ts +55 -55
  828. package/src/config/contractspec-branding.ts +37 -37
  829. package/src/config/contractspec-routes.ts +22 -22
  830. package/src/config/index.ts +14 -15
  831. package/src/features/contracts-registry.ts +118 -118
  832. package/src/features/docs/docs.contracts.ts +6 -6
  833. package/src/features/docs/index.ts +6 -6
  834. package/src/features/docs.feature.ts +27 -27
  835. package/src/features/index.ts +59 -63
  836. package/src/features/mcp.feature.ts +24 -24
  837. package/src/features/presentations.feature.ts +27 -27
  838. package/src/features/registry.ts +14 -14
  839. package/src/index.ts +2 -2
  840. package/src/infrastructure/elysia/logger.ts +21 -21
  841. package/src/libs/email/client.test.ts +81 -81
  842. package/src/libs/email/client.ts +111 -111
  843. package/src/libs/email/contact.ts +35 -35
  844. package/src/libs/email/newsletter.ts +46 -46
  845. package/src/libs/email/types.ts +29 -29
  846. package/src/libs/email/utils.ts +5 -5
  847. package/src/libs/email/waitlist-application.ts +69 -69
  848. package/src/libs/email/waitlist.ts +46 -46
  849. package/src/libs/email.ts +7 -7
  850. package/src/libs/posthog/client.ts +44 -44
  851. package/src/libs/posthog/native.ts +23 -22
  852. package/src/libs/posthog/server.ts +7 -7
  853. package/src/libs/pricing-examples.ts +12 -12
  854. package/src/presentation/features/atoms/FeatureIcon/FeatureIcon.tsx +90 -90
  855. package/src/presentation/features/atoms/FeatureIcon/index.ts +3 -3
  856. package/src/presentation/features/hooks/index.ts +9 -9
  857. package/src/presentation/features/hooks/useContractsRegistry.ts +23 -23
  858. package/src/presentation/features/hooks/useFeatureFilters.ts +117 -117
  859. package/src/presentation/features/hooks/useFeatureRegistry.ts +40 -40
  860. package/src/presentation/features/hooks/useRelatedDocs.ts +28 -28
  861. package/src/presentation/features/index.ts +50 -52
  862. package/src/presentation/features/molecules/FeatureCard/FeatureCard.tsx +80 -80
  863. package/src/presentation/features/molecules/FeatureCard/types.ts +6 -6
  864. package/src/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.tsx +54 -54
  865. package/src/presentation/features/molecules/FeatureCategoryHeader/index.ts +2 -2
  866. package/src/presentation/features/molecules/FeatureFilters/FeatureFilters.tsx +67 -67
  867. package/src/presentation/features/molecules/FeatureFilters/types.ts +20 -20
  868. package/src/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.tsx +120 -121
  869. package/src/presentation/features/molecules/FeatureHoverPreview/index.ts +2 -2
  870. package/src/presentation/features/molecules/index.ts +8 -8
  871. package/src/presentation/features/organisms/FeatureDataViewsList.tsx +21 -21
  872. package/src/presentation/features/organisms/FeatureDetail/FeatureDetail.tsx +86 -86
  873. package/src/presentation/features/organisms/FeatureDetail/types.ts +4 -4
  874. package/src/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.tsx +210 -210
  875. package/src/presentation/features/organisms/FeatureDiscovery/index.ts +3 -3
  876. package/src/presentation/features/organisms/FeatureDiscovery/types.ts +10 -10
  877. package/src/presentation/features/organisms/FeatureEventsList.tsx +19 -19
  878. package/src/presentation/features/organisms/FeatureFormsList.tsx +19 -19
  879. package/src/presentation/features/organisms/FeatureOperationsList.tsx +21 -21
  880. package/src/presentation/features/organisms/FeaturePresentationsList.tsx +21 -21
  881. package/src/presentation/features/organisms/index.ts +6 -6
  882. package/src/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.tsx +219 -219
  883. package/src/presentation/features/templates/FeatureDataViewDetailTemplate/types.ts +7 -7
  884. package/src/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.tsx +26 -26
  885. package/src/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.tsx +195 -195
  886. package/src/presentation/features/templates/FeatureEventDetailTemplate/types.ts +7 -7
  887. package/src/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.tsx +26 -26
  888. package/src/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.tsx +216 -216
  889. package/src/presentation/features/templates/FeatureFormDetailTemplate/types.ts +7 -7
  890. package/src/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.tsx +26 -26
  891. package/src/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.tsx +228 -228
  892. package/src/presentation/features/templates/FeatureOperationDetailTemplate/types.ts +7 -7
  893. package/src/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.tsx +26 -26
  894. package/src/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.tsx +24 -24
  895. package/src/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.tsx +201 -201
  896. package/src/presentation/features/templates/FeaturePresentationDetailTemplate/types.ts +8 -8
  897. package/src/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.tsx +26 -26
  898. package/src/presentation/features/templates/types.ts +2 -2
  899. package/tsconfig.json +12 -12
  900. package/tsdown.config.js +5 -5
@@ -1,9 +1,7 @@
1
1
  // @bun
2
- // src/components/docs/integrations/IntegrationsOverviewPage.tsx
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 IntegrationsOverviewPage() {
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 font-bold",
15
- children: "Integrations"
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: "ContractSpec supports the following integration categories:"
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 font-bold",
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__ */ jsx2("p", {
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__ */ jsx2("pre", {
807
- className: "bg-muted rounded-lg border p-4 text-sm",
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 Link2 from "@contractspec/lib.ui-link";
828
- import { ChevronRight as ChevronRight2 } from "lucide-react";
829
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
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__ */ jsxs3("div", {
56
+ return /* @__PURE__ */ jsxs2("div", {
832
57
  className: "space-y-8",
833
58
  children: [
834
- /* @__PURE__ */ jsxs3("div", {
59
+ /* @__PURE__ */ jsxs2("div", {
835
60
  className: "space-y-4",
836
61
  children: [
837
- /* @__PURE__ */ jsx3("h1", {
838
- className: "text-4xl font-bold",
62
+ /* @__PURE__ */ jsx2("h1", {
63
+ className: "font-bold text-4xl",
839
64
  children: "ElevenLabs"
840
65
  }),
841
- /* @__PURE__ */ jsx3("p", {
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__ */ jsxs3("div", {
72
+ /* @__PURE__ */ jsxs2("div", {
848
73
  className: "space-y-4",
849
74
  children: [
850
- /* @__PURE__ */ jsx3("h2", {
851
- className: "text-2xl font-bold",
75
+ /* @__PURE__ */ jsx2("h2", {
76
+ className: "font-bold text-2xl",
852
77
  children: "Setup"
853
78
  }),
854
- /* @__PURE__ */ jsx3("div", {
855
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
856
- children: /* @__PURE__ */ jsx3("pre", {
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__ */ jsxs3("div", {
88
+ /* @__PURE__ */ jsxs2("div", {
864
89
  className: "space-y-4",
865
90
  children: [
866
- /* @__PURE__ */ jsx3("h2", {
867
- className: "text-2xl font-bold",
91
+ /* @__PURE__ */ jsx2("h2", {
92
+ className: "font-bold text-2xl",
868
93
  children: "Text-to-Speech"
869
94
  }),
870
- /* @__PURE__ */ jsx3("div", {
871
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
872
- children: /* @__PURE__ */ jsx3("pre", {
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__ */ jsxs3("div", {
122
+ /* @__PURE__ */ jsxs2("div", {
898
123
  className: "space-y-4",
899
124
  children: [
900
- /* @__PURE__ */ jsx3("h2", {
901
- className: "text-2xl font-bold",
125
+ /* @__PURE__ */ jsx2("h2", {
126
+ className: "font-bold text-2xl",
902
127
  children: "Use cases"
903
128
  }),
904
- /* @__PURE__ */ jsxs3("ul", {
905
- className: "text-muted-foreground list-inside list-disc space-y-2",
129
+ /* @__PURE__ */ jsxs2("ul", {
130
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
906
131
  children: [
907
- /* @__PURE__ */ jsx3("li", {
132
+ /* @__PURE__ */ jsx2("li", {
908
133
  children: "Generate voiceovers for videos"
909
134
  }),
910
- /* @__PURE__ */ jsx3("li", {
135
+ /* @__PURE__ */ jsx2("li", {
911
136
  children: "Create audio versions of articles"
912
137
  }),
913
- /* @__PURE__ */ jsx3("li", {
138
+ /* @__PURE__ */ jsx2("li", {
914
139
  children: "Build voice assistants"
915
140
  }),
916
- /* @__PURE__ */ jsx3("li", {
141
+ /* @__PURE__ */ jsx2("li", {
917
142
  children: "Produce audiobooks"
918
143
  })
919
144
  ]
920
145
  })
921
146
  ]
922
147
  }),
923
- /* @__PURE__ */ jsxs3("div", {
148
+ /* @__PURE__ */ jsxs2("div", {
924
149
  className: "flex items-center gap-4 pt-4",
925
150
  children: [
926
- /* @__PURE__ */ jsx3(Link2, {
151
+ /* @__PURE__ */ jsx2(Link, {
927
152
  href: "/docs/integrations/mistral",
928
153
  className: "btn-ghost",
929
154
  children: "Previous: Mistral"
930
155
  }),
931
- /* @__PURE__ */ jsxs3(Link2, {
156
+ /* @__PURE__ */ jsxs2(Link, {
932
157
  href: "/docs/integrations/qdrant",
933
158
  className: "btn-primary",
934
159
  children: [
935
160
  "Next: Qdrant ",
936
- /* @__PURE__ */ jsx3(ChevronRight2, {
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 Link3 from "@contractspec/lib.ui-link";
949
- import { ChevronRight as ChevronRight3 } from "lucide-react";
950
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
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__ */ jsxs4("div", {
177
+ return /* @__PURE__ */ jsxs3("div", {
953
178
  className: "space-y-8",
954
179
  children: [
955
- /* @__PURE__ */ jsxs4("div", {
180
+ /* @__PURE__ */ jsxs3("div", {
956
181
  className: "space-y-4",
957
182
  children: [
958
- /* @__PURE__ */ jsx4("h1", {
959
- className: "text-4xl font-bold",
183
+ /* @__PURE__ */ jsx3("h1", {
184
+ className: "font-bold text-4xl",
960
185
  children: "GitHub Messaging"
961
186
  }),
962
- /* @__PURE__ */ jsx4("p", {
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__ */ jsxs4("div", {
193
+ /* @__PURE__ */ jsxs3("div", {
969
194
  className: "space-y-4",
970
195
  children: [
971
- /* @__PURE__ */ jsx4("h2", {
972
- className: "text-2xl font-bold",
196
+ /* @__PURE__ */ jsx3("h2", {
197
+ className: "font-bold text-2xl",
973
198
  children: "Required secrets and config"
974
199
  }),
975
- /* @__PURE__ */ jsx4("div", {
976
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
977
- children: /* @__PURE__ */ jsx4("pre", {
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__ */ jsxs4("div", {
219
+ /* @__PURE__ */ jsxs3("div", {
995
220
  className: "space-y-4",
996
221
  children: [
997
- /* @__PURE__ */ jsx4("h2", {
998
- className: "text-2xl font-bold",
222
+ /* @__PURE__ */ jsx3("h2", {
223
+ className: "font-bold text-2xl",
999
224
  children: "Webhook ingress"
1000
225
  }),
1001
- /* @__PURE__ */ jsxs4("ul", {
1002
- className: "text-muted-foreground list-inside list-disc space-y-2",
226
+ /* @__PURE__ */ jsxs3("ul", {
227
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
1003
228
  children: [
1004
- /* @__PURE__ */ jsxs4("li", {
229
+ /* @__PURE__ */ jsxs3("li", {
1005
230
  children: [
1006
231
  "Inbound GitHub events are accepted on",
1007
232
  " ",
1008
- /* @__PURE__ */ jsx4("code", {
1009
- className: "bg-background/50 rounded px-2 py-1",
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__ */ jsxs4("li", {
240
+ /* @__PURE__ */ jsxs3("li", {
1016
241
  children: [
1017
242
  "Signatures are checked using",
1018
243
  " ",
1019
- /* @__PURE__ */ jsx4("code", {
1020
- className: "bg-background/50 rounded px-2 py-1",
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__ */ jsx4("li", {
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__ */ jsxs4("div", {
259
+ /* @__PURE__ */ jsxs3("div", {
1035
260
  className: "space-y-4",
1036
261
  children: [
1037
- /* @__PURE__ */ jsx4("h2", {
1038
- className: "text-2xl font-bold",
262
+ /* @__PURE__ */ jsx3("h2", {
263
+ className: "font-bold text-2xl",
1039
264
  children: "Workspace mapping"
1040
265
  }),
1041
- /* @__PURE__ */ jsx4("div", {
1042
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1043
- children: /* @__PURE__ */ jsx4("pre", {
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__ */ jsxs4("div", {
277
+ /* @__PURE__ */ jsxs3("div", {
1053
278
  className: "space-y-4",
1054
279
  children: [
1055
- /* @__PURE__ */ jsx4("h2", {
1056
- className: "text-2xl font-bold",
280
+ /* @__PURE__ */ jsx3("h2", {
281
+ className: "font-bold text-2xl",
1057
282
  children: "Best practices"
1058
283
  }),
1059
- /* @__PURE__ */ jsxs4("ul", {
1060
- className: "text-muted-foreground list-inside list-disc space-y-2",
284
+ /* @__PURE__ */ jsxs3("ul", {
285
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
1061
286
  children: [
1062
- /* @__PURE__ */ jsx4("li", {
287
+ /* @__PURE__ */ jsx3("li", {
1063
288
  children: "Use a least-privileged token scoped for comment operations."
1064
289
  }),
1065
- /* @__PURE__ */ jsx4("li", {
290
+ /* @__PURE__ */ jsx3("li", {
1066
291
  children: "Route repositories explicitly with workspace maps in multi-tenant environments."
1067
292
  }),
1068
- /* @__PURE__ */ jsx4("li", {
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__ */ jsxs4("div", {
300
+ /* @__PURE__ */ jsxs3("div", {
1076
301
  className: "flex items-center gap-4 pt-4",
1077
302
  children: [
1078
- /* @__PURE__ */ jsx4(Link3, {
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__ */ jsxs4(Link3, {
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__ */ jsx4(ChevronRight3, {
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 Link4 from "@contractspec/lib.ui-link";
1101
- import { ChevronRight as ChevronRight4 } from "lucide-react";
1102
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
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__ */ jsxs5("div", {
329
+ return /* @__PURE__ */ jsxs4("div", {
1105
330
  className: "space-y-8",
1106
331
  children: [
1107
- /* @__PURE__ */ jsxs5("div", {
332
+ /* @__PURE__ */ jsxs4("div", {
1108
333
  className: "space-y-4",
1109
334
  children: [
1110
- /* @__PURE__ */ jsx5("h1", {
1111
- className: "text-4xl font-bold",
335
+ /* @__PURE__ */ jsx4("h1", {
336
+ className: "font-bold text-4xl",
1112
337
  children: "Gmail API"
1113
338
  }),
1114
- /* @__PURE__ */ jsx5("p", {
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__ */ jsxs5("div", {
345
+ /* @__PURE__ */ jsxs4("div", {
1121
346
  className: "space-y-4",
1122
347
  children: [
1123
- /* @__PURE__ */ jsx5("h2", {
1124
- className: "text-2xl font-bold",
348
+ /* @__PURE__ */ jsx4("h2", {
349
+ className: "font-bold text-2xl",
1125
350
  children: "Setup"
1126
351
  }),
1127
- /* @__PURE__ */ jsx5("p", {
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__ */ jsx5("div", {
1132
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1133
- children: /* @__PURE__ */ jsx5("pre", {
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__ */ jsxs5("div", {
367
+ /* @__PURE__ */ jsxs4("div", {
1143
368
  className: "space-y-4",
1144
369
  children: [
1145
- /* @__PURE__ */ jsx5("h2", {
1146
- className: "text-2xl font-bold",
370
+ /* @__PURE__ */ jsx4("h2", {
371
+ className: "font-bold text-2xl",
1147
372
  children: "Reading emails"
1148
373
  }),
1149
- /* @__PURE__ */ jsx5("div", {
1150
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1151
- children: /* @__PURE__ */ jsx5("pre", {
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__ */ jsxs5("div", {
403
+ /* @__PURE__ */ jsxs4("div", {
1179
404
  className: "space-y-4",
1180
405
  children: [
1181
- /* @__PURE__ */ jsx5("h2", {
1182
- className: "text-2xl font-bold",
406
+ /* @__PURE__ */ jsx4("h2", {
407
+ className: "font-bold text-2xl",
1183
408
  children: "Use cases"
1184
409
  }),
1185
- /* @__PURE__ */ jsxs5("ul", {
1186
- className: "text-muted-foreground list-inside list-disc space-y-2",
410
+ /* @__PURE__ */ jsxs4("ul", {
411
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
1187
412
  children: [
1188
- /* @__PURE__ */ jsx5("li", {
413
+ /* @__PURE__ */ jsx4("li", {
1189
414
  children: "Parse support emails and create tickets"
1190
415
  }),
1191
- /* @__PURE__ */ jsx5("li", {
416
+ /* @__PURE__ */ jsx4("li", {
1192
417
  children: "Extract attachments and process them"
1193
418
  }),
1194
- /* @__PURE__ */ jsx5("li", {
419
+ /* @__PURE__ */ jsx4("li", {
1195
420
  children: "Build email-to-task workflows"
1196
421
  }),
1197
- /* @__PURE__ */ jsx5("li", {
422
+ /* @__PURE__ */ jsx4("li", {
1198
423
  children: "Monitor specific email threads"
1199
424
  })
1200
425
  ]
1201
426
  })
1202
427
  ]
1203
428
  }),
1204
- /* @__PURE__ */ jsxs5("div", {
429
+ /* @__PURE__ */ jsxs4("div", {
1205
430
  className: "flex items-center gap-4 pt-4",
1206
431
  children: [
1207
- /* @__PURE__ */ jsx5(Link4, {
432
+ /* @__PURE__ */ jsx4(Link3, {
1208
433
  href: "/docs/integrations/resend",
1209
434
  className: "btn-ghost",
1210
435
  children: "Previous: Resend"
1211
436
  }),
1212
- /* @__PURE__ */ jsxs5(Link4, {
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__ */ jsx5(ChevronRight4, {
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 Link5 from "@contractspec/lib.ui-link";
1230
- import { ChevronRight as ChevronRight5 } from "lucide-react";
1231
- import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
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__ */ jsxs6("div", {
458
+ return /* @__PURE__ */ jsxs5("div", {
1234
459
  className: "space-y-8",
1235
460
  children: [
1236
- /* @__PURE__ */ jsxs6("div", {
461
+ /* @__PURE__ */ jsxs5("div", {
1237
462
  className: "space-y-4",
1238
463
  children: [
1239
- /* @__PURE__ */ jsx6("h1", {
1240
- className: "text-4xl font-bold",
464
+ /* @__PURE__ */ jsx5("h1", {
465
+ className: "font-bold text-4xl",
1241
466
  children: "Google Calendar"
1242
467
  }),
1243
- /* @__PURE__ */ jsx6("p", {
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__ */ jsxs6("div", {
474
+ /* @__PURE__ */ jsxs5("div", {
1250
475
  className: "space-y-4",
1251
476
  children: [
1252
- /* @__PURE__ */ jsx6("h2", {
1253
- className: "text-2xl font-bold",
477
+ /* @__PURE__ */ jsx5("h2", {
478
+ className: "font-bold text-2xl",
1254
479
  children: "Setup"
1255
480
  }),
1256
- /* @__PURE__ */ jsx6("div", {
1257
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1258
- children: /* @__PURE__ */ jsx6("pre", {
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__ */ jsxs6("div", {
492
+ /* @__PURE__ */ jsxs5("div", {
1268
493
  className: "space-y-4",
1269
494
  children: [
1270
- /* @__PURE__ */ jsx6("h2", {
1271
- className: "text-2xl font-bold",
495
+ /* @__PURE__ */ jsx5("h2", {
496
+ className: "font-bold text-2xl",
1272
497
  children: "Creating events"
1273
498
  }),
1274
- /* @__PURE__ */ jsx6("div", {
1275
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1276
- children: /* @__PURE__ */ jsx6("pre", {
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__ */ jsxs6("div", {
531
+ /* @__PURE__ */ jsxs5("div", {
1307
532
  className: "flex items-center gap-4 pt-4",
1308
533
  children: [
1309
- /* @__PURE__ */ jsx6(Link5, {
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__ */ jsxs6(Link5, {
539
+ /* @__PURE__ */ jsxs5(Link4, {
1315
540
  href: "/docs/integrations/openai",
1316
541
  className: "btn-primary",
1317
542
  children: [
1318
543
  "Next: OpenAI ",
1319
- /* @__PURE__ */ jsx6(ChevronRight5, {
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 Link6 from "@contractspec/lib.ui-link";
1332
- import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
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__ */ jsxs7("div", {
559
+ return /* @__PURE__ */ jsxs6("div", {
1335
560
  className: "space-y-8",
1336
561
  children: [
1337
- /* @__PURE__ */ jsxs7("div", {
562
+ /* @__PURE__ */ jsxs6("div", {
1338
563
  className: "space-y-4",
1339
564
  children: [
1340
- /* @__PURE__ */ jsx7("h1", {
1341
- className: "text-4xl font-bold",
565
+ /* @__PURE__ */ jsx6("h1", {
566
+ className: "font-bold text-4xl",
1342
567
  children: "Health Routing Strategy"
1343
568
  }),
1344
- /* @__PURE__ */ jsx7("p", {
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__ */ jsxs7("div", {
575
+ /* @__PURE__ */ jsxs6("div", {
1351
576
  className: "space-y-4",
1352
577
  children: [
1353
- /* @__PURE__ */ jsx7("h2", {
1354
- className: "text-2xl font-bold",
578
+ /* @__PURE__ */ jsx6("h2", {
579
+ className: "font-bold text-2xl",
1355
580
  children: "Connection config fields"
1356
581
  }),
1357
- /* @__PURE__ */ jsx7("div", {
1358
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1359
- children: /* @__PURE__ */ jsx7("pre", {
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__ */ jsxs7("div", {
604
+ /* @__PURE__ */ jsxs6("div", {
1380
605
  className: "space-y-4",
1381
606
  children: [
1382
- /* @__PURE__ */ jsx7("h2", {
1383
- className: "text-2xl font-bold",
607
+ /* @__PURE__ */ jsx6("h2", {
608
+ className: "font-bold text-2xl",
1384
609
  children: "Secret payload fields"
1385
610
  }),
1386
- /* @__PURE__ */ jsx7("div", {
1387
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1388
- children: /* @__PURE__ */ jsx7("pre", {
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__ */ jsxs7("div", {
628
+ /* @__PURE__ */ jsxs6("div", {
1404
629
  className: "space-y-4",
1405
630
  children: [
1406
- /* @__PURE__ */ jsx7("h2", {
1407
- className: "text-2xl font-bold",
631
+ /* @__PURE__ */ jsx6("h2", {
632
+ className: "font-bold text-2xl",
1408
633
  children: "Routing behavior"
1409
634
  }),
1410
- /* @__PURE__ */ jsxs7("ul", {
1411
- className: "text-muted-foreground list-inside list-disc space-y-2",
635
+ /* @__PURE__ */ jsxs6("ul", {
636
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
1412
637
  children: [
1413
- /* @__PURE__ */ jsx7("li", {
638
+ /* @__PURE__ */ jsx6("li", {
1414
639
  children: "Unsupported strategies are skipped per provider capability matrix."
1415
640
  }),
1416
- /* @__PURE__ */ jsx7("li", {
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__ */ jsxs7("li", {
644
+ /* @__PURE__ */ jsxs6("li", {
1420
645
  children: [
1421
646
  "Unofficial routes are disabled unless",
1422
- /* @__PURE__ */ jsx7("code", {
1423
- className: "bg-background/50 ml-1 rounded px-2 py-1",
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__ */ jsxs7("li", {
654
+ /* @__PURE__ */ jsxs6("li", {
1430
655
  children: [
1431
656
  "When",
1432
- /* @__PURE__ */ jsx7("code", {
1433
- className: "bg-background/50 ml-1 rounded px-2 py-1",
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__ */ jsxs7("li", {
664
+ /* @__PURE__ */ jsxs6("li", {
1440
665
  children: [
1441
666
  "OAuth refresh uses",
1442
- /* @__PURE__ */ jsx7("code", {
1443
- className: "bg-background/50 ml-1 rounded px-2 py-1",
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__ */ jsxs7("div", {
678
+ /* @__PURE__ */ jsxs6("div", {
1454
679
  className: "space-y-4",
1455
680
  children: [
1456
- /* @__PURE__ */ jsx7("h2", {
1457
- className: "text-2xl font-bold",
681
+ /* @__PURE__ */ jsx6("h2", {
682
+ className: "font-bold text-2xl",
1458
683
  children: "Provider guidance"
1459
684
  }),
1460
- /* @__PURE__ */ jsxs7("ul", {
1461
- className: "text-muted-foreground list-inside list-disc space-y-2",
685
+ /* @__PURE__ */ jsxs6("ul", {
686
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
1462
687
  children: [
1463
- /* @__PURE__ */ jsx7("li", {
688
+ /* @__PURE__ */ jsx6("li", {
1464
689
  children: "Use official APIs when available (Whoop, Oura, Strava, Fitbit)."
1465
690
  }),
1466
- /* @__PURE__ */ jsx7("li", {
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__ */ jsx7("li", {
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__ */ jsxs7("div", {
701
+ /* @__PURE__ */ jsxs6("div", {
1477
702
  className: "flex items-center gap-4 pt-4",
1478
703
  children: [
1479
- /* @__PURE__ */ jsx7(Link6, {
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__ */ jsx7(Link6, {
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 Link7 from "@contractspec/lib.ui-link";
1497
- import { ChevronRight as ChevronRight6 } from "lucide-react";
1498
- import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
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__ */ jsxs8("div", {
725
+ return /* @__PURE__ */ jsxs7("div", {
1501
726
  className: "space-y-8",
1502
727
  children: [
1503
- /* @__PURE__ */ jsxs8("div", {
728
+ /* @__PURE__ */ jsxs7("div", {
1504
729
  className: "space-y-4",
1505
730
  children: [
1506
- /* @__PURE__ */ jsx8("h1", {
1507
- className: "text-4xl font-bold",
731
+ /* @__PURE__ */ jsx7("h1", {
732
+ className: "font-bold text-4xl",
1508
733
  children: "Mistral"
1509
734
  }),
1510
- /* @__PURE__ */ jsx8("p", {
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__ */ jsxs8("div", {
741
+ /* @__PURE__ */ jsxs7("div", {
1517
742
  className: "space-y-4",
1518
743
  children: [
1519
- /* @__PURE__ */ jsx8("h2", {
1520
- className: "text-2xl font-bold",
744
+ /* @__PURE__ */ jsx7("h2", {
745
+ className: "font-bold text-2xl",
1521
746
  children: "Setup"
1522
747
  }),
1523
- /* @__PURE__ */ jsx8("div", {
1524
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1525
- children: /* @__PURE__ */ jsx8("pre", {
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__ */ jsxs8("div", {
757
+ /* @__PURE__ */ jsxs7("div", {
1533
758
  className: "space-y-4",
1534
759
  children: [
1535
- /* @__PURE__ */ jsx8("h2", {
1536
- className: "text-2xl font-bold",
760
+ /* @__PURE__ */ jsx7("h2", {
761
+ className: "font-bold text-2xl",
1537
762
  children: "Chat and reasoning"
1538
763
  }),
1539
- /* @__PURE__ */ jsx8("div", {
1540
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1541
- children: /* @__PURE__ */ jsx8("pre", {
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__ */ jsxs8("div", {
791
+ /* @__PURE__ */ jsxs7("div", {
1567
792
  className: "space-y-4",
1568
793
  children: [
1569
- /* @__PURE__ */ jsx8("h2", {
1570
- className: "text-2xl font-bold",
794
+ /* @__PURE__ */ jsx7("h2", {
795
+ className: "font-bold text-2xl",
1571
796
  children: "Embeddings"
1572
797
  }),
1573
- /* @__PURE__ */ jsx8("div", {
1574
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1575
- children: /* @__PURE__ */ jsx8("pre", {
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__ */ jsxs8("div", {
822
+ /* @__PURE__ */ jsxs7("div", {
1598
823
  className: "space-y-4",
1599
824
  children: [
1600
- /* @__PURE__ */ jsx8("h2", {
1601
- className: "text-2xl font-bold",
825
+ /* @__PURE__ */ jsx7("h2", {
826
+ className: "font-bold text-2xl",
1602
827
  children: "Speech-to-Text (Voxtral)"
1603
828
  }),
1604
- /* @__PURE__ */ jsx8("div", {
1605
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1606
- children: /* @__PURE__ */ jsx8("pre", {
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__ */ jsxs8("div", {
857
+ /* @__PURE__ */ jsxs7("div", {
1633
858
  className: "space-y-4",
1634
859
  children: [
1635
- /* @__PURE__ */ jsx8("h2", {
1636
- className: "text-2xl font-bold",
860
+ /* @__PURE__ */ jsx7("h2", {
861
+ className: "font-bold text-2xl",
1637
862
  children: "Conversational voice sessions"
1638
863
  }),
1639
- /* @__PURE__ */ jsx8("p", {
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__ */ jsxs8("div", {
870
+ /* @__PURE__ */ jsxs7("div", {
1646
871
  className: "space-y-4",
1647
872
  children: [
1648
- /* @__PURE__ */ jsx8("h2", {
1649
- className: "text-2xl font-bold",
873
+ /* @__PURE__ */ jsx7("h2", {
874
+ className: "font-bold text-2xl",
1650
875
  children: "Best practices"
1651
876
  }),
1652
- /* @__PURE__ */ jsxs8("ul", {
1653
- className: "text-muted-foreground list-inside list-disc space-y-2",
877
+ /* @__PURE__ */ jsxs7("ul", {
878
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
1654
879
  children: [
1655
- /* @__PURE__ */ jsx8("li", {
880
+ /* @__PURE__ */ jsx7("li", {
1656
881
  children: "Choose model families by workload: coding, reasoning, or speech"
1657
882
  }),
1658
- /* @__PURE__ */ jsx8("li", {
883
+ /* @__PURE__ */ jsx7("li", {
1659
884
  children: "Persist session IDs for conversational continuity across turns"
1660
885
  }),
1661
- /* @__PURE__ */ jsx8("li", {
886
+ /* @__PURE__ */ jsx7("li", {
1662
887
  children: "Capture token and latency telemetry for provider-level tuning"
1663
888
  }),
1664
- /* @__PURE__ */ jsx8("li", {
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__ */ jsxs8("div", {
896
+ /* @__PURE__ */ jsxs7("div", {
1672
897
  className: "flex items-center gap-4 pt-4",
1673
898
  children: [
1674
- /* @__PURE__ */ jsx8(Link7, {
899
+ /* @__PURE__ */ jsx7(Link6, {
1675
900
  href: "/docs/integrations/openai",
1676
901
  className: "btn-ghost",
1677
902
  children: "Previous: OpenAI"
1678
903
  }),
1679
- /* @__PURE__ */ jsxs8(Link7, {
904
+ /* @__PURE__ */ jsxs7(Link6, {
1680
905
  href: "/docs/integrations/elevenlabs",
1681
906
  className: "btn-primary",
1682
907
  children: [
1683
908
  "Next: ElevenLabs ",
1684
- /* @__PURE__ */ jsx8(ChevronRight6, {
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 Link8 from "@contractspec/lib.ui-link";
1697
- import { ChevronRight as ChevronRight7 } from "lucide-react";
1698
- import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsxs9("div", {
925
+ return /* @__PURE__ */ jsxs8("div", {
1701
926
  className: "space-y-8",
1702
927
  children: [
1703
- /* @__PURE__ */ jsxs9("div", {
928
+ /* @__PURE__ */ jsxs8("div", {
1704
929
  className: "space-y-4",
1705
930
  children: [
1706
- /* @__PURE__ */ jsx9("h1", {
1707
- className: "text-4xl font-bold",
931
+ /* @__PURE__ */ jsx8("h1", {
932
+ className: "font-bold text-4xl",
1708
933
  children: "OpenAI"
1709
934
  }),
1710
- /* @__PURE__ */ jsx9("p", {
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__ */ jsxs9("div", {
941
+ /* @__PURE__ */ jsxs8("div", {
1717
942
  className: "space-y-4",
1718
943
  children: [
1719
- /* @__PURE__ */ jsx9("h2", {
1720
- className: "text-2xl font-bold",
944
+ /* @__PURE__ */ jsx8("h2", {
945
+ className: "font-bold text-2xl",
1721
946
  children: "Setup"
1722
947
  }),
1723
- /* @__PURE__ */ jsx9("div", {
1724
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1725
- children: /* @__PURE__ */ jsx9("pre", {
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__ */ jsxs9("div", {
958
+ /* @__PURE__ */ jsxs8("div", {
1734
959
  className: "space-y-4",
1735
960
  children: [
1736
- /* @__PURE__ */ jsx9("h2", {
1737
- className: "text-2xl font-bold",
961
+ /* @__PURE__ */ jsx8("h2", {
962
+ className: "font-bold text-2xl",
1738
963
  children: "Chat completions"
1739
964
  }),
1740
- /* @__PURE__ */ jsx9("div", {
1741
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1742
- children: /* @__PURE__ */ jsx9("pre", {
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__ */ jsxs9("div", {
998
+ /* @__PURE__ */ jsxs8("div", {
1774
999
  className: "space-y-4",
1775
1000
  children: [
1776
- /* @__PURE__ */ jsx9("h2", {
1777
- className: "text-2xl font-bold",
1001
+ /* @__PURE__ */ jsx8("h2", {
1002
+ className: "font-bold text-2xl",
1778
1003
  children: "Embeddings"
1779
1004
  }),
1780
- /* @__PURE__ */ jsx9("div", {
1781
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1782
- children: /* @__PURE__ */ jsx9("pre", {
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__ */ jsxs9("div", {
1029
+ /* @__PURE__ */ jsxs8("div", {
1805
1030
  className: "space-y-4",
1806
1031
  children: [
1807
- /* @__PURE__ */ jsx9("h2", {
1808
- className: "text-2xl font-bold",
1032
+ /* @__PURE__ */ jsx8("h2", {
1033
+ className: "font-bold text-2xl",
1809
1034
  children: "Whisper (Speech-to-Text)"
1810
1035
  }),
1811
- /* @__PURE__ */ jsx9("div", {
1812
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
1813
- children: /* @__PURE__ */ jsx9("pre", {
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__ */ jsxs9("div", {
1060
+ /* @__PURE__ */ jsxs8("div", {
1836
1061
  className: "space-y-4",
1837
1062
  children: [
1838
- /* @__PURE__ */ jsx9("h2", {
1839
- className: "text-2xl font-bold",
1063
+ /* @__PURE__ */ jsx8("h2", {
1064
+ className: "font-bold text-2xl",
1840
1065
  children: "Best practices"
1841
1066
  }),
1842
- /* @__PURE__ */ jsxs9("ul", {
1843
- className: "text-muted-foreground list-inside list-disc space-y-2",
1067
+ /* @__PURE__ */ jsxs8("ul", {
1068
+ className: "list-inside list-disc space-y-2 text-muted-foreground",
1844
1069
  children: [
1845
- /* @__PURE__ */ jsx9("li", {
1070
+ /* @__PURE__ */ jsx8("li", {
1846
1071
  children: "Use streaming for real-time chat responses"
1847
1072
  }),
1848
- /* @__PURE__ */ jsx9("li", {
1073
+ /* @__PURE__ */ jsx8("li", {
1849
1074
  children: "Cache embeddings to reduce API costs"
1850
1075
  }),
1851
- /* @__PURE__ */ jsx9("li", {
1076
+ /* @__PURE__ */ jsx8("li", {
1852
1077
  children: "Implement rate limiting to avoid quota issues"
1853
1078
  }),
1854
- /* @__PURE__ */ jsx9("li", {
1079
+ /* @__PURE__ */ jsx8("li", {
1855
1080
  children: "Store conversation history for context"
1856
1081
  }),
1857
- /* @__PURE__ */ jsx9("li", {
1082
+ /* @__PURE__ */ jsx8("li", {
1858
1083
  children: "Monitor token usage and costs"
1859
1084
  })
1860
1085
  ]
1861
1086
  })
1862
1087
  ]
1863
1088
  }),
1864
- /* @__PURE__ */ jsxs9("div", {
1089
+ /* @__PURE__ */ jsxs8("div", {
1865
1090
  className: "flex items-center gap-4 pt-4",
1866
1091
  children: [
1867
- /* @__PURE__ */ jsx9(Link8, {
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__ */ jsxs9(Link8, {
1097
+ /* @__PURE__ */ jsxs8(Link7, {
1873
1098
  href: "/docs/integrations/mistral",
1874
1099
  className: "btn-primary",
1875
1100
  children: [
1876
1101
  "Next: Mistral ",
1877
- /* @__PURE__ */ jsx9(ChevronRight7, {
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 ChevronRight8 } from "lucide-react";
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 font-bold",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
1333
+ className: "font-bold text-2xl",
1951
1334
  children: "Sending emails"
1952
1335
  }),
1953
1336
  /* @__PURE__ */ jsx10("div", {
1954
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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: "text-muted-foreground list-inside list-disc space-y-2",
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 font-bold",
1478
+ className: "font-bold text-2xl",
2096
1479
  children: "Best practices"
2097
1480
  }),
2098
1481
  /* @__PURE__ */ jsxs10("ul", {
2099
- className: "text-muted-foreground list-inside list-disc space-y-2",
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(ChevronRight8, {
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 ChevronRight9 } from "lucide-react";
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 font-bold",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
1608
+ className: "font-bold text-2xl",
2226
1609
  children: "Capabilities"
2227
1610
  }),
2228
1611
  /* @__PURE__ */ jsx11("div", {
2229
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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 font-semibold",
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 rounded px-2 py-1",
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 font-semibold",
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 rounded px-2 py-1",
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 font-semibold",
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 rounded px-2 py-1",
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 font-semibold",
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 rounded px-2 py-1",
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 font-bold",
1765
+ className: "font-bold text-2xl",
2383
1766
  children: "Telemetry & guardrails"
2384
1767
  }),
2385
1768
  /* @__PURE__ */ jsxs11("ul", {
2386
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 font-bold",
1822
+ className: "font-bold text-2xl",
2440
1823
  children: "Best practices"
2441
1824
  }),
2442
1825
  /* @__PURE__ */ jsxs11("ul", {
2443
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 rounded px-2 py-1",
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(ChevronRight9, {
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 ChevronRight10 } from "lucide-react";
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 font-bold",
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 font-bold",
1905
+ className: "font-bold text-2xl",
2523
1906
  children: "Setup"
2524
1907
  }),
2525
1908
  /* @__PURE__ */ jsx12("div", {
2526
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
1923
+ className: "font-bold text-2xl",
2541
1924
  children: "Storing vectors"
2542
1925
  }),
2543
1926
  /* @__PURE__ */ jsx12("div", {
2544
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
1957
+ className: "font-bold text-2xl",
2575
1958
  children: "Semantic search"
2576
1959
  }),
2577
1960
  /* @__PURE__ */ jsx12("div", {
2578
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
1996
+ className: "font-bold text-2xl",
2614
1997
  children: "RAG workflow example"
2615
1998
  }),
2616
1999
  /* @__PURE__ */ jsx12("div", {
2617
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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(ChevronRight10, {
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 ChevronRight11 } from "lucide-react";
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 font-bold",
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 font-bold",
2081
+ className: "font-bold text-2xl",
2699
2082
  children: "Setup"
2700
2083
  }),
2701
2084
  /* @__PURE__ */ jsx13("div", {
2702
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2098
+ className: "font-bold text-2xl",
2716
2099
  children: "Sending emails"
2717
2100
  }),
2718
2101
  /* @__PURE__ */ jsx13("div", {
2719
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2134
+ className: "font-bold text-2xl",
2752
2135
  children: "Best practices"
2753
2136
  }),
2754
2137
  /* @__PURE__ */ jsxs13("ul", {
2755
- className: "text-muted-foreground list-inside list-disc space-y-2",
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(ChevronRight11, {
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 ChevronRight12 } from "lucide-react";
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 font-bold",
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 font-bold",
2202
+ className: "font-bold text-2xl",
2820
2203
  children: "Setup"
2821
2204
  }),
2822
2205
  /* @__PURE__ */ jsx14("div", {
2823
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2222
+ className: "font-bold text-2xl",
2840
2223
  children: "Uploading files"
2841
2224
  }),
2842
2225
  /* @__PURE__ */ jsx14("div", {
2843
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2259
+ className: "font-bold text-2xl",
2877
2260
  children: "Generating presigned URLs"
2878
2261
  }),
2879
2262
  /* @__PURE__ */ jsx14("div", {
2880
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2289
+ className: "font-bold text-2xl",
2907
2290
  children: "Best practices"
2908
2291
  }),
2909
2292
  /* @__PURE__ */ jsxs14("ul", {
2910
- className: "text-muted-foreground list-inside list-disc space-y-2",
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(ChevronRight12, {
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 ChevronRight13 } from "lucide-react";
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 font-bold",
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 font-bold",
2363
+ className: "font-bold text-2xl",
2981
2364
  children: "Required secrets and config"
2982
2365
  }),
2983
2366
  /* @__PURE__ */ jsx15("div", {
2984
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2388
+ className: "font-bold text-2xl",
3006
2389
  children: "Webhook ingress"
3007
2390
  }),
3008
2391
  /* @__PURE__ */ jsxs15("ul", {
3009
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 font-bold",
2427
+ className: "font-bold text-2xl",
3045
2428
  children: "Workspace routing and dispatch"
3046
2429
  }),
3047
2430
  /* @__PURE__ */ jsx15("div", {
3048
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2450
+ className: "font-bold text-2xl",
3068
2451
  children: "Best practices"
3069
2452
  }),
3070
2453
  /* @__PURE__ */ jsxs15("ul", {
3071
- className: "text-muted-foreground list-inside list-disc space-y-2",
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(ChevronRight13, {
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 ChevronRight14 } from "lucide-react";
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 font-bold",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2599
+ className: "font-bold text-2xl",
3217
2600
  children: "Example: Stripe IntegrationSpec"
3218
2601
  }),
3219
2602
  /* @__PURE__ */ jsx16("div", {
3220
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
2728
+ className: "font-bold text-2xl",
3346
2729
  children: "Example: Stripe IntegrationConnection"
3347
2730
  }),
3348
2731
  /* @__PURE__ */ jsx16("div", {
3349
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "text-muted-foreground list-inside list-disc space-y-2",
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 font-bold",
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: "text-muted-foreground list-inside list-decimal space-y-2",
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 font-bold",
2936
+ className: "font-bold text-2xl",
3554
2937
  children: "Best practices"
3555
2938
  }),
3556
2939
  /* @__PURE__ */ jsxs16("ul", {
3557
- className: "text-muted-foreground list-inside list-disc space-y-2",
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(ChevronRight14, {
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 ChevronRight15 } from "lucide-react";
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 font-bold",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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 font-semibold",
3057
+ className: "font-semibold text-lg",
3675
3058
  children: "Payment Intents"
3676
3059
  }),
3677
3060
  /* @__PURE__ */ jsx17("div", {
3678
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-semibold",
3097
+ className: "font-semibold text-lg",
3715
3098
  children: "Customers"
3716
3099
  }),
3717
3100
  /* @__PURE__ */ jsx17("div", {
3718
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-semibold",
3131
+ className: "font-semibold text-lg",
3749
3132
  children: "Subscriptions"
3750
3133
  }),
3751
3134
  /* @__PURE__ */ jsx17("div", {
3752
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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: "text-muted-foreground list-inside list-disc space-y-2",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 font-bold",
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: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
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: "border-border/50 overflow-x-auto rounded-lg border",
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 divide-y",
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 font-bold",
3359
+ className: "font-bold text-2xl",
3977
3360
  children: "Best practices"
3978
3361
  }),
3979
3362
  /* @__PURE__ */ jsxs17("ul", {
3980
- className: "text-muted-foreground list-inside list-disc space-y-2",
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(ChevronRight15, {
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 font-bold",
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 font-bold",
3435
+ className: "font-bold text-2xl",
4053
3436
  children: "Setup"
4054
3437
  }),
4055
3438
  /* @__PURE__ */ jsx18("div", {
4056
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
3453
+ className: "font-bold text-2xl",
4071
3454
  children: "Sending SMS"
4072
3455
  }),
4073
3456
  /* @__PURE__ */ jsx18("div", {
4074
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
3485
+ className: "font-bold text-2xl",
4103
3486
  children: "Use cases"
4104
3487
  }),
4105
3488
  /* @__PURE__ */ jsxs18("ul", {
4106
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 font-bold",
3511
+ className: "font-bold text-2xl",
4129
3512
  children: "Best practices"
4130
3513
  }),
4131
3514
  /* @__PURE__ */ jsxs18("ul", {
4132
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 ChevronRight16 } from "lucide-react";
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 font-bold",
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 font-bold",
3580
+ className: "font-bold text-2xl",
4198
3581
  children: "Required secrets and config"
4199
3582
  }),
4200
3583
  /* @__PURE__ */ jsx19("div", {
4201
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
3606
+ className: "font-bold text-2xl",
4224
3607
  children: "Webhook endpoints"
4225
3608
  }),
4226
3609
  /* @__PURE__ */ jsxs19("ul", {
4227
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 font-bold",
3651
+ className: "font-bold text-2xl",
4269
3652
  children: "Workspace mapping"
4270
3653
  }),
4271
3654
  /* @__PURE__ */ jsx19("div", {
4272
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
3666
+ className: "font-bold text-2xl",
4284
3667
  children: "Best practices"
4285
3668
  }),
4286
3669
  /* @__PURE__ */ jsxs19("ul", {
4287
- className: "text-muted-foreground list-inside list-disc space-y-2",
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(ChevronRight16, {
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 ChevronRight17 } from "lucide-react";
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 font-bold",
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 font-bold",
3734
+ className: "font-bold text-2xl",
4352
3735
  children: "Required secrets and config"
4353
3736
  }),
4354
3737
  /* @__PURE__ */ jsx20("div", {
4355
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
3758
+ className: "font-bold text-2xl",
4376
3759
  children: "Webhook ingress"
4377
3760
  }),
4378
3761
  /* @__PURE__ */ jsxs20("ul", {
4379
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 rounded px-2 py-1",
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 font-bold",
3806
+ className: "font-bold text-2xl",
4424
3807
  children: "Workspace mapping"
4425
3808
  }),
4426
3809
  /* @__PURE__ */ jsx20("div", {
4427
- className: "bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm",
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 font-bold",
3821
+ className: "font-bold text-2xl",
4439
3822
  children: "Best practices"
4440
3823
  }),
4441
3824
  /* @__PURE__ */ jsxs20("ul", {
4442
- className: "text-muted-foreground list-inside list-disc space-y-2",
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 ml-1 rounded px-2 py-1",
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(ChevronRight17, {
3860
+ /* @__PURE__ */ jsx20(ChevronRight16, {
4478
3861
  size: 16
4479
3862
  })
4480
3863
  ]