@contractspec/bundle.library 3.7.6 → 3.7.7

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