@contractspec/bundle.library 1.11.1 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1385) hide show
  1. package/.turbo/turbo-build.log +571 -1050
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +47 -0
  4. package/dist/__tests__/env-setup.d.ts +2 -0
  5. package/dist/__tests__/env-setup.d.ts.map +1 -0
  6. package/dist/__tests__/mocks/prisma.d.ts +16 -0
  7. package/dist/__tests__/mocks/prisma.d.ts.map +1 -0
  8. package/dist/__tests__/setup.d.ts +2 -0
  9. package/dist/__tests__/setup.d.ts.map +1 -0
  10. package/dist/application/index.d.ts +2 -4
  11. package/dist/application/index.d.ts.map +1 -0
  12. package/dist/application/index.js +696 -5
  13. package/dist/application/mcp/cliMcp.d.ts +79 -85
  14. package/dist/application/mcp/cliMcp.d.ts.map +1 -1
  15. package/dist/application/mcp/cliMcp.js +329 -218
  16. package/dist/application/mcp/common.d.ts +90 -103
  17. package/dist/application/mcp/common.d.ts.map +1 -1
  18. package/dist/application/mcp/common.js +73 -61
  19. package/dist/application/mcp/docsMcp.d.ts +79 -85
  20. package/dist/application/mcp/docsMcp.d.ts.map +1 -1
  21. package/dist/application/mcp/docsMcp.js +259 -136
  22. package/dist/application/mcp/index.d.ts +4 -4
  23. package/dist/application/mcp/index.d.ts.map +1 -0
  24. package/dist/application/mcp/index.js +696 -4
  25. package/dist/application/mcp/internalMcp.d.ts +79 -85
  26. package/dist/application/mcp/internalMcp.d.ts.map +1 -1
  27. package/dist/application/mcp/internalMcp.js +285 -172
  28. package/dist/components/docs/DocsIndexPage.d.ts +1 -6
  29. package/dist/components/docs/DocsIndexPage.d.ts.map +1 -1
  30. package/dist/components/docs/DocsIndexPage.js +259 -211
  31. package/dist/components/docs/advanced/AdvancedMCPPage.d.ts +1 -6
  32. package/dist/components/docs/advanced/AdvancedMCPPage.d.ts.map +1 -1
  33. package/dist/components/docs/advanced/AdvancedMCPPage.js +269 -212
  34. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.d.ts +1 -6
  35. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.d.ts.map +1 -1
  36. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +105 -74
  37. package/dist/components/docs/advanced/AdvancedRenderersPage.d.ts +1 -6
  38. package/dist/components/docs/advanced/AdvancedRenderersPage.d.ts.map +1 -1
  39. package/dist/components/docs/advanced/AdvancedRenderersPage.js +116 -86
  40. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.d.ts +1 -6
  41. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.d.ts.map +1 -1
  42. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +88 -71
  43. package/dist/components/docs/advanced/AdvancedTelemetryPage.d.ts +1 -6
  44. package/dist/components/docs/advanced/AdvancedTelemetryPage.d.ts.map +1 -1
  45. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +371 -203
  46. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.d.ts +1 -6
  47. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.d.ts.map +1 -1
  48. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +97 -72
  49. package/dist/components/docs/advanced/index.d.ts +7 -7
  50. package/dist/components/docs/advanced/index.d.ts.map +1 -0
  51. package/dist/components/docs/advanced/index.js +1221 -8
  52. package/dist/components/docs/architecture/ArchitectureAppConfigPage.d.ts +1 -6
  53. package/dist/components/docs/architecture/ArchitectureAppConfigPage.d.ts.map +1 -1
  54. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +235 -171
  55. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.d.ts +1 -6
  56. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.d.ts.map +1 -1
  57. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +251 -180
  58. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.d.ts +1 -6
  59. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.d.ts.map +1 -1
  60. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +366 -282
  61. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.d.ts +1 -6
  62. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.d.ts.map +1 -1
  63. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +162 -113
  64. package/dist/components/docs/architecture/ArchitectureOverviewPage.d.ts +1 -6
  65. package/dist/components/docs/architecture/ArchitectureOverviewPage.d.ts.map +1 -1
  66. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +446 -321
  67. package/dist/components/docs/architecture/index.d.ts +6 -6
  68. package/dist/components/docs/architecture/index.d.ts.map +1 -0
  69. package/dist/components/docs/architecture/index.js +1913 -6
  70. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.d.ts +1 -6
  71. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.d.ts.map +1 -1
  72. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +244 -198
  73. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.d.ts +1 -6
  74. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.d.ts.map +1 -1
  75. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +228 -168
  76. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.d.ts +1 -6
  77. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.d.ts.map +1 -1
  78. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +244 -198
  79. package/dist/components/docs/comparison/ComparisonOverviewPage.d.ts +1 -6
  80. package/dist/components/docs/comparison/ComparisonOverviewPage.d.ts.map +1 -1
  81. package/dist/components/docs/comparison/ComparisonOverviewPage.js +201 -166
  82. package/dist/components/docs/comparison/ComparisonWindmillPage.d.ts +1 -6
  83. package/dist/components/docs/comparison/ComparisonWindmillPage.d.ts.map +1 -1
  84. package/dist/components/docs/comparison/ComparisonWindmillPage.js +253 -175
  85. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.d.ts +1 -6
  86. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.d.ts.map +1 -1
  87. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +338 -274
  88. package/dist/components/docs/comparison/index.d.ts +7 -7
  89. package/dist/components/docs/comparison/index.d.ts.map +1 -0
  90. package/dist/components/docs/comparison/index.js +1511 -8
  91. package/dist/components/docs/ecosystem/IntegrationsPage.d.ts +1 -6
  92. package/dist/components/docs/ecosystem/IntegrationsPage.d.ts.map +1 -1
  93. package/dist/components/docs/ecosystem/IntegrationsPage.js +96 -76
  94. package/dist/components/docs/ecosystem/PluginsPage.d.ts +1 -6
  95. package/dist/components/docs/ecosystem/PluginsPage.d.ts.map +1 -1
  96. package/dist/components/docs/ecosystem/PluginsPage.js +139 -114
  97. package/dist/components/docs/ecosystem/RegistryPage.d.ts +1 -6
  98. package/dist/components/docs/ecosystem/RegistryPage.d.ts.map +1 -1
  99. package/dist/components/docs/ecosystem/RegistryPage.js +81 -71
  100. package/dist/components/docs/ecosystem/TemplatesPage.d.ts +1 -6
  101. package/dist/components/docs/ecosystem/TemplatesPage.d.ts.map +1 -1
  102. package/dist/components/docs/ecosystem/TemplatesPage.js +136 -84
  103. package/dist/components/docs/ecosystem/ecosystem.docblocks.d.ts +2 -1
  104. package/dist/components/docs/ecosystem/ecosystem.docblocks.d.ts.map +1 -0
  105. package/dist/components/docs/ecosystem/ecosystem.docblocks.js +45 -51
  106. package/dist/components/docs/ecosystem/index.d.ts +6 -5
  107. package/dist/components/docs/ecosystem/index.d.ts.map +1 -0
  108. package/dist/components/docs/ecosystem/index.js +614 -6
  109. package/dist/components/docs/examples/DocsExamplesPage.d.ts +1 -6
  110. package/dist/components/docs/examples/DocsExamplesPage.d.ts.map +1 -1
  111. package/dist/components/docs/examples/DocsExamplesPage.js +79 -65
  112. package/dist/components/docs/examples/index.d.ts +2 -2
  113. package/dist/components/docs/examples/index.d.ts.map +1 -0
  114. package/dist/components/docs/examples/index.js +85 -3
  115. package/dist/components/docs/generated/docs-index.generated.d.ts +24 -27
  116. package/dist/components/docs/generated/docs-index.generated.d.ts.map +1 -1
  117. package/dist/components/docs/generated/docs-index.generated.js +6 -6
  118. package/dist/components/docs/generated/index.d.ts +3 -3
  119. package/dist/components/docs/generated/index.d.ts.map +1 -0
  120. package/dist/components/docs/generated/index.js +74 -2
  121. package/dist/components/docs/generated/loader.d.ts +6 -10
  122. package/dist/components/docs/generated/loader.d.ts.map +1 -1
  123. package/dist/components/docs/generated/loader.js +60 -48
  124. package/dist/components/docs/getting-started/CLIPage.d.ts +1 -6
  125. package/dist/components/docs/getting-started/CLIPage.d.ts.map +1 -1
  126. package/dist/components/docs/getting-started/CLIPage.js +265 -231
  127. package/dist/components/docs/getting-started/CompatibilityPage.d.ts +1 -6
  128. package/dist/components/docs/getting-started/CompatibilityPage.d.ts.map +1 -1
  129. package/dist/components/docs/getting-started/CompatibilityPage.js +171 -115
  130. package/dist/components/docs/getting-started/DataViewTutorialPage.d.ts +1 -6
  131. package/dist/components/docs/getting-started/DataViewTutorialPage.d.ts.map +1 -1
  132. package/dist/components/docs/getting-started/DataViewTutorialPage.js +128 -105
  133. package/dist/components/docs/getting-started/DeveloperToolsPage.d.ts +1 -6
  134. package/dist/components/docs/getting-started/DeveloperToolsPage.d.ts.map +1 -1
  135. package/dist/components/docs/getting-started/DeveloperToolsPage.js +191 -151
  136. package/dist/components/docs/getting-started/HelloWorldPage.d.ts +1 -6
  137. package/dist/components/docs/getting-started/HelloWorldPage.d.ts.map +1 -1
  138. package/dist/components/docs/getting-started/HelloWorldPage.js +176 -138
  139. package/dist/components/docs/getting-started/InstallationPage.d.ts +1 -6
  140. package/dist/components/docs/getting-started/InstallationPage.d.ts.map +1 -1
  141. package/dist/components/docs/getting-started/InstallationPage.js +149 -115
  142. package/dist/components/docs/getting-started/StartHerePage.d.ts +1 -6
  143. package/dist/components/docs/getting-started/StartHerePage.d.ts.map +1 -1
  144. package/dist/components/docs/getting-started/StartHerePage.js +125 -98
  145. package/dist/components/docs/getting-started/TroubleshootingPage.d.ts +1 -6
  146. package/dist/components/docs/getting-started/TroubleshootingPage.d.ts.map +1 -1
  147. package/dist/components/docs/getting-started/TroubleshootingPage.js +164 -111
  148. package/dist/components/docs/getting-started/VSCodeExtensionPage.d.ts +1 -6
  149. package/dist/components/docs/getting-started/VSCodeExtensionPage.d.ts.map +1 -1
  150. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +429 -353
  151. package/dist/components/docs/getting-started/getting-started.docblocks.d.ts +2 -6
  152. package/dist/components/docs/getting-started/getting-started.docblocks.d.ts.map +1 -1
  153. package/dist/components/docs/getting-started/getting-started.docblocks.js +36 -37
  154. package/dist/components/docs/getting-started/index.d.ts +11 -11
  155. package/dist/components/docs/getting-started/index.d.ts.map +1 -0
  156. package/dist/components/docs/getting-started/index.js +2184 -12
  157. package/dist/components/docs/guides/GuideCIDiffGatingPage.d.ts +1 -6
  158. package/dist/components/docs/guides/GuideCIDiffGatingPage.d.ts.map +1 -1
  159. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +192 -143
  160. package/dist/components/docs/guides/GuideContractTypesPage.d.ts +1 -6
  161. package/dist/components/docs/guides/GuideContractTypesPage.d.ts.map +1 -1
  162. package/dist/components/docs/guides/GuideContractTypesPage.js +532 -440
  163. package/dist/components/docs/guides/GuideDocsPipelinePage.d.ts +1 -6
  164. package/dist/components/docs/guides/GuideDocsPipelinePage.d.ts.map +1 -1
  165. package/dist/components/docs/guides/GuideDocsPipelinePage.js +202 -142
  166. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.d.ts +1 -6
  167. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.d.ts.map +1 -1
  168. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +205 -152
  169. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.d.ts +1 -6
  170. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.d.ts.map +1 -1
  171. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +743 -543
  172. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.d.ts +1 -6
  173. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.d.ts.map +1 -1
  174. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +260 -199
  175. package/dist/components/docs/guides/GuideSpecValidationTypingPage.d.ts +1 -6
  176. package/dist/components/docs/guides/GuideSpecValidationTypingPage.d.ts.map +1 -1
  177. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +190 -139
  178. package/dist/components/docs/guides/GuidesIndexPage.d.ts +1 -6
  179. package/dist/components/docs/guides/GuidesIndexPage.d.ts.map +1 -1
  180. package/dist/components/docs/guides/GuidesIndexPage.js +141 -115
  181. package/dist/components/docs/guides/guides.docblocks.d.ts +2 -1
  182. package/dist/components/docs/guides/guides.docblocks.d.ts.map +1 -0
  183. package/dist/components/docs/guides/guides.docblocks.js +65 -87
  184. package/dist/components/docs/guides/index.d.ts +10 -9
  185. package/dist/components/docs/guides/index.d.ts.map +1 -0
  186. package/dist/components/docs/guides/index.js +2903 -11
  187. package/dist/components/docs/index.d.ts +20 -135
  188. package/dist/components/docs/index.d.ts.map +1 -0
  189. package/dist/components/docs/index.js +28182 -136
  190. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.d.ts +1 -6
  191. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.d.ts.map +1 -1
  192. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +40 -33
  193. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.d.ts +1 -6
  194. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.d.ts.map +1 -1
  195. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +103 -72
  196. package/dist/components/docs/integrations/IntegrationsGmailPage.d.ts +1 -6
  197. package/dist/components/docs/integrations/IntegrationsGmailPage.d.ts.map +1 -1
  198. package/dist/components/docs/integrations/IntegrationsGmailPage.js +107 -79
  199. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.d.ts +1 -6
  200. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.d.ts.map +1 -1
  201. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +77 -57
  202. package/dist/components/docs/integrations/IntegrationsOpenAIPage.d.ts +1 -6
  203. package/dist/components/docs/integrations/IntegrationsOpenAIPage.d.ts.map +1 -1
  204. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +138 -95
  205. package/dist/components/docs/integrations/IntegrationsOverviewPage.d.ts +1 -6
  206. package/dist/components/docs/integrations/IntegrationsOverviewPage.d.ts.map +1 -1
  207. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +598 -481
  208. package/dist/components/docs/integrations/IntegrationsPostmarkPage.d.ts +1 -6
  209. package/dist/components/docs/integrations/IntegrationsPostmarkPage.d.ts.map +1 -1
  210. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +217 -146
  211. package/dist/components/docs/integrations/IntegrationsPowensPage.d.ts +1 -6
  212. package/dist/components/docs/integrations/IntegrationsPowensPage.d.ts.map +1 -1
  213. package/dist/components/docs/integrations/IntegrationsPowensPage.js +298 -243
  214. package/dist/components/docs/integrations/IntegrationsQdrantPage.d.ts +1 -6
  215. package/dist/components/docs/integrations/IntegrationsQdrantPage.d.ts.map +1 -1
  216. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +112 -82
  217. package/dist/components/docs/integrations/IntegrationsResendPage.d.ts +1 -6
  218. package/dist/components/docs/integrations/IntegrationsResendPage.d.ts.map +1 -1
  219. package/dist/components/docs/integrations/IntegrationsResendPage.js +100 -71
  220. package/dist/components/docs/integrations/IntegrationsS3Page.d.ts +1 -6
  221. package/dist/components/docs/integrations/IntegrationsS3Page.d.ts.map +1 -1
  222. package/dist/components/docs/integrations/IntegrationsS3Page.js +122 -84
  223. package/dist/components/docs/integrations/IntegrationsSpecModelPage.d.ts +1 -6
  224. package/dist/components/docs/integrations/IntegrationsSpecModelPage.d.ts.map +1 -1
  225. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +248 -167
  226. package/dist/components/docs/integrations/IntegrationsStripePage.d.ts +1 -6
  227. package/dist/components/docs/integrations/IntegrationsStripePage.d.ts.map +1 -1
  228. package/dist/components/docs/integrations/IntegrationsStripePage.js +332 -255
  229. package/dist/components/docs/integrations/IntegrationsTwilioPage.d.ts +1 -6
  230. package/dist/components/docs/integrations/IntegrationsTwilioPage.d.ts.map +1 -1
  231. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +126 -87
  232. package/dist/components/docs/integrations/index.d.ts +15 -15
  233. package/dist/components/docs/integrations/index.d.ts.map +1 -0
  234. package/dist/components/docs/integrations/index.js +3312 -16
  235. package/dist/components/docs/intent/ContractFirstApiPage.d.ts +3 -8
  236. package/dist/components/docs/intent/ContractFirstApiPage.d.ts.map +1 -1
  237. package/dist/components/docs/intent/ContractFirstApiPage.js +120 -96
  238. package/dist/components/docs/intent/DeterministicCodegenPage.d.ts +3 -8
  239. package/dist/components/docs/intent/DeterministicCodegenPage.d.ts.map +1 -1
  240. package/dist/components/docs/intent/DeterministicCodegenPage.js +138 -117
  241. package/dist/components/docs/intent/GenerateClientFromSchemaPage.d.ts +3 -8
  242. package/dist/components/docs/intent/GenerateClientFromSchemaPage.d.ts.map +1 -1
  243. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +198 -168
  244. package/dist/components/docs/intent/OpenapiAlternativePage.d.ts +3 -8
  245. package/dist/components/docs/intent/OpenapiAlternativePage.d.ts.map +1 -1
  246. package/dist/components/docs/intent/OpenapiAlternativePage.js +196 -146
  247. package/dist/components/docs/intent/SchemaValidationTypescriptPage.d.ts +3 -8
  248. package/dist/components/docs/intent/SchemaValidationTypescriptPage.d.ts.map +1 -1
  249. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +138 -117
  250. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.d.ts +3 -8
  251. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.d.ts.map +1 -1
  252. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +120 -96
  253. package/dist/components/docs/intent/index.d.ts +8 -7
  254. package/dist/components/docs/intent/index.d.ts.map +1 -0
  255. package/dist/components/docs/intent/index.js +1595 -8
  256. package/dist/components/docs/intent/intent-pages.docblocks.d.ts +7 -11
  257. package/dist/components/docs/intent/intent-pages.docblocks.d.ts.map +1 -1
  258. package/dist/components/docs/intent/intent-pages.docblocks.js +196 -173
  259. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.d.ts +1 -6
  260. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.d.ts.map +1 -1
  261. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +748 -447
  262. package/dist/components/docs/knowledge/KnowledgeExamplesPage.d.ts +1 -6
  263. package/dist/components/docs/knowledge/KnowledgeExamplesPage.d.ts.map +1 -1
  264. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +189 -125
  265. package/dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts +1 -6
  266. package/dist/components/docs/knowledge/KnowledgeOverviewPage.d.ts.map +1 -1
  267. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +405 -294
  268. package/dist/components/docs/knowledge/KnowledgeSourcesPage.d.ts +1 -6
  269. package/dist/components/docs/knowledge/KnowledgeSourcesPage.d.ts.map +1 -1
  270. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +389 -288
  271. package/dist/components/docs/knowledge/KnowledgeSpacesPage.d.ts +1 -6
  272. package/dist/components/docs/knowledge/KnowledgeSpacesPage.d.ts.map +1 -1
  273. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +300 -227
  274. package/dist/components/docs/knowledge/index.d.ts +6 -6
  275. package/dist/components/docs/knowledge/index.d.ts.map +1 -0
  276. package/dist/components/docs/knowledge/index.js +2444 -6
  277. package/dist/components/docs/libraries/LibrariesAccessibilityPage.d.ts +1 -6
  278. package/dist/components/docs/libraries/LibrariesAccessibilityPage.d.ts.map +1 -1
  279. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +193 -132
  280. package/dist/components/docs/libraries/LibrariesAiAgentPage.d.ts +1 -6
  281. package/dist/components/docs/libraries/LibrariesAiAgentPage.d.ts.map +1 -1
  282. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +141 -89
  283. package/dist/components/docs/libraries/LibrariesAnalyticsPage.d.ts +1 -6
  284. package/dist/components/docs/libraries/LibrariesAnalyticsPage.d.ts.map +1 -1
  285. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +75 -59
  286. package/dist/components/docs/libraries/LibrariesContentGenPage.d.ts +1 -6
  287. package/dist/components/docs/libraries/LibrariesContentGenPage.d.ts.map +1 -1
  288. package/dist/components/docs/libraries/LibrariesContentGenPage.js +96 -67
  289. package/dist/components/docs/libraries/LibrariesContractsPage.d.ts +1 -6
  290. package/dist/components/docs/libraries/LibrariesContractsPage.d.ts.map +1 -1
  291. package/dist/components/docs/libraries/LibrariesContractsPage.js +277 -140
  292. package/dist/components/docs/libraries/LibrariesCostTrackingPage.d.ts +1 -6
  293. package/dist/components/docs/libraries/LibrariesCostTrackingPage.d.ts.map +1 -1
  294. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +107 -76
  295. package/dist/components/docs/libraries/LibrariesDataBackendPage.d.ts +1 -6
  296. package/dist/components/docs/libraries/LibrariesDataBackendPage.d.ts.map +1 -1
  297. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +162 -106
  298. package/dist/components/docs/libraries/LibrariesDataViewsPage.d.ts +1 -6
  299. package/dist/components/docs/libraries/LibrariesDataViewsPage.d.ts.map +1 -1
  300. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +181 -112
  301. package/dist/components/docs/libraries/LibrariesDesignSystemPage.d.ts +1 -6
  302. package/dist/components/docs/libraries/LibrariesDesignSystemPage.d.ts.map +1 -1
  303. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +273 -158
  304. package/dist/components/docs/libraries/LibrariesEvolutionPage.d.ts +1 -6
  305. package/dist/components/docs/libraries/LibrariesEvolutionPage.d.ts.map +1 -1
  306. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +121 -91
  307. package/dist/components/docs/libraries/LibrariesGraphQLPage.d.ts +1 -6
  308. package/dist/components/docs/libraries/LibrariesGraphQLPage.d.ts.map +1 -1
  309. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +169 -118
  310. package/dist/components/docs/libraries/LibrariesGrowthPage.d.ts +1 -6
  311. package/dist/components/docs/libraries/LibrariesGrowthPage.d.ts.map +1 -1
  312. package/dist/components/docs/libraries/LibrariesGrowthPage.js +83 -62
  313. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.d.ts +1 -6
  314. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.d.ts.map +1 -1
  315. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +103 -84
  316. package/dist/components/docs/libraries/LibrariesObservabilityPage.d.ts +1 -6
  317. package/dist/components/docs/libraries/LibrariesObservabilityPage.d.ts.map +1 -1
  318. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +123 -100
  319. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.d.ts +1 -6
  320. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.d.ts.map +1 -1
  321. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +104 -86
  322. package/dist/components/docs/libraries/LibrariesOverviewPage.d.ts +1 -6
  323. package/dist/components/docs/libraries/LibrariesOverviewPage.d.ts.map +1 -1
  324. package/dist/components/docs/libraries/LibrariesOverviewPage.js +481 -356
  325. package/dist/components/docs/libraries/LibrariesPersonalizationPage.d.ts +1 -6
  326. package/dist/components/docs/libraries/LibrariesPersonalizationPage.d.ts.map +1 -1
  327. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +108 -93
  328. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.d.ts +1 -6
  329. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.d.ts.map +1 -1
  330. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +127 -96
  331. package/dist/components/docs/libraries/LibrariesResiliencePage.d.ts +1 -6
  332. package/dist/components/docs/libraries/LibrariesResiliencePage.d.ts.map +1 -1
  333. package/dist/components/docs/libraries/LibrariesResiliencePage.js +114 -97
  334. package/dist/components/docs/libraries/LibrariesRuntimePage.d.ts +1 -6
  335. package/dist/components/docs/libraries/LibrariesRuntimePage.d.ts.map +1 -1
  336. package/dist/components/docs/libraries/LibrariesRuntimePage.js +196 -116
  337. package/dist/components/docs/libraries/LibrariesSLOPage.d.ts +1 -6
  338. package/dist/components/docs/libraries/LibrariesSLOPage.d.ts.map +1 -1
  339. package/dist/components/docs/libraries/LibrariesSLOPage.js +111 -83
  340. package/dist/components/docs/libraries/LibrariesSchemaPage.d.ts +1 -6
  341. package/dist/components/docs/libraries/LibrariesSchemaPage.d.ts.map +1 -1
  342. package/dist/components/docs/libraries/LibrariesSchemaPage.js +268 -151
  343. package/dist/components/docs/libraries/LibrariesSupportBotPage.d.ts +1 -6
  344. package/dist/components/docs/libraries/LibrariesSupportBotPage.d.ts.map +1 -1
  345. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +129 -77
  346. package/dist/components/docs/libraries/LibrariesTestingPage.d.ts +1 -6
  347. package/dist/components/docs/libraries/LibrariesTestingPage.d.ts.map +1 -1
  348. package/dist/components/docs/libraries/LibrariesTestingPage.js +121 -91
  349. package/dist/components/docs/libraries/LibrariesUIKitPage.d.ts +1 -6
  350. package/dist/components/docs/libraries/LibrariesUIKitPage.d.ts.map +1 -1
  351. package/dist/components/docs/libraries/LibrariesUIKitPage.js +226 -136
  352. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.d.ts +1 -6
  353. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.d.ts.map +1 -1
  354. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +83 -62
  355. package/dist/components/docs/libraries/LibrariesWorkflowsPage.d.ts +1 -6
  356. package/dist/components/docs/libraries/LibrariesWorkflowsPage.d.ts.map +1 -1
  357. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +177 -111
  358. package/dist/components/docs/libraries/index.d.ts +28 -28
  359. package/dist/components/docs/libraries/index.d.ts.map +1 -0
  360. package/dist/components/docs/libraries/index.js +5005 -29
  361. package/dist/components/docs/manifesto/ManifestoPage.d.ts +1 -6
  362. package/dist/components/docs/manifesto/ManifestoPage.d.ts.map +1 -1
  363. package/dist/components/docs/manifesto/ManifestoPage.js +190 -183
  364. package/dist/components/docs/ops/AutoEvolutionOpsPage.d.ts +1 -6
  365. package/dist/components/docs/ops/AutoEvolutionOpsPage.d.ts.map +1 -1
  366. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +130 -92
  367. package/dist/components/docs/ops/DistributedTracingOpsPage.d.ts +1 -6
  368. package/dist/components/docs/ops/DistributedTracingOpsPage.d.ts.map +1 -1
  369. package/dist/components/docs/ops/DistributedTracingOpsPage.js +69 -55
  370. package/dist/components/docs/ops/index.d.ts +3 -3
  371. package/dist/components/docs/ops/index.d.ts.map +1 -0
  372. package/dist/components/docs/ops/index.js +213 -3
  373. package/dist/components/docs/ops/ops-lifecycle.docblocks.d.ts +2 -6
  374. package/dist/components/docs/ops/ops-lifecycle.docblocks.d.ts.map +1 -1
  375. package/dist/components/docs/ops/ops-lifecycle.docblocks.js +38 -38
  376. package/dist/components/docs/ops/ops-runbooks-a.docblocks.d.ts +2 -6
  377. package/dist/components/docs/ops/ops-runbooks-a.docblocks.d.ts.map +1 -1
  378. package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +68 -68
  379. package/dist/components/docs/ops/ops-runbooks-b.docblocks.d.ts +2 -6
  380. package/dist/components/docs/ops/ops-runbooks-b.docblocks.d.ts.map +1 -1
  381. package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +69 -69
  382. package/dist/components/docs/ops/ops-slo-tenant.docblocks.d.ts +2 -6
  383. package/dist/components/docs/ops/ops-slo-tenant.docblocks.d.ts.map +1 -1
  384. package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +69 -69
  385. package/dist/components/docs/ops/ops-top.docs.d.ts +2 -6
  386. package/dist/components/docs/ops/ops-top.docs.d.ts.map +1 -1
  387. package/dist/components/docs/ops/ops-top.docs.js +17 -15
  388. package/dist/components/docs/ops/ops.docs.d.ts +2 -6
  389. package/dist/components/docs/ops/ops.docs.d.ts.map +1 -1
  390. package/dist/components/docs/ops/ops.docs.js +579 -16
  391. package/dist/components/docs/product/product.docblocks.d.ts +2 -6
  392. package/dist/components/docs/product/product.docblocks.d.ts.map +1 -1
  393. package/dist/components/docs/product/product.docblocks.js +66 -67
  394. package/dist/components/docs/reference/DocsMarkdownContent.d.ts +3 -10
  395. package/dist/components/docs/reference/DocsMarkdownContent.d.ts.map +1 -1
  396. package/dist/components/docs/reference/DocsMarkdownContent.js +188 -64
  397. package/dist/components/docs/reference/DocsReferenceContent.d.ts +5 -12
  398. package/dist/components/docs/reference/DocsReferenceContent.d.ts.map +1 -1
  399. package/dist/components/docs/reference/DocsReferenceContent.js +251 -45
  400. package/dist/components/docs/reference/DocsReferenceIndexClient.d.ts +4 -10
  401. package/dist/components/docs/reference/DocsReferenceIndexClient.d.ts.map +1 -1
  402. package/dist/components/docs/reference/DocsReferenceIndexClient.js +120 -98
  403. package/dist/components/docs/reference/DocsReferenceIndexPage.d.ts +1 -6
  404. package/dist/components/docs/reference/DocsReferenceIndexPage.d.ts.map +1 -1
  405. package/dist/components/docs/reference/DocsReferenceIndexPage.js +205 -9
  406. package/dist/components/docs/reference/DocsReferencePage.d.ts +5 -12
  407. package/dist/components/docs/reference/DocsReferencePage.d.ts.map +1 -1
  408. package/dist/components/docs/reference/DocsReferencePage.js +264 -11
  409. package/dist/components/docs/reference/docsMarkdownParser.d.ts +15 -18
  410. package/dist/components/docs/reference/docsMarkdownParser.d.ts.map +1 -1
  411. package/dist/components/docs/reference/docsMarkdownParser.js +87 -90
  412. package/dist/components/docs/reference/index.d.ts +3 -3
  413. package/dist/components/docs/reference/index.d.ts.map +1 -0
  414. package/dist/components/docs/reference/index.js +472 -3
  415. package/dist/components/docs/safety/SafetyAuditingPage.d.ts +1 -6
  416. package/dist/components/docs/safety/SafetyAuditingPage.d.ts.map +1 -1
  417. package/dist/components/docs/safety/SafetyAuditingPage.js +348 -210
  418. package/dist/components/docs/safety/SafetyMigrationsPage.d.ts +1 -6
  419. package/dist/components/docs/safety/SafetyMigrationsPage.d.ts.map +1 -1
  420. package/dist/components/docs/safety/SafetyMigrationsPage.js +357 -220
  421. package/dist/components/docs/safety/SafetyOverviewPage.d.ts +1 -6
  422. package/dist/components/docs/safety/SafetyOverviewPage.d.ts.map +1 -1
  423. package/dist/components/docs/safety/SafetyOverviewPage.js +236 -194
  424. package/dist/components/docs/safety/SafetyPDPPage.d.ts +1 -6
  425. package/dist/components/docs/safety/SafetyPDPPage.d.ts.map +1 -1
  426. package/dist/components/docs/safety/SafetyPDPPage.js +299 -201
  427. package/dist/components/docs/safety/SafetySecurityTrustPage.d.ts +1 -6
  428. package/dist/components/docs/safety/SafetySecurityTrustPage.d.ts.map +1 -1
  429. package/dist/components/docs/safety/SafetySecurityTrustPage.js +204 -154
  430. package/dist/components/docs/safety/SafetySigningPage.d.ts +1 -6
  431. package/dist/components/docs/safety/SafetySigningPage.d.ts.map +1 -1
  432. package/dist/components/docs/safety/SafetySigningPage.js +89 -66
  433. package/dist/components/docs/safety/SafetyTenantIsolationPage.d.ts +1 -6
  434. package/dist/components/docs/safety/SafetyTenantIsolationPage.d.ts.map +1 -1
  435. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +77 -59
  436. package/dist/components/docs/safety/index.d.ts +8 -8
  437. package/dist/components/docs/safety/index.d.ts.map +1 -0
  438. package/dist/components/docs/safety/index.js +1698 -9
  439. package/dist/components/docs/shared/StudioPrompt.d.ts +6 -15
  440. package/dist/components/docs/shared/StudioPrompt.d.ts.map +1 -1
  441. package/dist/components/docs/shared/StudioPrompt.js +30 -26
  442. package/dist/components/docs/specs/SpecsCapabilitiesPage.d.ts +1 -6
  443. package/dist/components/docs/specs/SpecsCapabilitiesPage.d.ts.map +1 -1
  444. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +156 -126
  445. package/dist/components/docs/specs/SpecsDataViewsPage.d.ts +1 -6
  446. package/dist/components/docs/specs/SpecsDataViewsPage.d.ts.map +1 -1
  447. package/dist/components/docs/specs/SpecsDataViewsPage.js +258 -168
  448. package/dist/components/docs/specs/SpecsOverlaysPage.d.ts +1 -6
  449. package/dist/components/docs/specs/SpecsOverlaysPage.d.ts.map +1 -1
  450. package/dist/components/docs/specs/SpecsOverlaysPage.js +370 -205
  451. package/dist/components/docs/specs/SpecsOverviewPage.d.ts +1 -6
  452. package/dist/components/docs/specs/SpecsOverviewPage.d.ts.map +1 -1
  453. package/dist/components/docs/specs/SpecsOverviewPage.js +346 -277
  454. package/dist/components/docs/specs/SpecsPolicyPage.d.ts +1 -6
  455. package/dist/components/docs/specs/SpecsPolicyPage.d.ts.map +1 -1
  456. package/dist/components/docs/specs/SpecsPolicyPage.js +418 -311
  457. package/dist/components/docs/specs/SpecsWorkflowsPage.d.ts +1 -6
  458. package/dist/components/docs/specs/SpecsWorkflowsPage.d.ts.map +1 -1
  459. package/dist/components/docs/specs/SpecsWorkflowsPage.js +310 -205
  460. package/dist/components/docs/specs/index.d.ts +7 -7
  461. package/dist/components/docs/specs/index.d.ts.map +1 -0
  462. package/dist/components/docs/specs/index.js +2082 -8
  463. package/dist/components/docs/studio/StudioBYOKPage.d.ts +1 -6
  464. package/dist/components/docs/studio/StudioBYOKPage.d.ts.map +1 -1
  465. package/dist/components/docs/studio/StudioBYOKPage.js +78 -76
  466. package/dist/components/docs/studio/StudioDeploymentsPage.d.ts +1 -6
  467. package/dist/components/docs/studio/StudioDeploymentsPage.d.ts.map +1 -1
  468. package/dist/components/docs/studio/StudioDeploymentsPage.js +99 -81
  469. package/dist/components/docs/studio/StudioGettingStartedPage.d.ts +1 -6
  470. package/dist/components/docs/studio/StudioGettingStartedPage.d.ts.map +1 -1
  471. package/dist/components/docs/studio/StudioGettingStartedPage.js +82 -80
  472. package/dist/components/docs/studio/StudioIntegrationsPage.d.ts +1 -6
  473. package/dist/components/docs/studio/StudioIntegrationsPage.d.ts.map +1 -1
  474. package/dist/components/docs/studio/StudioIntegrationsPage.js +70 -65
  475. package/dist/components/docs/studio/StudioOverviewPage.d.ts +1 -6
  476. package/dist/components/docs/studio/StudioOverviewPage.d.ts.map +1 -1
  477. package/dist/components/docs/studio/StudioOverviewPage.js +71 -66
  478. package/dist/components/docs/studio/StudioVisualBuilderPage.d.ts +1 -6
  479. package/dist/components/docs/studio/StudioVisualBuilderPage.d.ts.map +1 -1
  480. package/dist/components/docs/studio/StudioVisualBuilderPage.js +118 -99
  481. package/dist/components/docs/studio/index.d.ts +7 -7
  482. package/dist/components/docs/studio/index.d.ts.map +1 -0
  483. package/dist/components/docs/studio/index.js +538 -8
  484. package/dist/components/docs/tech/contracts/tech-docs.docblocks.d.ts +2 -6
  485. package/dist/components/docs/tech/contracts/tech-docs.docblocks.d.ts.map +1 -1
  486. package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +17 -16
  487. package/dist/components/integrations/index.d.ts +5 -5
  488. package/dist/components/integrations/index.d.ts.map +1 -0
  489. package/dist/components/integrations/index.js +601 -5
  490. package/dist/components/integrations/molecules/IntegrationCard.d.ts +11 -26
  491. package/dist/components/integrations/molecules/IntegrationCard.d.ts.map +1 -1
  492. package/dist/components/integrations/molecules/IntegrationCard.js +98 -60
  493. package/dist/components/integrations/organisms/IntegrationMarketplace.d.ts +13 -22
  494. package/dist/components/integrations/organisms/IntegrationMarketplace.d.ts.map +1 -1
  495. package/dist/components/integrations/organisms/IntegrationMarketplace.js +211 -77
  496. package/dist/components/integrations/organisms/IntegrationSettings.d.ts +15 -27
  497. package/dist/components/integrations/organisms/IntegrationSettings.d.ts.map +1 -1
  498. package/dist/components/integrations/organisms/IntegrationSettings.js +281 -189
  499. package/dist/components/integrations/organisms/KnowledgeSourceList.d.ts +12 -22
  500. package/dist/components/integrations/organisms/KnowledgeSourceList.d.ts.map +1 -1
  501. package/dist/components/integrations/organisms/KnowledgeSourceList.js +102 -65
  502. package/dist/components/legal/PrivacyTemplate.d.ts +3 -8
  503. package/dist/components/legal/PrivacyTemplate.d.ts.map +1 -1
  504. package/dist/components/legal/PrivacyTemplate.js +1023 -842
  505. package/dist/components/legal/TermsTemplate.d.ts +3 -8
  506. package/dist/components/legal/TermsTemplate.d.ts.map +1 -1
  507. package/dist/components/legal/TermsTemplate.js +939 -780
  508. package/dist/components/legal/index.d.ts +3 -3
  509. package/dist/components/legal/index.d.ts.map +1 -0
  510. package/dist/components/legal/index.js +1963 -3
  511. package/dist/components/shared/FeatureGateNotice.d.ts +6 -16
  512. package/dist/components/shared/FeatureGateNotice.d.ts.map +1 -1
  513. package/dist/components/shared/FeatureGateNotice.js +37 -32
  514. package/dist/components/shared/index.d.ts +2 -2
  515. package/dist/components/shared/index.d.ts.map +1 -0
  516. package/dist/components/shared/index.js +39 -3
  517. package/dist/components/shell/WorkspaceHeader.d.ts +19 -32
  518. package/dist/components/shell/WorkspaceHeader.d.ts.map +1 -1
  519. package/dist/components/shell/WorkspaceHeader.js +97 -59
  520. package/dist/components/shell/WorkspaceProjectShellLayout.d.ts +9 -28
  521. package/dist/components/shell/WorkspaceProjectShellLayout.d.ts.map +1 -1
  522. package/dist/components/shell/WorkspaceProjectShellLayout.js +220 -35
  523. package/dist/components/shell/WorkspaceSidebar.d.ts +12 -22
  524. package/dist/components/shell/WorkspaceSidebar.d.ts.map +1 -1
  525. package/dist/components/shell/WorkspaceSidebar.js +67 -31
  526. package/dist/components/shell/index.d.ts +4 -4
  527. package/dist/components/shell/index.d.ts.map +1 -0
  528. package/dist/components/shell/index.js +224 -4
  529. package/dist/components/templates/engine/index.d.ts +18 -12
  530. package/dist/components/templates/engine/index.d.ts.map +1 -1
  531. package/dist/components/templates/engine/index.js +28 -41
  532. package/dist/components/templates/index.d.ts +4 -16
  533. package/dist/components/templates/index.d.ts.map +1 -0
  534. package/dist/components/templates/index.js +1067 -17
  535. package/dist/components/templates/messaging/ConversationList.d.ts +4 -12
  536. package/dist/components/templates/messaging/ConversationList.d.ts.map +1 -1
  537. package/dist/components/templates/messaging/ConversationList.js +79 -52
  538. package/dist/components/templates/messaging/MessageComposer.d.ts +5 -14
  539. package/dist/components/templates/messaging/MessageComposer.d.ts.map +1 -1
  540. package/dist/components/templates/messaging/MessageComposer.js +159 -52
  541. package/dist/components/templates/messaging/MessageThread.d.ts +5 -14
  542. package/dist/components/templates/messaging/MessageThread.d.ts.map +1 -1
  543. package/dist/components/templates/messaging/MessageThread.js +78 -75
  544. package/dist/components/templates/messaging/MessagingWorkspace.d.ts +1 -6
  545. package/dist/components/templates/messaging/MessagingWorkspace.d.ts.map +1 -1
  546. package/dist/components/templates/messaging/MessagingWorkspace.js +290 -25
  547. package/dist/components/templates/messaging/index.d.ts +5 -5
  548. package/dist/components/templates/messaging/index.d.ts.map +1 -0
  549. package/dist/components/templates/messaging/index.js +300 -5
  550. package/dist/components/templates/messaging/types.d.ts +20 -23
  551. package/dist/components/templates/messaging/types.d.ts.map +1 -1
  552. package/dist/components/templates/messaging/types.js +1 -0
  553. package/dist/components/templates/recipes/LanguageSwitcher.d.ts +4 -12
  554. package/dist/components/templates/recipes/LanguageSwitcher.d.ts.map +1 -1
  555. package/dist/components/templates/recipes/LanguageSwitcher.js +15 -16
  556. package/dist/components/templates/recipes/RecipeCard.d.ts +6 -15
  557. package/dist/components/templates/recipes/RecipeCard.d.ts.map +1 -1
  558. package/dist/components/templates/recipes/RecipeCard.js +79 -57
  559. package/dist/components/templates/recipes/RecipeDetail.d.ts +4 -11
  560. package/dist/components/templates/recipes/RecipeDetail.d.ts.map +1 -1
  561. package/dist/components/templates/recipes/RecipeDetail.js +72 -47
  562. package/dist/components/templates/recipes/RecipeList.d.ts +1 -6
  563. package/dist/components/templates/recipes/RecipeList.d.ts.map +1 -1
  564. package/dist/components/templates/recipes/RecipeList.js +236 -72
  565. package/dist/components/templates/recipes/index.d.ts +5 -5
  566. package/dist/components/templates/recipes/index.d.ts.map +1 -0
  567. package/dist/components/templates/recipes/index.js +282 -5
  568. package/dist/components/templates/recipes/types.d.ts +23 -26
  569. package/dist/components/templates/recipes/types.d.ts.map +1 -1
  570. package/dist/components/templates/recipes/types.js +1 -0
  571. package/dist/components/templates/todos/FilterBar.d.ts +11 -20
  572. package/dist/components/templates/todos/FilterBar.d.ts.map +1 -1
  573. package/dist/components/templates/todos/FilterBar.js +106 -95
  574. package/dist/components/templates/todos/TaskForm.d.ts +4 -11
  575. package/dist/components/templates/todos/TaskForm.d.ts.map +1 -1
  576. package/dist/components/templates/todos/TaskForm.js +150 -127
  577. package/dist/components/templates/todos/TaskItem.d.ts +6 -15
  578. package/dist/components/templates/todos/TaskItem.d.ts.map +1 -1
  579. package/dist/components/templates/todos/TaskItem.js +75 -64
  580. package/dist/components/templates/todos/TaskList.d.ts +1 -6
  581. package/dist/components/templates/todos/TaskList.d.ts.map +1 -1
  582. package/dist/components/templates/todos/TaskList.js +446 -102
  583. package/dist/components/templates/todos/index.d.ts +5 -5
  584. package/dist/components/templates/todos/index.d.ts.map +1 -0
  585. package/dist/components/templates/todos/index.js +488 -5
  586. package/dist/components/templates/todos/types.d.ts +14 -17
  587. package/dist/components/templates/todos/types.d.ts.map +1 -1
  588. package/dist/components/templates/todos/types.js +1 -0
  589. package/dist/config/contractspec-blueprint.d.ts +2 -7
  590. package/dist/config/contractspec-blueprint.d.ts.map +1 -1
  591. package/dist/config/contractspec-blueprint.js +122 -70
  592. package/dist/config/contractspec-branding.d.ts +3 -8
  593. package/dist/config/contractspec-branding.d.ts.map +1 -1
  594. package/dist/config/contractspec-branding.js +43 -66
  595. package/dist/config/contractspec-routes.d.ts +2 -7
  596. package/dist/config/contractspec-routes.d.ts.map +1 -1
  597. package/dist/config/contractspec-routes.js +24 -68
  598. package/dist/config/index.d.ts +5 -5
  599. package/dist/config/index.d.ts.map +1 -0
  600. package/dist/config/index.js +126 -4
  601. package/dist/features/contracts-registry.d.ts +39 -37
  602. package/dist/features/contracts-registry.d.ts.map +1 -1
  603. package/dist/features/contracts-registry.js +122 -85
  604. package/dist/features/docs/docs.contracts.d.ts +2 -2
  605. package/dist/features/docs/docs.contracts.d.ts.map +1 -0
  606. package/dist/features/docs/docs.contracts.js +18 -3
  607. package/dist/features/docs/index.d.ts +2 -2
  608. package/dist/features/docs/index.d.ts.map +1 -0
  609. package/dist/features/docs/index.js +18 -3
  610. package/dist/features/docs.feature.d.ts +2 -7
  611. package/dist/features/docs.feature.d.ts.map +1 -1
  612. package/dist/features/docs.feature.js +33 -59
  613. package/dist/features/index.d.ts +10 -9
  614. package/dist/features/index.d.ts.map +1 -0
  615. package/dist/features/index.js +310 -8
  616. package/dist/features/mcp.feature.d.ts +2 -7
  617. package/dist/features/mcp.feature.d.ts.map +1 -1
  618. package/dist/features/mcp.feature.js +30 -56
  619. package/dist/features/presentations.feature.d.ts +2 -7
  620. package/dist/features/presentations.feature.d.ts.map +1 -1
  621. package/dist/features/presentations.feature.js +33 -60
  622. package/dist/features/registry.d.ts +4 -9
  623. package/dist/features/registry.d.ts.map +1 -1
  624. package/dist/features/registry.js +109 -31
  625. package/dist/index.d.ts +9 -158
  626. package/dist/index.d.ts.map +1 -0
  627. package/dist/index.js +32497 -158
  628. package/dist/infrastructure/elysia/index.d.ts +2 -2
  629. package/dist/infrastructure/elysia/index.d.ts.map +1 -0
  630. package/dist/infrastructure/elysia/index.js +36 -3
  631. package/dist/infrastructure/elysia/logger.d.ts +6 -9
  632. package/dist/infrastructure/elysia/logger.d.ts.map +1 -1
  633. package/dist/infrastructure/elysia/logger.js +33 -29
  634. package/dist/infrastructure/index.d.ts +2 -3
  635. package/dist/infrastructure/index.d.ts.map +1 -0
  636. package/dist/infrastructure/index.js +36 -4
  637. package/dist/libs/email/client.d.ts +9 -12
  638. package/dist/libs/email/client.d.ts.map +1 -1
  639. package/dist/libs/email/client.js +107 -105
  640. package/dist/libs/email/client.test.d.ts +2 -0
  641. package/dist/libs/email/client.test.d.ts.map +1 -0
  642. package/dist/libs/email/contact.d.ts +2 -6
  643. package/dist/libs/email/contact.d.ts.map +1 -1
  644. package/dist/libs/email/contact.js +153 -41
  645. package/dist/libs/email/newsletter.d.ts +2 -6
  646. package/dist/libs/email/newsletter.d.ts.map +1 -1
  647. package/dist/libs/email/newsletter.js +167 -54
  648. package/dist/libs/email/types.d.ts +48 -52
  649. package/dist/libs/email/types.d.ts.map +1 -1
  650. package/dist/libs/email/types.js +3 -1
  651. package/dist/libs/email/utils.d.ts +2 -5
  652. package/dist/libs/email/utils.d.ts.map +1 -1
  653. package/dist/libs/email/utils.js +9 -7
  654. package/dist/libs/email/waitlist-application.d.ts +2 -6
  655. package/dist/libs/email/waitlist-application.d.ts.map +1 -1
  656. package/dist/libs/email/waitlist-application.js +187 -69
  657. package/dist/libs/email/waitlist.d.ts +2 -6
  658. package/dist/libs/email/waitlist.d.ts.map +1 -1
  659. package/dist/libs/email/waitlist.js +169 -56
  660. package/dist/libs/email.d.ts +6 -6
  661. package/dist/libs/email.d.ts.map +1 -0
  662. package/dist/libs/email.js +541 -6
  663. package/dist/libs/posthog/client.d.ts +15 -17
  664. package/dist/libs/posthog/client.d.ts.map +1 -1
  665. package/dist/libs/posthog/client.js +56 -44
  666. package/dist/libs/posthog/native.d.ts +6 -9
  667. package/dist/libs/posthog/native.d.ts.map +1 -1
  668. package/dist/libs/posthog/native.js +21 -16
  669. package/dist/libs/posthog/server.d.ts +3 -6
  670. package/dist/libs/posthog/server.d.ts.map +1 -1
  671. package/dist/libs/posthog/server.js +11 -12
  672. package/dist/libs/pricing-examples.d.ts +13 -16
  673. package/dist/libs/pricing-examples.d.ts.map +1 -1
  674. package/dist/libs/pricing-examples.js +18 -20
  675. package/dist/node/application/index.js +696 -0
  676. package/dist/node/application/mcp/cliMcp.js +341 -0
  677. package/dist/node/application/mcp/common.js +77 -0
  678. package/dist/node/application/mcp/docsMcp.js +267 -0
  679. package/dist/node/application/mcp/index.js +696 -0
  680. package/dist/node/application/mcp/internalMcp.js +294 -0
  681. package/dist/node/components/docs/DocsIndexPage.js +270 -0
  682. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +337 -0
  683. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +107 -0
  684. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +132 -0
  685. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +124 -0
  686. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +417 -0
  687. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +108 -0
  688. package/dist/node/components/docs/advanced/index.js +1220 -0
  689. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +383 -0
  690. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +386 -0
  691. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +528 -0
  692. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +172 -0
  693. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +448 -0
  694. package/dist/node/components/docs/architecture/index.js +1913 -0
  695. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +245 -0
  696. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +230 -0
  697. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +245 -0
  698. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +202 -0
  699. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +254 -0
  700. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +339 -0
  701. package/dist/node/components/docs/comparison/index.js +1510 -0
  702. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +102 -0
  703. package/dist/node/components/docs/ecosystem/PluginsPage.js +200 -0
  704. package/dist/node/components/docs/ecosystem/RegistryPage.js +119 -0
  705. package/dist/node/components/docs/ecosystem/TemplatesPage.js +146 -0
  706. package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +49 -0
  707. package/dist/node/components/docs/ecosystem/index.js +614 -0
  708. package/dist/node/components/docs/examples/DocsExamplesPage.js +84 -0
  709. package/dist/node/components/docs/examples/index.js +84 -0
  710. package/dist/node/components/docs/generated/docs-index.generated.js +5 -0
  711. package/dist/node/components/docs/generated/index.js +74 -0
  712. package/dist/node/components/docs/generated/loader.js +74 -0
  713. package/dist/node/components/docs/getting-started/CLIPage.js +292 -0
  714. package/dist/node/components/docs/getting-started/CompatibilityPage.js +173 -0
  715. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +238 -0
  716. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +194 -0
  717. package/dist/node/components/docs/getting-started/HelloWorldPage.js +273 -0
  718. package/dist/node/components/docs/getting-started/InstallationPage.js +156 -0
  719. package/dist/node/components/docs/getting-started/StartHerePage.js +129 -0
  720. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +169 -0
  721. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +432 -0
  722. package/dist/node/components/docs/getting-started/getting-started.docblocks.js +137 -0
  723. package/dist/node/components/docs/getting-started/index.js +2183 -0
  724. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +197 -0
  725. package/dist/node/components/docs/guides/GuideContractTypesPage.js +738 -0
  726. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +225 -0
  727. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +211 -0
  728. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +878 -0
  729. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +318 -0
  730. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +255 -0
  731. package/dist/node/components/docs/guides/GuidesIndexPage.js +149 -0
  732. package/dist/node/components/docs/guides/guides.docblocks.js +111 -0
  733. package/dist/node/components/docs/guides/index.js +2902 -0
  734. package/dist/node/components/docs/index.js +28181 -0
  735. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +51 -0
  736. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +123 -0
  737. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +131 -0
  738. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +104 -0
  739. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +195 -0
  740. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +650 -0
  741. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +261 -0
  742. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +352 -0
  743. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +178 -0
  744. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +123 -0
  745. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +163 -0
  746. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +422 -0
  747. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +425 -0
  748. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +146 -0
  749. package/dist/node/components/docs/integrations/index.js +3311 -0
  750. package/dist/node/components/docs/intent/ContractFirstApiPage.js +159 -0
  751. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +184 -0
  752. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +398 -0
  753. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +237 -0
  754. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +236 -0
  755. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +197 -0
  756. package/dist/node/components/docs/intent/index.js +1594 -0
  757. package/dist/node/components/docs/intent/intent-pages.docblocks.js +201 -0
  758. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +829 -0
  759. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +340 -0
  760. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +464 -0
  761. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +454 -0
  762. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +361 -0
  763. package/dist/node/components/docs/knowledge/index.js +2444 -0
  764. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +227 -0
  765. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +168 -0
  766. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +96 -0
  767. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +119 -0
  768. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +302 -0
  769. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +123 -0
  770. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +183 -0
  771. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +204 -0
  772. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +312 -0
  773. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +164 -0
  774. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +186 -0
  775. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +116 -0
  776. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +118 -0
  777. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +149 -0
  778. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +135 -0
  779. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +483 -0
  780. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +129 -0
  781. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +151 -0
  782. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +138 -0
  783. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +239 -0
  784. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +126 -0
  785. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +304 -0
  786. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +144 -0
  787. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +159 -0
  788. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +247 -0
  789. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +108 -0
  790. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +200 -0
  791. package/dist/node/components/docs/libraries/index.js +5004 -0
  792. package/dist/node/components/docs/manifesto/ManifestoPage.js +191 -0
  793. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +141 -0
  794. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +73 -0
  795. package/dist/node/components/docs/ops/index.js +213 -0
  796. package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +151 -0
  797. package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +123 -0
  798. package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +134 -0
  799. package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +146 -0
  800. package/dist/node/components/docs/ops/ops-top.docs.js +25 -0
  801. package/dist/node/components/docs/ops/ops.docs.js +580 -0
  802. package/dist/node/components/docs/product/product.docblocks.js +78 -0
  803. package/dist/node/components/docs/reference/DocsMarkdownContent.js +196 -0
  804. package/dist/node/components/docs/reference/DocsReferenceContent.js +257 -0
  805. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +128 -0
  806. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +207 -0
  807. package/dist/node/components/docs/reference/DocsReferencePage.js +266 -0
  808. package/dist/node/components/docs/reference/docsMarkdownParser.js +92 -0
  809. package/dist/node/components/docs/reference/index.js +472 -0
  810. package/dist/node/components/docs/safety/SafetyAuditingPage.js +380 -0
  811. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +381 -0
  812. package/dist/node/components/docs/safety/SafetyOverviewPage.js +238 -0
  813. package/dist/node/components/docs/safety/SafetyPDPPage.js +318 -0
  814. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +206 -0
  815. package/dist/node/components/docs/safety/SafetySigningPage.js +92 -0
  816. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +88 -0
  817. package/dist/node/components/docs/safety/index.js +1697 -0
  818. package/dist/node/components/docs/shared/StudioPrompt.js +31 -0
  819. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +195 -0
  820. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +299 -0
  821. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +408 -0
  822. package/dist/node/components/docs/specs/SpecsOverviewPage.js +348 -0
  823. package/dist/node/components/docs/specs/SpecsPolicyPage.js +473 -0
  824. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +363 -0
  825. package/dist/node/components/docs/specs/index.js +2081 -0
  826. package/dist/node/components/docs/studio/StudioBYOKPage.js +80 -0
  827. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +101 -0
  828. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +94 -0
  829. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +72 -0
  830. package/dist/node/components/docs/studio/StudioOverviewPage.js +74 -0
  831. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +121 -0
  832. package/dist/node/components/docs/studio/index.js +537 -0
  833. package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +20 -0
  834. package/dist/node/components/integrations/index.js +601 -0
  835. package/dist/node/components/integrations/molecules/IntegrationCard.js +100 -0
  836. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +214 -0
  837. package/dist/node/components/integrations/organisms/IntegrationSettings.js +285 -0
  838. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +103 -0
  839. package/dist/node/components/legal/PrivacyTemplate.js +1025 -0
  840. package/dist/node/components/legal/TermsTemplate.js +941 -0
  841. package/dist/node/components/legal/index.js +1963 -0
  842. package/dist/node/components/shared/FeatureGateNotice.js +38 -0
  843. package/dist/node/components/shared/index.js +38 -0
  844. package/dist/node/components/shell/WorkspaceHeader.js +100 -0
  845. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +222 -0
  846. package/dist/node/components/shell/WorkspaceSidebar.js +68 -0
  847. package/dist/node/components/shell/index.js +224 -0
  848. package/dist/node/components/templates/engine/index.js +39 -0
  849. package/dist/node/components/templates/index.js +1066 -0
  850. package/dist/node/components/templates/messaging/ConversationList.js +96 -0
  851. package/dist/node/components/templates/messaging/MessageComposer.js +168 -0
  852. package/dist/node/components/templates/messaging/MessageThread.js +96 -0
  853. package/dist/node/components/templates/messaging/MessagingWorkspace.js +296 -0
  854. package/dist/node/components/templates/messaging/index.js +300 -0
  855. package/dist/node/components/templates/messaging/types.js +0 -0
  856. package/dist/node/components/templates/recipes/LanguageSwitcher.js +16 -0
  857. package/dist/node/components/templates/recipes/RecipeCard.js +80 -0
  858. package/dist/node/components/templates/recipes/RecipeDetail.js +74 -0
  859. package/dist/node/components/templates/recipes/RecipeList.js +279 -0
  860. package/dist/node/components/templates/recipes/index.js +282 -0
  861. package/dist/node/components/templates/recipes/types.js +0 -0
  862. package/dist/node/components/templates/todos/FilterBar.js +107 -0
  863. package/dist/node/components/templates/todos/TaskForm.js +164 -0
  864. package/dist/node/components/templates/todos/TaskItem.js +77 -0
  865. package/dist/node/components/templates/todos/TaskList.js +485 -0
  866. package/dist/node/components/templates/todos/index.js +488 -0
  867. package/dist/node/components/templates/todos/types.js +0 -0
  868. package/dist/node/config/contractspec-blueprint.js +123 -0
  869. package/dist/node/config/contractspec-branding.js +44 -0
  870. package/dist/node/config/contractspec-routes.js +24 -0
  871. package/dist/node/config/index.js +126 -0
  872. package/dist/node/features/contracts-registry.js +174 -0
  873. package/dist/node/features/docs/docs.contracts.js +17 -0
  874. package/dist/node/features/docs/index.js +17 -0
  875. package/dist/node/features/docs.feature.js +33 -0
  876. package/dist/node/features/index.js +311 -0
  877. package/dist/node/features/mcp.feature.js +30 -0
  878. package/dist/node/features/presentations.feature.js +33 -0
  879. package/dist/node/features/registry.js +116 -0
  880. package/dist/node/index.js +32496 -0
  881. package/dist/node/infrastructure/elysia/index.js +35 -0
  882. package/dist/node/infrastructure/elysia/logger.js +35 -0
  883. package/dist/node/infrastructure/index.js +35 -0
  884. package/dist/node/libs/email/client.js +114 -0
  885. package/dist/node/libs/email/contact.js +182 -0
  886. package/dist/node/libs/email/newsletter.js +207 -0
  887. package/dist/node/libs/email/types.js +2 -0
  888. package/dist/node/libs/email/utils.js +8 -0
  889. package/dist/node/libs/email/waitlist-application.js +281 -0
  890. package/dist/node/libs/email/waitlist.js +217 -0
  891. package/dist/node/libs/email.js +542 -0
  892. package/dist/node/libs/posthog/client.js +63 -0
  893. package/dist/node/libs/posthog/native.js +23 -0
  894. package/dist/node/libs/posthog/server.js +13 -0
  895. package/dist/node/libs/pricing-examples.js +18 -0
  896. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +97 -0
  897. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +97 -0
  898. package/dist/node/presentation/features/atoms/index.js +97 -0
  899. package/dist/node/presentation/features/hooks/index.js +393 -0
  900. package/dist/node/presentation/features/hooks/useContractsRegistry.js +285 -0
  901. package/dist/node/presentation/features/hooks/useFeatureFilters.js +75 -0
  902. package/dist/node/presentation/features/hooks/useFeatureRegistry.js +147 -0
  903. package/dist/node/presentation/features/hooks/useRelatedDocs.js +28 -0
  904. package/dist/node/presentation/features/index.js +3059 -0
  905. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +366 -0
  906. package/dist/node/presentation/features/molecules/FeatureCard/index.js +366 -0
  907. package/dist/node/presentation/features/molecules/FeatureCard/types.js +0 -0
  908. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +50 -0
  909. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +50 -0
  910. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +92 -0
  911. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +92 -0
  912. package/dist/node/presentation/features/molecules/FeatureFilters/types.js +0 -0
  913. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +176 -0
  914. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +176 -0
  915. package/dist/node/presentation/features/molecules/index.js +505 -0
  916. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +300 -0
  917. package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +154 -0
  918. package/dist/node/presentation/features/organisms/FeatureDetail/index.js +154 -0
  919. package/dist/node/presentation/features/organisms/FeatureDetail/types.js +0 -0
  920. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +909 -0
  921. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +909 -0
  922. package/dist/node/presentation/features/organisms/FeatureDiscovery/types.js +0 -0
  923. package/dist/node/presentation/features/organisms/FeatureEventsList.js +298 -0
  924. package/dist/node/presentation/features/organisms/FeatureFormsList.js +298 -0
  925. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +176 -0
  926. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +300 -0
  927. package/dist/node/presentation/features/organisms/index.js +1355 -0
  928. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +332 -0
  929. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +332 -0
  930. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/types.js +0 -0
  931. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +338 -0
  932. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +338 -0
  933. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +303 -0
  934. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +303 -0
  935. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/types.js +0 -0
  936. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +336 -0
  937. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +336 -0
  938. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +329 -0
  939. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +329 -0
  940. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/types.js +0 -0
  941. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +336 -0
  942. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +336 -0
  943. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +302 -0
  944. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +302 -0
  945. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/types.js +0 -0
  946. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +214 -0
  947. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +214 -0
  948. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +187 -0
  949. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +187 -0
  950. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +306 -0
  951. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +306 -0
  952. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/types.js +0 -0
  953. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +338 -0
  954. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +338 -0
  955. package/dist/node/presentation/features/templates/types.js +0 -0
  956. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.d.ts +16 -28
  957. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.d.ts.map +1 -1
  958. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +89 -78
  959. package/dist/presentation/features/atoms/FeatureIcon/index.d.ts +2 -2
  960. package/dist/presentation/features/atoms/FeatureIcon/index.d.ts.map +1 -0
  961. package/dist/presentation/features/atoms/FeatureIcon/index.js +98 -3
  962. package/dist/presentation/features/atoms/index.d.ts +2 -3
  963. package/dist/presentation/features/atoms/index.d.ts.map +1 -0
  964. package/dist/presentation/features/atoms/index.js +98 -4
  965. package/dist/presentation/features/hooks/index.d.ts +4 -4
  966. package/dist/presentation/features/hooks/index.d.ts.map +1 -0
  967. package/dist/presentation/features/hooks/index.js +393 -4
  968. package/dist/presentation/features/hooks/useContractsRegistry.d.ts +10 -14
  969. package/dist/presentation/features/hooks/useContractsRegistry.d.ts.map +1 -1
  970. package/dist/presentation/features/hooks/useContractsRegistry.js +282 -19
  971. package/dist/presentation/features/hooks/useFeatureFilters.d.ts +24 -28
  972. package/dist/presentation/features/hooks/useFeatureFilters.d.ts.map +1 -1
  973. package/dist/presentation/features/hooks/useFeatureFilters.js +73 -74
  974. package/dist/presentation/features/hooks/useFeatureRegistry.d.ts +17 -21
  975. package/dist/presentation/features/hooks/useFeatureRegistry.d.ts.map +1 -1
  976. package/dist/presentation/features/hooks/useFeatureRegistry.js +144 -33
  977. package/dist/presentation/features/hooks/useRelatedDocs.d.ts +5 -8
  978. package/dist/presentation/features/hooks/useRelatedDocs.d.ts.map +1 -1
  979. package/dist/presentation/features/hooks/useRelatedDocs.js +25 -28
  980. package/dist/presentation/features/index.d.ts +27 -57
  981. package/dist/presentation/features/index.d.ts.map +1 -0
  982. package/dist/presentation/features/index.js +3060 -48
  983. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.d.ts +2 -12
  984. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.d.ts.map +1 -1
  985. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +364 -80
  986. package/dist/presentation/features/molecules/FeatureCard/index.d.ts +3 -3
  987. package/dist/presentation/features/molecules/FeatureCard/index.d.ts.map +1 -0
  988. package/dist/presentation/features/molecules/FeatureCard/index.js +367 -3
  989. package/dist/presentation/features/molecules/FeatureCard/types.d.ts +8 -12
  990. package/dist/presentation/features/molecules/FeatureCard/types.d.ts.map +1 -1
  991. package/dist/presentation/features/molecules/FeatureCard/types.js +1 -0
  992. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.d.ts +15 -27
  993. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.d.ts.map +1 -1
  994. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +48 -40
  995. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.d.ts +2 -2
  996. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.d.ts.map +1 -0
  997. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +51 -3
  998. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.d.ts +2 -18
  999. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.d.ts.map +1 -1
  1000. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +90 -77
  1001. package/dist/presentation/features/molecules/FeatureFilters/index.d.ts +3 -3
  1002. package/dist/presentation/features/molecules/FeatureFilters/index.d.ts.map +1 -0
  1003. package/dist/presentation/features/molecules/FeatureFilters/index.js +93 -3
  1004. package/dist/presentation/features/molecules/FeatureFilters/types.d.ts +20 -24
  1005. package/dist/presentation/features/molecules/FeatureFilters/types.d.ts.map +1 -1
  1006. package/dist/presentation/features/molecules/FeatureFilters/types.js +1 -0
  1007. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.d.ts +5 -12
  1008. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.d.ts.map +1 -1
  1009. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +173 -136
  1010. package/dist/presentation/features/molecules/FeatureHoverPreview/index.d.ts +2 -2
  1011. package/dist/presentation/features/molecules/FeatureHoverPreview/index.d.ts.map +1 -0
  1012. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +177 -3
  1013. package/dist/presentation/features/molecules/index.d.ts +5 -11
  1014. package/dist/presentation/features/molecules/index.d.ts.map +1 -0
  1015. package/dist/presentation/features/molecules/index.js +506 -10
  1016. package/dist/presentation/features/organisms/FeatureDataViewsList.d.ts +4 -11
  1017. package/dist/presentation/features/organisms/FeatureDataViewsList.d.ts.map +1 -1
  1018. package/dist/presentation/features/organisms/FeatureDataViewsList.js +297 -25
  1019. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.d.ts +2 -11
  1020. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.d.ts.map +1 -1
  1021. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +150 -138
  1022. package/dist/presentation/features/organisms/FeatureDetail/index.d.ts +3 -3
  1023. package/dist/presentation/features/organisms/FeatureDetail/index.d.ts.map +1 -0
  1024. package/dist/presentation/features/organisms/FeatureDetail/index.js +155 -3
  1025. package/dist/presentation/features/organisms/FeatureDetail/types.d.ts +6 -10
  1026. package/dist/presentation/features/organisms/FeatureDetail/types.d.ts.map +1 -1
  1027. package/dist/presentation/features/organisms/FeatureDetail/types.js +1 -0
  1028. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.d.ts +2 -14
  1029. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.d.ts.map +1 -1
  1030. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +901 -154
  1031. package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts +3 -3
  1032. package/dist/presentation/features/organisms/FeatureDiscovery/index.d.ts.map +1 -0
  1033. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +909 -2
  1034. package/dist/presentation/features/organisms/FeatureDiscovery/types.d.ts +14 -18
  1035. package/dist/presentation/features/organisms/FeatureDiscovery/types.d.ts.map +1 -1
  1036. package/dist/presentation/features/organisms/FeatureDiscovery/types.js +1 -0
  1037. package/dist/presentation/features/organisms/FeatureEventsList.d.ts +4 -11
  1038. package/dist/presentation/features/organisms/FeatureEventsList.d.ts.map +1 -1
  1039. package/dist/presentation/features/organisms/FeatureEventsList.js +295 -25
  1040. package/dist/presentation/features/organisms/FeatureFormsList.d.ts +4 -11
  1041. package/dist/presentation/features/organisms/FeatureFormsList.d.ts.map +1 -1
  1042. package/dist/presentation/features/organisms/FeatureFormsList.js +295 -25
  1043. package/dist/presentation/features/organisms/FeatureOperationsList.d.ts +4 -11
  1044. package/dist/presentation/features/organisms/FeatureOperationsList.d.ts.map +1 -1
  1045. package/dist/presentation/features/organisms/FeatureOperationsList.js +174 -25
  1046. package/dist/presentation/features/organisms/FeaturePresentationsList.d.ts +4 -11
  1047. package/dist/presentation/features/organisms/FeaturePresentationsList.d.ts.map +1 -1
  1048. package/dist/presentation/features/organisms/FeaturePresentationsList.js +297 -25
  1049. package/dist/presentation/features/organisms/index.d.ts +8 -12
  1050. package/dist/presentation/features/organisms/index.d.ts.map +1 -0
  1051. package/dist/presentation/features/organisms/index.js +1356 -11
  1052. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.d.ts +2 -13
  1053. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.d.ts.map +1 -1
  1054. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +329 -231
  1055. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.d.ts +3 -3
  1056. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.d.ts.map +1 -0
  1057. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +332 -2
  1058. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts +8 -12
  1059. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.d.ts.map +1 -1
  1060. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/types.js +1 -0
  1061. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.d.ts +2 -10
  1062. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.d.ts.map +1 -1
  1063. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +335 -30
  1064. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.d.ts +2 -2
  1065. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.d.ts.map +1 -0
  1066. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +338 -2
  1067. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.d.ts +2 -13
  1068. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.d.ts.map +1 -1
  1069. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +300 -210
  1070. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.d.ts +3 -3
  1071. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.d.ts.map +1 -0
  1072. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +303 -2
  1073. package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.d.ts +8 -12
  1074. package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.d.ts.map +1 -1
  1075. package/dist/presentation/features/templates/FeatureEventDetailTemplate/types.js +1 -0
  1076. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.d.ts +2 -10
  1077. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.d.ts.map +1 -1
  1078. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +333 -30
  1079. package/dist/presentation/features/templates/FeatureEventsTemplate/index.d.ts +2 -2
  1080. package/dist/presentation/features/templates/FeatureEventsTemplate/index.d.ts.map +1 -0
  1081. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +336 -2
  1082. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.d.ts +2 -13
  1083. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.d.ts.map +1 -1
  1084. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +326 -231
  1085. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.d.ts +3 -3
  1086. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.d.ts.map +1 -0
  1087. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +329 -2
  1088. package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.d.ts +8 -12
  1089. package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.d.ts.map +1 -1
  1090. package/dist/presentation/features/templates/FeatureFormDetailTemplate/types.js +1 -0
  1091. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.d.ts +2 -10
  1092. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.d.ts.map +1 -1
  1093. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +333 -30
  1094. package/dist/presentation/features/templates/FeatureFormsTemplate/index.d.ts +2 -2
  1095. package/dist/presentation/features/templates/FeatureFormsTemplate/index.d.ts.map +1 -0
  1096. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +336 -2
  1097. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.d.ts +2 -13
  1098. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.d.ts.map +1 -1
  1099. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +300 -205
  1100. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.d.ts +3 -3
  1101. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.d.ts.map +1 -0
  1102. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +302 -2
  1103. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.d.ts +8 -12
  1104. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.d.ts.map +1 -1
  1105. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/types.js +1 -0
  1106. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.d.ts +2 -10
  1107. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.d.ts.map +1 -1
  1108. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +212 -31
  1109. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.d.ts +2 -2
  1110. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.d.ts.map +1 -0
  1111. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +214 -2
  1112. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.d.ts +5 -13
  1113. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.d.ts.map +1 -1
  1114. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +186 -26
  1115. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.d.ts +2 -2
  1116. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.d.ts.map +1 -0
  1117. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +188 -3
  1118. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.d.ts +2 -13
  1119. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.d.ts.map +1 -1
  1120. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +303 -210
  1121. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.d.ts +3 -3
  1122. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.d.ts.map +1 -0
  1123. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +306 -2
  1124. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.d.ts +9 -13
  1125. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.d.ts.map +1 -1
  1126. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/types.js +1 -0
  1127. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.d.ts +2 -10
  1128. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.d.ts.map +1 -1
  1129. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +335 -30
  1130. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.d.ts +2 -2
  1131. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.d.ts.map +1 -0
  1132. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +338 -2
  1133. package/dist/presentation/features/templates/types.d.ts +4 -8
  1134. package/dist/presentation/features/templates/types.d.ts.map +1 -1
  1135. package/dist/presentation/features/templates/types.js +1 -0
  1136. package/package.json +2113 -309
  1137. package/src/components/docs/generated/docs-index._common.json +18 -18
  1138. package/src/components/docs/generated/docs-index.agent-console.json +47 -47
  1139. package/src/components/docs/generated/docs-index.ai-chat.json +13 -13
  1140. package/src/components/docs/generated/docs-index.analytics-dashboard.json +21 -21
  1141. package/src/components/docs/generated/docs-index.app-config.json +17 -17
  1142. package/src/components/docs/generated/docs-index.audit-trail.json +6 -6
  1143. package/src/components/docs/generated/docs-index.crm-pipeline.json +20 -20
  1144. package/src/components/docs/generated/docs-index.feature-flags.json +27 -27
  1145. package/src/components/docs/generated/docs-index.files.json +22 -22
  1146. package/src/components/docs/generated/docs-index.identity-rbac.json +39 -39
  1147. package/src/components/docs/generated/docs-index.integration-hub.json +33 -33
  1148. package/src/components/docs/generated/docs-index.jobs.json +17 -17
  1149. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +16 -16
  1150. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +6 -6
  1151. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +6 -6
  1152. package/src/components/docs/generated/docs-index.learning-journey-registry.json +4 -4
  1153. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +6 -6
  1154. package/src/components/docs/generated/docs-index.learning-journey.json +27 -27
  1155. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +6 -6
  1156. package/src/components/docs/generated/docs-index.manifest.json +8 -3
  1157. package/src/components/docs/generated/docs-index.marketplace.json +42 -42
  1158. package/src/components/docs/generated/docs-index.meeting-recorder.json +50 -0
  1159. package/src/components/docs/generated/docs-index.metrics.json +24 -24
  1160. package/src/components/docs/generated/docs-index.notifications.json +8 -8
  1161. package/src/components/docs/generated/docs-index.openbanking.json +8 -8
  1162. package/src/components/docs/generated/docs-index.platform-integrations.json +113 -17
  1163. package/src/components/docs/generated/docs-index.platform-knowledge.json +7 -7
  1164. package/src/components/docs/generated/docs-index.pocket-family-office.json +15 -15
  1165. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +1 -1
  1166. package/src/components/docs/generated/docs-index.saas-boilerplate.json +26 -26
  1167. package/src/components/docs/generated/docs-index.service-business-os.json +24 -24
  1168. package/src/components/docs/generated/docs-index.team-hub.json +23 -23
  1169. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +10 -10
  1170. package/src/components/docs/generated/docs-index.wealth-snapshot.json +19 -19
  1171. package/src/components/docs/generated/docs-index.workflow-system.json +54 -54
  1172. package/src/components/docs/generated/docs-index.workspace-cli.json +1 -1
  1173. package/tsdown.config.js +1 -2
  1174. package/.turbo/turbo-build$colon$bundle.log +0 -1052
  1175. package/dist/application/mcp/cliMcp.js.map +0 -1
  1176. package/dist/application/mcp/common.js.map +0 -1
  1177. package/dist/application/mcp/docsMcp.js.map +0 -1
  1178. package/dist/application/mcp/internalMcp.js.map +0 -1
  1179. package/dist/components/docs/DocsIndexPage.js.map +0 -1
  1180. package/dist/components/docs/advanced/AdvancedMCPPage.js.map +0 -1
  1181. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js.map +0 -1
  1182. package/dist/components/docs/advanced/AdvancedRenderersPage.js.map +0 -1
  1183. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js.map +0 -1
  1184. package/dist/components/docs/advanced/AdvancedTelemetryPage.js.map +0 -1
  1185. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js.map +0 -1
  1186. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js.map +0 -1
  1187. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js.map +0 -1
  1188. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js.map +0 -1
  1189. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js.map +0 -1
  1190. package/dist/components/docs/architecture/ArchitectureOverviewPage.js.map +0 -1
  1191. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js.map +0 -1
  1192. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js.map +0 -1
  1193. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js.map +0 -1
  1194. package/dist/components/docs/comparison/ComparisonOverviewPage.js.map +0 -1
  1195. package/dist/components/docs/comparison/ComparisonWindmillPage.js.map +0 -1
  1196. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js.map +0 -1
  1197. package/dist/components/docs/ecosystem/IntegrationsPage.js.map +0 -1
  1198. package/dist/components/docs/ecosystem/PluginsPage.js.map +0 -1
  1199. package/dist/components/docs/ecosystem/RegistryPage.js.map +0 -1
  1200. package/dist/components/docs/ecosystem/TemplatesPage.js.map +0 -1
  1201. package/dist/components/docs/ecosystem/ecosystem.docblocks.js.map +0 -1
  1202. package/dist/components/docs/examples/DocsExamplesPage.js.map +0 -1
  1203. package/dist/components/docs/generated/docs-index.generated.js.map +0 -1
  1204. package/dist/components/docs/generated/loader.js.map +0 -1
  1205. package/dist/components/docs/getting-started/CLIPage.js.map +0 -1
  1206. package/dist/components/docs/getting-started/CompatibilityPage.js.map +0 -1
  1207. package/dist/components/docs/getting-started/DataViewTutorialPage.js.map +0 -1
  1208. package/dist/components/docs/getting-started/DeveloperToolsPage.js.map +0 -1
  1209. package/dist/components/docs/getting-started/HelloWorldPage.js.map +0 -1
  1210. package/dist/components/docs/getting-started/InstallationPage.js.map +0 -1
  1211. package/dist/components/docs/getting-started/StartHerePage.js.map +0 -1
  1212. package/dist/components/docs/getting-started/TroubleshootingPage.js.map +0 -1
  1213. package/dist/components/docs/getting-started/VSCodeExtensionPage.js.map +0 -1
  1214. package/dist/components/docs/getting-started/getting-started.docblocks.js.map +0 -1
  1215. package/dist/components/docs/guides/GuideCIDiffGatingPage.js.map +0 -1
  1216. package/dist/components/docs/guides/GuideContractTypesPage.js.map +0 -1
  1217. package/dist/components/docs/guides/GuideDocsPipelinePage.js.map +0 -1
  1218. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js.map +0 -1
  1219. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js.map +0 -1
  1220. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js.map +0 -1
  1221. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js.map +0 -1
  1222. package/dist/components/docs/guides/GuidesIndexPage.js.map +0 -1
  1223. package/dist/components/docs/guides/guides.docblocks.js.map +0 -1
  1224. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js.map +0 -1
  1225. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js.map +0 -1
  1226. package/dist/components/docs/integrations/IntegrationsGmailPage.js.map +0 -1
  1227. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js.map +0 -1
  1228. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js.map +0 -1
  1229. package/dist/components/docs/integrations/IntegrationsOverviewPage.js.map +0 -1
  1230. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js.map +0 -1
  1231. package/dist/components/docs/integrations/IntegrationsPowensPage.js.map +0 -1
  1232. package/dist/components/docs/integrations/IntegrationsQdrantPage.js.map +0 -1
  1233. package/dist/components/docs/integrations/IntegrationsResendPage.js.map +0 -1
  1234. package/dist/components/docs/integrations/IntegrationsS3Page.js.map +0 -1
  1235. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js.map +0 -1
  1236. package/dist/components/docs/integrations/IntegrationsStripePage.js.map +0 -1
  1237. package/dist/components/docs/integrations/IntegrationsTwilioPage.js.map +0 -1
  1238. package/dist/components/docs/intent/ContractFirstApiPage.js.map +0 -1
  1239. package/dist/components/docs/intent/DeterministicCodegenPage.js.map +0 -1
  1240. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js.map +0 -1
  1241. package/dist/components/docs/intent/OpenapiAlternativePage.js.map +0 -1
  1242. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js.map +0 -1
  1243. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js.map +0 -1
  1244. package/dist/components/docs/intent/intent-pages.docblocks.js.map +0 -1
  1245. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js.map +0 -1
  1246. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js.map +0 -1
  1247. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js.map +0 -1
  1248. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js.map +0 -1
  1249. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js.map +0 -1
  1250. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js.map +0 -1
  1251. package/dist/components/docs/libraries/LibrariesAiAgentPage.js.map +0 -1
  1252. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js.map +0 -1
  1253. package/dist/components/docs/libraries/LibrariesContentGenPage.js.map +0 -1
  1254. package/dist/components/docs/libraries/LibrariesContractsPage.js.map +0 -1
  1255. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js.map +0 -1
  1256. package/dist/components/docs/libraries/LibrariesDataBackendPage.js.map +0 -1
  1257. package/dist/components/docs/libraries/LibrariesDataViewsPage.js.map +0 -1
  1258. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js.map +0 -1
  1259. package/dist/components/docs/libraries/LibrariesEvolutionPage.js.map +0 -1
  1260. package/dist/components/docs/libraries/LibrariesGraphQLPage.js.map +0 -1
  1261. package/dist/components/docs/libraries/LibrariesGrowthPage.js.map +0 -1
  1262. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js.map +0 -1
  1263. package/dist/components/docs/libraries/LibrariesObservabilityPage.js.map +0 -1
  1264. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js.map +0 -1
  1265. package/dist/components/docs/libraries/LibrariesOverviewPage.js.map +0 -1
  1266. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js.map +0 -1
  1267. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js.map +0 -1
  1268. package/dist/components/docs/libraries/LibrariesResiliencePage.js.map +0 -1
  1269. package/dist/components/docs/libraries/LibrariesRuntimePage.js.map +0 -1
  1270. package/dist/components/docs/libraries/LibrariesSLOPage.js.map +0 -1
  1271. package/dist/components/docs/libraries/LibrariesSchemaPage.js.map +0 -1
  1272. package/dist/components/docs/libraries/LibrariesSupportBotPage.js.map +0 -1
  1273. package/dist/components/docs/libraries/LibrariesTestingPage.js.map +0 -1
  1274. package/dist/components/docs/libraries/LibrariesUIKitPage.js.map +0 -1
  1275. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js.map +0 -1
  1276. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js.map +0 -1
  1277. package/dist/components/docs/manifesto/ManifestoPage.js.map +0 -1
  1278. package/dist/components/docs/ops/AutoEvolutionOpsPage.js.map +0 -1
  1279. package/dist/components/docs/ops/DistributedTracingOpsPage.js.map +0 -1
  1280. package/dist/components/docs/ops/ops-lifecycle.docblocks.js.map +0 -1
  1281. package/dist/components/docs/ops/ops-runbooks-a.docblocks.js.map +0 -1
  1282. package/dist/components/docs/ops/ops-runbooks-b.docblocks.js.map +0 -1
  1283. package/dist/components/docs/ops/ops-slo-tenant.docblocks.js.map +0 -1
  1284. package/dist/components/docs/ops/ops-top.docs.js.map +0 -1
  1285. package/dist/components/docs/ops/ops.docs.js.map +0 -1
  1286. package/dist/components/docs/product/product.docblocks.js.map +0 -1
  1287. package/dist/components/docs/reference/DocsMarkdownContent.js.map +0 -1
  1288. package/dist/components/docs/reference/DocsReferenceContent.js.map +0 -1
  1289. package/dist/components/docs/reference/DocsReferenceIndexClient.js.map +0 -1
  1290. package/dist/components/docs/reference/DocsReferenceIndexPage.js.map +0 -1
  1291. package/dist/components/docs/reference/DocsReferencePage.js.map +0 -1
  1292. package/dist/components/docs/reference/docsMarkdownParser.js.map +0 -1
  1293. package/dist/components/docs/safety/SafetyAuditingPage.js.map +0 -1
  1294. package/dist/components/docs/safety/SafetyMigrationsPage.js.map +0 -1
  1295. package/dist/components/docs/safety/SafetyOverviewPage.js.map +0 -1
  1296. package/dist/components/docs/safety/SafetyPDPPage.js.map +0 -1
  1297. package/dist/components/docs/safety/SafetySecurityTrustPage.js.map +0 -1
  1298. package/dist/components/docs/safety/SafetySigningPage.js.map +0 -1
  1299. package/dist/components/docs/safety/SafetyTenantIsolationPage.js.map +0 -1
  1300. package/dist/components/docs/shared/StudioPrompt.js.map +0 -1
  1301. package/dist/components/docs/specs/SpecsCapabilitiesPage.js.map +0 -1
  1302. package/dist/components/docs/specs/SpecsDataViewsPage.js.map +0 -1
  1303. package/dist/components/docs/specs/SpecsOverlaysPage.js.map +0 -1
  1304. package/dist/components/docs/specs/SpecsOverviewPage.js.map +0 -1
  1305. package/dist/components/docs/specs/SpecsPolicyPage.js.map +0 -1
  1306. package/dist/components/docs/specs/SpecsWorkflowsPage.js.map +0 -1
  1307. package/dist/components/docs/studio/StudioBYOKPage.js.map +0 -1
  1308. package/dist/components/docs/studio/StudioDeploymentsPage.js.map +0 -1
  1309. package/dist/components/docs/studio/StudioGettingStartedPage.js.map +0 -1
  1310. package/dist/components/docs/studio/StudioIntegrationsPage.js.map +0 -1
  1311. package/dist/components/docs/studio/StudioOverviewPage.js.map +0 -1
  1312. package/dist/components/docs/studio/StudioVisualBuilderPage.js.map +0 -1
  1313. package/dist/components/docs/tech/contracts/tech-docs.docblocks.js.map +0 -1
  1314. package/dist/components/integrations/molecules/IntegrationCard.js.map +0 -1
  1315. package/dist/components/integrations/organisms/IntegrationMarketplace.js.map +0 -1
  1316. package/dist/components/integrations/organisms/IntegrationSettings.js.map +0 -1
  1317. package/dist/components/integrations/organisms/KnowledgeSourceList.js.map +0 -1
  1318. package/dist/components/legal/PrivacyTemplate.js.map +0 -1
  1319. package/dist/components/legal/TermsTemplate.js.map +0 -1
  1320. package/dist/components/shared/FeatureGateNotice.js.map +0 -1
  1321. package/dist/components/shell/WorkspaceHeader.js.map +0 -1
  1322. package/dist/components/shell/WorkspaceProjectShellLayout.js.map +0 -1
  1323. package/dist/components/shell/WorkspaceSidebar.js.map +0 -1
  1324. package/dist/components/templates/engine/index.js.map +0 -1
  1325. package/dist/components/templates/messaging/ConversationList.js.map +0 -1
  1326. package/dist/components/templates/messaging/MessageComposer.js.map +0 -1
  1327. package/dist/components/templates/messaging/MessageThread.js.map +0 -1
  1328. package/dist/components/templates/messaging/MessagingWorkspace.js.map +0 -1
  1329. package/dist/components/templates/recipes/LanguageSwitcher.js.map +0 -1
  1330. package/dist/components/templates/recipes/RecipeCard.js.map +0 -1
  1331. package/dist/components/templates/recipes/RecipeDetail.js.map +0 -1
  1332. package/dist/components/templates/recipes/RecipeList.js.map +0 -1
  1333. package/dist/components/templates/todos/FilterBar.js.map +0 -1
  1334. package/dist/components/templates/todos/TaskForm.js.map +0 -1
  1335. package/dist/components/templates/todos/TaskItem.js.map +0 -1
  1336. package/dist/components/templates/todos/TaskList.js.map +0 -1
  1337. package/dist/config/contractspec-blueprint.js.map +0 -1
  1338. package/dist/config/contractspec-branding.js.map +0 -1
  1339. package/dist/config/contractspec-routes.js.map +0 -1
  1340. package/dist/features/contracts-registry.js.map +0 -1
  1341. package/dist/features/docs.feature.js.map +0 -1
  1342. package/dist/features/mcp.feature.js.map +0 -1
  1343. package/dist/features/presentations.feature.js.map +0 -1
  1344. package/dist/features/registry.js.map +0 -1
  1345. package/dist/infrastructure/elysia/logger.js.map +0 -1
  1346. package/dist/libs/content-gen/dist/seo/optimizer.js +0 -49
  1347. package/dist/libs/content-gen/dist/seo/optimizer.js.map +0 -1
  1348. package/dist/libs/email/client.js.map +0 -1
  1349. package/dist/libs/email/contact.js.map +0 -1
  1350. package/dist/libs/email/newsletter.js.map +0 -1
  1351. package/dist/libs/email/utils.js.map +0 -1
  1352. package/dist/libs/email/waitlist-application.js.map +0 -1
  1353. package/dist/libs/email/waitlist.js.map +0 -1
  1354. package/dist/libs/posthog/client.js.map +0 -1
  1355. package/dist/libs/posthog/native.js.map +0 -1
  1356. package/dist/libs/posthog/server.js.map +0 -1
  1357. package/dist/libs/pricing-examples.js.map +0 -1
  1358. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js.map +0 -1
  1359. package/dist/presentation/features/hooks/useContractsRegistry.js.map +0 -1
  1360. package/dist/presentation/features/hooks/useFeatureFilters.js.map +0 -1
  1361. package/dist/presentation/features/hooks/useFeatureRegistry.js.map +0 -1
  1362. package/dist/presentation/features/hooks/useRelatedDocs.js.map +0 -1
  1363. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js.map +0 -1
  1364. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js.map +0 -1
  1365. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js.map +0 -1
  1366. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js.map +0 -1
  1367. package/dist/presentation/features/organisms/FeatureDataViewsList.js.map +0 -1
  1368. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js.map +0 -1
  1369. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js.map +0 -1
  1370. package/dist/presentation/features/organisms/FeatureEventsList.js.map +0 -1
  1371. package/dist/presentation/features/organisms/FeatureFormsList.js.map +0 -1
  1372. package/dist/presentation/features/organisms/FeatureOperationsList.js.map +0 -1
  1373. package/dist/presentation/features/organisms/FeaturePresentationsList.js.map +0 -1
  1374. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js.map +0 -1
  1375. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js.map +0 -1
  1376. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js.map +0 -1
  1377. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js.map +0 -1
  1378. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js.map +0 -1
  1379. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js.map +0 -1
  1380. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js.map +0 -1
  1381. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js.map +0 -1
  1382. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js.map +0 -1
  1383. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js.map +0 -1
  1384. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js.map +0 -1
  1385. package/tsconfig.tsbuildinfo +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsCircuitBreakersPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsCircuitBreakersPage.tsx"],"sourcesContent":["// export const metadata: Metadata = {\n// title: 'Circuit Breakers for Integrations | ContractSpec',\n// description: 'How to wrap external integrations with circuit breakers.',\n// };\n\nexport function IntegrationsCircuitBreakersPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Integration Circuit Breakers</h1>\n <p className=\"text-muted-foreground text-lg\">\n External APIs are the most common source of instability. Wrap every\n integration call in a circuit breaker to protect your system.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Pattern</h2>\n <p>\n Create a dedicated circuit breaker instance for each external service.\n This ensures that a failure in Stripe doesn't trigger the circuit\n breaker for Twilio.\n </p>\n <pre className=\"bg-muted rounded-lg border p-4 text-sm\">\n {`// integrations/stripe.ts\nimport { CircuitBreaker } from '@contractspec/lib.resilience/circuit-breaker';\n\nconst stripeBreaker = new CircuitBreaker({\n failureThreshold: 10,\n resetTimeoutMs: 60000,\n});\n\nexport async function createCharge(amount: number) {\n return stripeBreaker.execute(() => stripe.charges.create({ amount }));\n}`}\n </pre>\n </div>\n </div>\n );\n}\n"],"mappings":";;;AAKA,SAAgB,kCAAkC;AAChD,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAqB;KAAiC,EACpE,oBAAC;IAAE,WAAU;cAAgC;KAGzC;IACA,EAEN,qBAAC;GAAI,WAAU;;IACb,oBAAC;KAAG,WAAU;eAAqB;MAAY;IAC/C,oBAAC,iBAAE,iKAIC;IACJ,oBAAC;KAAI,WAAU;eACZ;;;;;;;;;;;MAWG;;IACF;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsElevenLabsPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsElevenLabsPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'ElevenLabs Integration: ContractSpec Docs',\n// description:\n// 'Generate realistic text-to-speech audio with ElevenLabs in ContractSpec.',\n// };\n\nexport function IntegrationsElevenLabsPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">ElevenLabs</h1>\n <p className=\"text-muted-foreground\">\n ElevenLabs provides state-of-the-art text-to-speech and voice cloning\n technology. Create natural-sounding voiceovers, audiobooks, and voice\n assistants.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nELEVENLABS_API_KEY=...`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Text-to-Speech</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: elevenlabs-tts\nprovider:\n type: elevenlabs\n operation: textToSpeech\n\ninputs:\n text:\n type: string\n voiceId:\n type: string\n default: \"21m00Tcm4TlvDq8ikWAM\"\n modelId:\n type: string\n default: \"eleven_monolingual_v1\"\n\noutputs:\n audioUrl:\n type: string\n audioData:\n type: buffer`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Use cases</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Generate voiceovers for videos</li>\n <li>Create audio versions of articles</li>\n <li>Build voice assistants</li>\n <li>Produce audiobooks</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/openai\" className=\"btn-ghost\">\n Previous: OpenAI\n </Link>\n <Link href=\"/docs/integrations/qdrant\" className=\"btn-primary\">\n Next: Qdrant <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,6BAA6B;AAC3C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAe,EAClD,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAU,EAC7C,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;0BACc;MAChB;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;oBAmBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAc,EACjD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,mCAAmC;MACvC,oBAAC,kBAAG,sCAAsC;MAC1C,oBAAC,kBAAG,2BAA2B;MAC/B,oBAAC,kBAAG,uBAAuB;;MACxB;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA4B,WAAU;eAAY;MAEtD,EACP,qBAAC;KAAK,MAAK;KAA4B,WAAU;gBAAc,iBAChD,oBAAC,gBAAa,MAAM,KAAM;MAClC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsGmailPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsGmailPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Gmail API Integration: ContractSpec Docs',\n// description:\n// 'Process inbound emails and manage threads with Gmail API in ContractSpec.',\n// };\n\nexport function IntegrationsGmailPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Gmail API</h1>\n <p className=\"text-muted-foreground\">\n The Gmail API integration allows you to read inbound emails, manage\n threads, and build email-based workflows. Perfect for support tickets,\n email parsing, and automated responses.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <p className=\"text-muted-foreground\">\n Configure OAuth 2.0 credentials in Google Cloud Console:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nGOOGLE_CLIENT_ID=...\nGOOGLE_CLIENT_SECRET=...\nGOOGLE_REDIRECT_URI=https://your-app.com/auth/google/callback`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Reading emails</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: gmail-list-messages\nprovider:\n type: gmail\n operation: listMessages\n\ninputs:\n query:\n type: string\n description: \"Gmail search query\"\n maxResults:\n type: number\n default: 10\n\noutputs:\n messages:\n type: array\n items:\n type: object\n properties:\n id: string\n threadId: string\n snippet: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Use cases</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Parse support emails and create tickets</li>\n <li>Extract attachments and process them</li>\n <li>Build email-to-task workflows</li>\n <li>Monitor specific email threads</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/resend\" className=\"btn-ghost\">\n Previous: Resend\n </Link>\n <Link href=\"/docs/integrations/google-calendar\" className=\"btn-primary\">\n Next: Google Calendar <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,wBAAwB;AACtC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAc,EACjD,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAU;KAC7C,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;iEAGqD;OACvD;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;2BAqBe;MACjB;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAc,EACjD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,4CAA4C;MAChD,oBAAC,kBAAG,yCAAyC;MAC7C,oBAAC,kBAAG,kCAAkC;MACtC,oBAAC,kBAAG,mCAAmC;;MACpC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA4B,WAAU;eAAY;MAEtD,EACP,qBAAC;KAAK,MAAK;KAAqC,WAAU;gBAAc,0BAChD,oBAAC,gBAAa,MAAM,KAAM;MAC3C;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsGoogleCalendarPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsGoogleCalendarPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Google Calendar Integration: ContractSpec Docs',\n// description:\n// 'Schedule events and manage calendars with Google Calendar API in ContractSpec.',\n// };\n\nexport function IntegrationsGoogleCalendarPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Google Calendar</h1>\n <p className=\"text-muted-foreground\">\n Integrate Google Calendar to schedule appointments, manage\n availability, and sync events with your application.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nGOOGLE_CLIENT_ID=...\nGOOGLE_CLIENT_SECRET=...\nGOOGLE_CALENDAR_ID=primary`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Creating events</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: calendar-create-event\nprovider:\n type: google-calendar\n operation: createEvent\n\ninputs:\n summary:\n type: string\n description:\n type: string\n optional: true\n startTime:\n type: timestamp\n endTime:\n type: timestamp\n attendees:\n type: array\n items:\n type: string\n\noutputs:\n eventId:\n type: string\n htmlLink:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/gmail\" className=\"btn-ghost\">\n Previous: Gmail API\n </Link>\n <Link href=\"/docs/integrations/openai\" className=\"btn-primary\">\n Next: OpenAI <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,iCAAiC;AAC/C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB,EACvD,oBAAC;KAAE,WAAU;eAAwB;MAGjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAU,EAC7C,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;8BAGkB;MACpB;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB,EACvD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;oBAwBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA2B,WAAU;eAAY;MAErD,EACP,qBAAC;KAAK,MAAK;KAA4B,WAAU;gBAAc,iBAChD,oBAAC,gBAAa,MAAM,KAAM;MAClC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsOpenAIPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsOpenAIPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'OpenAI Integration: ContractSpec Docs',\n// description:\n// 'Use GPT models, embeddings, and Whisper speech-to-text with OpenAI in ContractSpec.',\n// };\n\nexport function IntegrationsOpenAIPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">OpenAI</h1>\n <p className=\"text-muted-foreground\">\n Integrate OpenAI's powerful AI models for chat completion, embeddings,\n and speech-to-text. Build intelligent features with GPT-4, generate\n embeddings for semantic search, and transcribe audio with Whisper.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nOPENAI_API_KEY=sk-...\nOPENAI_ORGANIZATION=org-...`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Chat completions</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: openai-chat\nprovider:\n type: openai\n operation: chatCompletion\n\ninputs:\n messages:\n type: array\n items:\n type: object\n properties:\n role: string\n content: string\n model:\n type: string\n default: \"gpt-4\"\n temperature:\n type: number\n default: 0.7\n optional: true\n\noutputs:\n content:\n type: string\n usage:\n type: object`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Embeddings</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: openai-embeddings\nprovider:\n type: openai\n operation: createEmbedding\n\ninputs:\n text:\n type: string\n model:\n type: string\n default: \"text-embedding-3-small\"\n\noutputs:\n embedding:\n type: array\n items:\n type: number`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Whisper (Speech-to-Text)</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: openai-transcribe\nprovider:\n type: openai\n operation: transcribe\n\ninputs:\n audioFile:\n type: file\n language:\n type: string\n optional: true\n\noutputs:\n text:\n type: string\n language:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Use streaming for real-time chat responses</li>\n <li>Cache embeddings to reduce API costs</li>\n <li>Implement rate limiting to avoid quota issues</li>\n <li>Store conversation history for context</li>\n <li>Monitor token usage and costs</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/google-calendar\" className=\"btn-ghost\">\n Previous: Google Calendar\n </Link>\n <Link href=\"/docs/integrations/elevenlabs\" className=\"btn-primary\">\n Next: ElevenLabs <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAW,EAC9C,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAU,EAC7C,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;+BAEmB;MACrB;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAqB,EACxD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;oBAyBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAe,EAClD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;sBAgBU;MACZ;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA6B,EAChE,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;oBAgBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,+CAA+C;MACnD,oBAAC,kBAAG,yCAAyC;MAC7C,oBAAC,kBAAG,kDAAkD;MACtD,oBAAC,kBAAG,2CAA2C;MAC/C,oBAAC,kBAAG,kCAAkC;;MACnC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAqC,WAAU;eAAY;MAE/D,EACP,qBAAC;KAAK,MAAK;KAAgC,WAAU;gBAAc,qBAChD,oBAAC,gBAAa,MAAM,KAAM;MACtC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsOverviewPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsOverviewPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Integrations: ContractSpec Docs',\n// description:\n// 'Connect ContractSpec to payments, email, AI, storage, and other services through built-in integrations.',\n// };\n\nexport function IntegrationsOverviewPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Integrations</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec provides first-class integration support through a\n spec-first architecture. Integrations are defined globally, connected\n per-tenant, and bound to apps through typed specifications, ensuring\n type-safe, policy-enforced access to external services.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Spec-first architecture</h2>\n <p className=\"text-muted-foreground\">\n Integrations in ContractSpec follow a three-layer model:\n </p>\n <div className=\"space-y-3\">\n <div className=\"card-subtle p-4\">\n <h3 className=\"mb-2 font-semibold\">1. IntegrationSpec (Global)</h3>\n <p className=\"text-muted-foreground text-sm\">\n Defines what an integration provides: capabilities, configuration\n schema, secrets, webhooks, and requirements.\n </p>\n <Link\n href=\"/docs/integrations/spec-model\"\n className=\"mt-2 inline-block text-sm text-violet-400 hover:text-violet-300\"\n >\n Learn more →\n </Link>\n </div>\n <div className=\"card-subtle p-4\">\n <h3 className=\"mb-2 font-semibold\">\n 2. IntegrationConnection (Per-Tenant)\n </h3>\n <p className=\"text-muted-foreground text-sm\">\n A tenant's configured connection with credentials, environment\n (sandbox/production), and health status.\n </p>\n <Link\n href=\"/docs/architecture/integration-binding\"\n className=\"mt-2 inline-block text-sm text-violet-400 hover:text-violet-300\"\n >\n Learn more →\n </Link>\n </div>\n <div className=\"card-subtle p-4\">\n <h3 className=\"mb-2 font-semibold\">\n 3. AppIntegrationBinding (Per-App)\n </h3>\n <p className=\"text-muted-foreground text-sm\">\n Maps tenant connections to app capabilities and workflows,\n defining which operations can use which integrations.\n </p>\n <Link\n href=\"/docs/architecture/integration-binding\"\n className=\"mt-2 inline-block text-sm text-violet-400 hover:text-violet-300\"\n >\n Learn more →\n </Link>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Integration categories</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`type IntegrationCategory =\n | \"payments\" // Stripe\n | \"email\" // Postmark, Resend, Gmail\n | \"calendar\" // Google Calendar\n | \"sms\" // Twilio\n | \"ai-llm\" // OpenAI\n | \"ai-voice\" // ElevenLabs\n | \"speech-to-text\" // OpenAI Whisper\n | \"vector-db\" // Qdrant\n | \"storage\" // S3-compatible\n | \"open-banking\" // Powens (read-only)\n | \"accounting\" // Coming soon\n | \"crm\" // Coming soon\n | \"helpdesk\" // Coming soon\n | \"custom\"; // User-defined`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Available integrations</h2>\n <div className=\"space-y-6\">\n {/* Payments */}\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">Payments</h3>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Link\n href=\"/docs/integrations/stripe\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Stripe\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Payment processing, subscriptions, and invoicing\n </p>\n </Link>\n </div>\n </div>\n\n {/* Open Banking */}\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">Open Banking</h3>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Link\n href=\"/docs/integrations/powens\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Powens (Read-Only)\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Account, transaction, and balance synchronisation via Powens\n with tenant-owned credentials.\n </p>\n </Link>\n </div>\n </div>\n\n {/* Email */}\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">Email</h3>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Link\n href=\"/docs/integrations/postmark\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Postmark\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Transactional email delivery with high deliverability\n </p>\n </Link>\n <Link\n href=\"/docs/integrations/resend\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Resend\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Modern email API for developers\n </p>\n </Link>\n <Link\n href=\"/docs/integrations/gmail\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Gmail API\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Inbound email processing and thread management\n </p>\n </Link>\n </div>\n </div>\n\n {/* Calendar & Scheduling */}\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">Calendar & Scheduling</h3>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Link\n href=\"/docs/integrations/google-calendar\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Google Calendar\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Event scheduling and calendar management\n </p>\n </Link>\n </div>\n </div>\n\n {/* AI & Machine Learning */}\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">AI & Machine Learning</h3>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Link\n href=\"/docs/integrations/openai\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n OpenAI\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n LLMs, embeddings, and Whisper speech-to-text\n </p>\n </Link>\n <Link\n href=\"/docs/integrations/elevenlabs\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n ElevenLabs\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Text-to-speech and voice synthesis\n </p>\n </Link>\n <Link\n href=\"/docs/integrations/qdrant\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Qdrant\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Vector database for semantic search and RAG\n </p>\n </Link>\n </div>\n </div>\n\n {/* Storage */}\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">Storage</h3>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Link\n href=\"/docs/integrations/s3\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n S3-Compatible Storage\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n Object storage (AWS S3, Scaleway, MinIO, etc.)\n </p>\n </Link>\n </div>\n </div>\n\n {/* SMS */}\n <div className=\"space-y-3\">\n <h3 className=\"text-xl font-semibold\">SMS & Messaging</h3>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Link\n href=\"/docs/integrations/twilio\"\n className=\"card-subtle group p-4 transition-colors hover:border-violet-500/50\"\n >\n <h4 className=\"font-bold transition-colors group-hover:text-violet-400\">\n Twilio\n </h4>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n SMS notifications and messaging\n </p>\n </Link>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">How integrations work</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec integrations are implemented as{' '}\n <Link\n href=\"/docs/specs/capabilities\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n capability providers\n </Link>\n . This means:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Type safety</strong> – All API calls are type-checked by\n TypeScript and validated at runtime via Zod\n </li>\n <li>\n <strong>Policy enforcement</strong> – Access to external services is\n governed by your{' '}\n <Link\n href=\"/docs/specs/policy\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n PolicySpecs\n </Link>\n </li>\n <li>\n <strong>Audit logging</strong> – All integration calls are\n automatically logged\n </li>\n <li>\n <strong>Error handling</strong> – Built-in retries and fallback\n strategies\n </li>\n <li>\n <strong>Environment-based config</strong> – API keys and secrets are\n managed through environment variables\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Secret management</h2>\n <p className=\"text-muted-foreground\">\n Secrets are resolved through a layered secret provider manager. It\n checks lightweight environment overrides first, then falls back to a\n managed vault (Google Cloud Secret Manager) for production.\n </p>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <div className=\"card-subtle p-4\">\n <h3 className=\"text-xl font-semibold\">Environment variables</h3>\n <p className=\"text-muted-foreground mt-2 text-sm\">\n Perfect for local development and secure staging overrides. Use\n the <code>env://</code> scheme or append <code>?env=</code> to\n another reference to map an explicit variable.\n </p>\n <div className=\"bg-background/60 border-border mt-3 overflow-auto rounded-lg border p-3 font-mono text-xs\">\n <pre className=\"whitespace-pre-wrap\">{`# Override a production secret locally\nCONTRACTSPEC__SECRET__STRIPE=sk_test_123\n\n# Reference\nenv://CONTRACTSPEC__SECRET__STRIPE`}</pre>\n </div>\n </div>\n <div className=\"card-subtle p-4\">\n <h3 className=\"text-xl font-semibold\">GCP Secret Manager</h3>\n <p className=\"text-muted-foreground mt-2 text-sm\">\n Used in production to store versioned credentials with rotation\n support. References follow the{' '}\n <code>gcp://projects/.../secrets/.../versions/latest</code>{' '}\n format.\n </p>\n <div className=\"bg-background/60 border-border mt-3 overflow-auto rounded-lg border p-3 font-mono text-xs\">\n <pre className=\"whitespace-pre-wrap\">{`# Production reference\ngcp://projects/tenant/secrets/stripe-secret-key/versions/latest`}</pre>\n </div>\n </div>\n </div>\n <p className=\"text-muted-foreground text-sm\">\n The secret manager chooses the first provider that can resolve a\n reference, so local environment variables can override the managed\n vault without changing blueprints or tenant configs.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Configuration</h2>\n <p className=\"text-muted-foreground\">\n Integrations are configured through environment variables and secret\n references. Here's a typical setup:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nSTRIPE_SECRET_KEY=sk_test_...\nSTRIPE_WEBHOOK_SECRET=whsec_...\n\nPOSTMARK_API_TOKEN=...\nPOSTMARK_FROM_EMAIL=noreply@example.com\n\nOPENAI_API_KEY=sk-...\nOPENAI_ORGANIZATION=org-...\n\nQDRANT_URL=https://...\nQDRANT_API_KEY=...\n\nS3_ENDPOINT=https://s3.fr-par.scw.cloud\nS3_ACCESS_KEY_ID=...\nS3_SECRET_ACCESS_KEY=...\nS3_BUCKET=my-bucket\nS3_REGION=fr-par\n\n# Secret references\nSTRIPE_SECRET_REF=gcp://projects/tenant/secrets/stripe-secret-key/versions/latest\nSTRIPE_SECRET_OVERRIDE=env://STRIPE_SECRET_KEY`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Integration categories</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec supports the following integration categories:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`type IntegrationCategory =\n | \"payments\" // Stripe, PayPal, etc.\n | \"email\" // Postmark, Resend, Gmail\n | \"calendar\" // Google Calendar, Outlook\n | \"sms\" // Twilio, MessageBird\n | \"ai-llm\" // OpenAI, Anthropic, Cohere\n | \"ai-voice\" // ElevenLabs, Google TTS\n | \"speech-to-text\" // OpenAI Whisper, Google STT\n | \"vector-db\" // Qdrant, Pinecone, Weaviate\n | \"storage\" // S3, GCS, Azure Blob\n | \"accounting\" // QuickBooks, Xero (coming soon)\n | \"crm\" // Salesforce, HubSpot (coming soon)\n | \"helpdesk\" // Zendesk, Intercom (coming soon)\n | \"custom\"; // Your own integrations`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Custom integrations</h2>\n <p className=\"text-muted-foreground\">\n You can create custom integrations by implementing a capability\n provider. See the{' '}\n <Link\n href=\"/docs/advanced/custom-providers\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Custom Providers\n </Link>{' '}\n guide for details.\n </p>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/stripe\" className=\"btn-primary\">\n Get Started with Stripe <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsPostmarkPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsPostmarkPage.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape */\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Postmark Integration: ContractSpec Docs',\n// description:\n// 'Send transactional emails with high deliverability using Postmark in ContractSpec.',\n// };\n\nexport function IntegrationsPostmarkPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Postmark</h1>\n <p className=\"text-muted-foreground\">\n Postmark is a transactional email service with industry-leading\n deliverability. Use it to send order confirmations, password resets,\n notifications, and other critical emails.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <p className=\"text-muted-foreground\">\n Add your Postmark credentials to your environment variables:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nPOSTMARK_API_TOKEN=...\nPOSTMARK_FROM_EMAIL=noreply@example.com\nPOSTMARK_FROM_NAME=\"Your App Name\"`}</pre>\n </div>\n <p className=\"text-muted-foreground text-sm\">\n Get your API token from the{' '}\n <a\n href=\"https://account.postmarkapp.com/servers\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Postmark Dashboard\n </a>\n .\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Sending emails</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: send-email\nprovider:\n type: postmark\n operation: sendEmail\n\ninputs:\n to:\n type: string\n description: \"Recipient email address\"\n subject:\n type: string\n htmlBody:\n type: string\n optional: true\n textBody:\n type: string\n optional: true\n templateId:\n type: string\n optional: true\n templateData:\n type: object\n optional: true\n\noutputs:\n messageId:\n type: string\n submittedAt:\n type: timestamp`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Using templates</h2>\n <p className=\"text-muted-foreground\">\n Postmark templates allow you to design emails in their dashboard and\n populate them with data:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: send-welcome-email\nprovider:\n type: postmark\n operation: sendEmail\n\ninputs:\n to:\n type: string\n userName:\n type: string\n\nconfig:\n templateId: \"welcome-email\"\n templateData:\n user_name: \\$\\{input.userName\\}\n login_url: \"https://app.example.com/login\"`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Webhooks</h2>\n <p className=\"text-muted-foreground\">\n Postmark can notify your app about delivery, bounces, and opens:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`https://your-app.com/api/webhooks/postmark`}</pre>\n </div>\n <p className=\"text-muted-foreground\">\n ContractSpec automatically processes these webhook events:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Delivery</strong> – Email was successfully delivered\n </li>\n <li>\n <strong>Bounce</strong> – Email bounced (hard or soft)\n </li>\n <li>\n <strong>SpamComplaint</strong> – Recipient marked email as spam\n </li>\n <li>\n <strong>Open</strong> – Recipient opened the email\n </li>\n <li>\n <strong>Click</strong> – Recipient clicked a link\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Use templates for consistent branding</li>\n <li>Always provide both HTML and plain text versions</li>\n <li>Monitor bounce rates and remove invalid addresses</li>\n <li>Use message streams to separate different email types</li>\n <li>Test emails in the Postmark sandbox before going live</li>\n <li>Set up DKIM and SPF records for your domain</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/stripe\" className=\"btn-ghost\">\n Previous: Stripe\n </Link>\n <Link href=\"/docs/integrations/resend\" className=\"btn-primary\">\n Next: Resend <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAUA,SAAgB,2BAA2B;AACzC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAa,EAChD,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAU;KAC7C,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;sCAG0B;OAC5B;KACN,qBAAC;MAAE,WAAU;;OAAgC;OACf;OAC5B,oBAAC;QACC,MAAK;QACL,QAAO;QACP,KAAI;QACJ,WAAU;kBACX;SAEG;;;OAEF;;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA4BW;MACb;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAoB;KACvD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;kDAesC;OACxC;;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAa;KAChD,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK,+CAAmD;OACrD;KACN,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,aAAiB,2CACtB;OACL,qBAAC,mBACC,oBAAC,sBAAO,WAAe,uCACpB;OACL,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,yCAC3B;OACL,qBAAC,mBACC,oBAAC,sBAAO,SAAa,qCAClB;OACL,qBAAC,mBACC,oBAAC,sBAAO,UAAc,mCACnB;;OACF;;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,0CAA0C;MAC9C,oBAAC,kBAAG,qDAAqD;MACzD,oBAAC,kBAAG,sDAAsD;MAC1D,oBAAC,kBAAG,0DAA0D;MAC9D,oBAAC,kBAAG,0DAA0D;MAC9D,oBAAC,kBAAG,gDAAgD;;MACjD;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA4B,WAAU;eAAY;MAEtD,EACP,qBAAC;KAAK,MAAK;KAA4B,WAAU;gBAAc,iBAChD,oBAAC,gBAAa,MAAM,KAAM;MAClC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsPowensPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsPowensPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Powens Open Banking: ContractSpec Docs',\n// description:\n// 'Synchronise bank accounts, transactions, and balances with Powens in read-only mode for the Pocket Family Office vertical.',\n// };\n\nexport function IntegrationsPowensPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Powens Open Banking</h1>\n <p className=\"text-muted-foreground\">\n Powens provides read-only open banking connectivity for ContractSpec\n applications. The reference integration powers Pocket Family Office by\n synchronising household bank accounts, transactions, and balances\n while keeping all raw PII protected.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <p className=\"text-muted-foreground\">\n Create a Powens BYOK project, then store the credentials in your\n secret manager. The ContractSpec integration expects the following\n fields:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`{\n \"clientId\": \"powens-client-id\",\n \"clientSecret\": \"powens-client-secret\",\n \"apiKey\": \"optional-api-key\",\n \"webhookSecret\": \"optional-webhook-secret\"\n}`}</pre>\n </div>\n <p className=\"text-muted-foreground text-sm\">\n Configure non-secret settings on the integration connection:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`environment: sandbox | production\nbaseUrl?: https://api-sandbox.powens.com/v2\nregion?: eu-west-1\npollingIntervalMs?: 300000`}</pre>\n </div>\n <p className=\"text-muted-foreground text-sm\">\n See the{' '}\n <a\n href=\"https://docs.powens.com/documentation/integration-guides/quick-start/api-overview\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Powens API documentation\n </a>{' '}\n for information on generating credentials and managing BYOK projects.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Capabilities</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: openbanking.accounts.read\nprovider:\n type: openbanking.powens\n operation: listAccounts\n\noutputs:\n accounts:\n type: BankAccountRecord[]\n description: \"Canonical bank account metadata (institution, currency, balances)\"\n\n---\n\ncapabilityId: openbanking.transactions.read\nprovider:\n type: openbanking.powens\n operation: listTransactions\n\ninputs:\n accountId:\n type: string\n from?:\n type: string\n description: \"ISO timestamp lower bound\"\n to?:\n type: string\n\noutputs:\n transactions:\n type: BankTransactionRecord[]\n description: \"Canonical transaction ledger entries\"\n\n---\n\ncapabilityId: openbanking.balances.read\nprovider:\n type: openbanking.powens\n operation: getBalances\n\ninputs:\n accountId:\n type: string\n balanceTypes?:\n type: string[]\n\noutputs:\n balances:\n type: AccountBalanceRecord[]\n description: \"Current/available balances with timestamps\"`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Primary workflows</h2>\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">Account sync</h3>\n <p className=\"text-muted-foreground\">\n The workflow{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n pfo.workflow.sync-openbanking-accounts\n </code>{' '}\n refreshes account metadata, then surfaces canonical records to other\n automations.\n </p>\n </div>\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">Transaction sync</h3>\n <p className=\"text-muted-foreground\">\n <code className=\"bg-background/50 rounded px-2 py-1\">\n pfo.workflow.sync-openbanking-transactions\n </code>{' '}\n ingests incremental transactions for each linked account and stores\n them in the canonical ledger.\n </p>\n </div>\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">Balance refresh</h3>\n <p className=\"text-muted-foreground\">\n <code className=\"bg-background/50 rounded px-2 py-1\">\n pfo.workflow.refresh-openbanking-balances\n </code>{' '}\n retrieves current and available balances to power dashboards and\n anomaly detection.\n </p>\n </div>\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">Derived financial overview</h3>\n <p className=\"text-muted-foreground\">\n <code className=\"bg-background/50 rounded px-2 py-1\">\n pfo.workflow.generate-openbanking-overview\n </code>{' '}\n aggregates balances, category breakdowns, and cashflow trends into\n the <code>knowledge.financial-overview</code> space. Only derived\n summaries are exposed to LLMs.\n </p>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Telemetry & guardrails</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Telemetry events such as{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n openbanking.accounts.synced\n </code>{' '}\n and{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n openbanking.transactions.synced\n </code>{' '}\n are emitted automatically with tenant, slot, and config metadata.\n </li>\n <li>\n Guard helpers ensure the{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n primaryOpenBanking\n </code>{' '}\n slot is bound and healthy before workflows execute.\n </li>\n <li>\n PII fields (IBAN, counterparty names, descriptions) are redacted via{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n redactOpenBankingTelemetryPayload\n </code>{' '}\n before logging or sending telemetry.\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Use BYOK credentials per tenant to avoid cross-tenant exposure.\n </li>\n <li>\n Store only canonical entities (BankAccountRecord,\n BankTransactionRecord). Never persist raw Powens payloads or\n customer PII in logs.\n </li>\n <li>\n Run the transaction sync on a schedule appropriate for banking SLAs\n (e.g. every 15 minutes for cashflow dashboards).\n </li>\n <li>\n Pair ledger updates with derived summaries to feed the knowledge\n layer instead of exposing raw transactions to agents.\n </li>\n <li>\n Monitor telemetry for{' '}\n <code className=\"bg-background/50 rounded px-2 py-1\">\n openbanking.*.sync_failed\n </code>{' '}\n events to detect credential issues early.\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations\" className=\"btn-ghost\">\n Back to Integrations\n </Link>\n <Link href=\"/docs/integrations/stripe\" className=\"btn-primary\">\n Next: Stripe <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsQdrantPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsQdrantPage.tsx"],"sourcesContent":["/* eslint-disable no-useless-escape */\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Qdrant Integration: ContractSpec Docs',\n// description:\n// 'Build semantic search and RAG applications with Qdrant vector database in ContractSpec.',\n// };\n\nexport function IntegrationsQdrantPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Qdrant</h1>\n <p className=\"text-muted-foreground\">\n Qdrant is a high-performance vector database for semantic search,\n recommendations, and RAG (Retrieval-Augmented Generation)\n applications.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nQDRANT_URL=https://...\nQDRANT_API_KEY=...\nQDRANT_COLLECTION=documents`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Storing vectors</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: qdrant-upsert\nprovider:\n type: qdrant\n operation: upsert\n\ninputs:\n collection:\n type: string\n points:\n type: array\n items:\n type: object\n properties:\n id: string\n vector: array\n payload: object\n\noutputs:\n status:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Semantic search</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: qdrant-search\nprovider:\n type: qdrant\n operation: search\n\ninputs:\n collection:\n type: string\n vector:\n type: array\n items:\n type: number\n limit:\n type: number\n default: 10\n\noutputs:\n results:\n type: array\n items:\n type: object\n properties:\n id: string\n score: number\n payload: object`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">RAG workflow example</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`workflowId: rag-query\nversion: '1.0.0'.0.0\n\nsteps:\n - id: generate-embedding\n capability: openai-embeddings\n inputs:\n text: \\$\\{input.query\\}\n\n - id: search-documents\n capability: qdrant-search\n inputs:\n collection: \"documents\"\n vector: \\$\\{steps.generate-embedding.output.embedding\\}\n limit: 5\n\n - id: generate-answer\n capability: openai-chat\n inputs:\n messages:\n - role: \"system\"\n content: \"Answer based on the context provided\"\n - role: \"user\"\n content: |\n Context: \\$\\{steps.search-documents.output.results\\}\n Question: \\$\\{input.query\\}`}</pre>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/elevenlabs\" className=\"btn-ghost\">\n Previous: ElevenLabs\n </Link>\n <Link href=\"/docs/integrations/s3\" className=\"btn-primary\">\n Next: S3 Storage <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAUA,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAW,EAC9C,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAU,EAC7C,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;+BAGmB;MACrB;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB,EACvD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;oBAmBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB,EACvD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;2BAwBe;MACjB;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAyB,EAC5D,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;2CAyB+B;MACjC;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAgC,WAAU;eAAY;MAE1D,EACP,qBAAC;KAAK,MAAK;KAAwB,WAAU;gBAAc,qBACxC,oBAAC,gBAAa,MAAM,KAAM;MACtC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsResendPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsResendPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Resend Integration: ContractSpec Docs',\n// description:\n// \"Send transactional emails with Resend's modern API in ContractSpec.\",\n// };\n\nexport function IntegrationsResendPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Resend</h1>\n <p className=\"text-muted-foreground\">\n Resend is a modern email API built for developers. It provides a\n simple, reliable way to send transactional emails with React Email\n templates.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nRESEND_API_KEY=re_...\nRESEND_FROM_EMAIL=onboarding@resend.dev`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Sending emails</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: resend-send-email\nprovider:\n type: resend\n operation: sendEmail\n\ninputs:\n to:\n type: string\n subject:\n type: string\n html:\n type: string\n text:\n type: string\n optional: true\n replyTo:\n type: string\n optional: true\n\noutputs:\n id:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Use React Email for type-safe templates</li>\n <li>Verify your domain for better deliverability</li>\n <li>Monitor email analytics in the Resend dashboard</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/postmark\" className=\"btn-ghost\">\n Previous: Postmark\n </Link>\n <Link href=\"/docs/integrations/gmail\" className=\"btn-primary\">\n Next: Gmail API <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAW,EAC9C,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAU,EAC7C,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;2CAE+B;MACjC;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;oBAqBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,4CAA4C;MAChD,oBAAC,kBAAG,iDAAiD;MACrD,oBAAC,kBAAG,oDAAoD;;MACrD;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA8B,WAAU;eAAY;MAExD,EACP,qBAAC;KAAK,MAAK;KAA2B,WAAU;gBAAc,oBAC5C,oBAAC,gBAAa,MAAM,KAAM;MACrC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsS3Page.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsS3Page.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'S3-Compatible Storage Integration: ContractSpec Docs',\n// description:\n// 'Store and retrieve files with S3-compatible object storage in ContractSpec.',\n// };\n\nexport function IntegrationsS3Page() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">S3-Compatible Storage</h1>\n <p className=\"text-muted-foreground\">\n Store files, images, and documents using any S3-compatible object\n storage service including AWS S3, Scaleway Object Storage, MinIO,\n DigitalOcean Spaces, and more.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nS3_ENDPOINT=https://s3.fr-par.scw.cloud\nS3_ACCESS_KEY_ID=...\nS3_SECRET_ACCESS_KEY=...\nS3_BUCKET=my-bucket\nS3_REGION=fr-par`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Uploading files</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: s3-upload\nprovider:\n type: s3\n operation: upload\n\ninputs:\n key:\n type: string\n description: \"File path in bucket\"\n file:\n type: file\n contentType:\n type: string\n optional: true\n metadata:\n type: object\n optional: true\n\noutputs:\n url:\n type: string\n etag:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Generating presigned URLs</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: s3-presigned-url\nprovider:\n type: s3\n operation: getPresignedUrl\n\ninputs:\n key:\n type: string\n expiresIn:\n type: number\n default: 3600\n description: \"Expiration in seconds\"\n\noutputs:\n url:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Use presigned URLs for secure, temporary access</li>\n <li>Set appropriate CORS policies for browser uploads</li>\n <li>Enable versioning for important files</li>\n <li>Use lifecycle policies to archive old files</li>\n <li>Organize files with a clear key structure</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/qdrant\" className=\"btn-ghost\">\n Previous: Qdrant\n </Link>\n <Link href=\"/docs/integrations/twilio\" className=\"btn-primary\">\n Next: Twilio <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,qBAAqB;AACnC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA0B,EAC7D,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAU,EAC7C,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;oBAKQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB,EACvD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;oBAsBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA8B,EACjE,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;oBAeQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,oDAAoD;MACxD,oBAAC,kBAAG,sDAAsD;MAC1D,oBAAC,kBAAG,0CAA0C;MAC9C,oBAAC,kBAAG,gDAAgD;MACpD,oBAAC,kBAAG,8CAA8C;;MAC/C;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA4B,WAAU;eAAY;MAEtD,EACP,qBAAC;KAAK,MAAK;KAA4B,WAAU;gBAAc,iBAChD,oBAAC,gBAAa,MAAM,KAAM;MAClC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsSpecModelPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsSpecModelPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Integration Spec Model: ContractSpec Docs',\n// description:\n// 'Learn about IntegrationSpec and IntegrationConnection in ContractSpec.',\n// };\n\nexport function IntegrationsSpecModelPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Integration Spec Model</h1>\n <p className=\"text-muted-foreground\">\n Integrations in ContractSpec are defined through typed specifications\n that declare capabilities, configuration requirements, and connection\n details. This page covers IntegrationSpec and IntegrationConnection.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">IntegrationSpec</h2>\n <p className=\"text-muted-foreground\">\n The <strong>IntegrationSpec</strong> is a global definition of an\n integration provider. It declares what the integration provides and\n what it requires.\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`type IntegrationSpec = {\n id: string;\n label: string;\n description: string;\n category: IntegrationCategory;\n \n // Capabilities this integration provides\n providesCapabilities: {\n capabilityId: string;\n operation: string;\n description: string;\n }[];\n \n // Dependencies\n requirements: {\n capabilities?: string[]; // e.g., [\"billing.core\", \"auth.session\"]\n minVersion?: string;\n };\n \n // Configuration schema (non-secret)\n configSchema: {\n [key: string]: {\n type: string;\n description: string;\n required?: boolean;\n default?: unknown;\n };\n };\n \n // Secret schema (for keys, tokens)\n secretSchema: {\n [key: string]: {\n type: string;\n description: string;\n required: boolean;\n };\n };\n \n // Webhook support\n webhooks?: {\n supported: boolean;\n events: string[];\n signatureHeader?: string;\n };\n \n // Documentation\n docsUrl?: string;\n setupGuideUrl?: string;\n \n // Metadata\n version: string;\n createdAt: string;\n updatedAt: string;\n};`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example: Stripe IntegrationSpec</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`{\n id: \"stripe\",\n label: \"Stripe\",\n description: \"Payment processing and subscription management\",\n category: \"payments\",\n \n providesCapabilities: [\n {\n capabilityId: \"payments.createPaymentIntent\",\n operation: \"createPaymentIntent\",\n description: \"Create a payment intent for checkout\"\n },\n {\n capabilityId: \"payments.createSubscription\",\n operation: \"createSubscription\",\n description: \"Create a recurring subscription\"\n },\n {\n capabilityId: \"payments.refund\",\n operation: \"refund\",\n description: \"Refund a payment\"\n }\n ],\n \n requirements: {\n capabilities: [\"billing.core\"],\n minVersion: \"1.0.0\"\n },\n \n configSchema: {\n webhookUrl: {\n type: \"string\",\n description: \"URL to receive Stripe webhooks\",\n required: false\n }\n },\n \n secretSchema: {\n apiKey: {\n type: \"string\",\n description: \"Stripe secret API key (sk_...)\",\n required: true\n },\n webhookSecret: {\n type: \"string\",\n description: \"Webhook signing secret (whsec_...)\",\n required: false\n }\n },\n \n webhooks: {\n supported: true,\n events: [\n \"payment_intent.succeeded\",\n \"payment_intent.payment_failed\",\n \"customer.subscription.created\",\n \"customer.subscription.updated\",\n \"customer.subscription.deleted\"\n ],\n signatureHeader: \"stripe-signature\"\n },\n \n docsUrl: \"https://docs.contractspec.com/integrations/stripe\",\n setupGuideUrl: \"https://stripe.com/docs/keys\",\n version: \"1.0.0\"\n}`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">IntegrationConnection</h2>\n <p className=\"text-muted-foreground\">\n An <strong>IntegrationConnection</strong> is a per-tenant instance of\n an integration with configured credentials and environment settings.\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`type IntegrationConnection = {\n id: string;\n tenantId: string;\n integrationId: string;\n \n // Environment\n environment: \"sandbox\" | \"production\";\n \n // Configuration (non-secret)\n config: Record<string, unknown>;\n \n // Secret reference (encrypted, never exposed)\n secretRef: string;\n \n // Status\n status: \"connected\" | \"disconnected\" | \"error\";\n lastHealthCheck?: string;\n lastHealthCheckStatus?: \"success\" | \"failure\";\n lastErrorMessage?: string;\n \n // Metadata\n createdAt: string;\n updatedAt: string;\n createdBy: string;\n};`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n Example: Stripe IntegrationConnection\n </h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`// Production connection\n{\n id: \"conn_stripe_acme_prod\",\n tenantId: \"acme-corp\",\n integrationId: \"stripe\",\n environment: \"production\",\n config: {\n webhookUrl: \"https://acme.app/webhooks/stripe\"\n },\n secretRef: \"secret_stripe_acme_prod_v1\",\n status: \"connected\",\n lastHealthCheck: \"2025-01-15T10:30:00Z\",\n lastHealthCheckStatus: \"success\",\n createdAt: \"2025-01-01T00:00:00Z\",\n updatedAt: \"2025-01-15T10:30:00Z\",\n createdBy: \"admin@acme.com\"\n}\n\n// Sandbox connection\n{\n id: \"conn_stripe_acme_test\",\n tenantId: \"acme-corp\",\n integrationId: \"stripe\",\n environment: \"sandbox\",\n config: {\n webhookUrl: \"https://sandbox.acme.app/webhooks/stripe\"\n },\n secretRef: \"secret_stripe_acme_test_v1\",\n status: \"connected\",\n lastHealthCheck: \"2025-01-15T10:25:00Z\",\n lastHealthCheckStatus: \"success\",\n createdAt: \"2025-01-01T00:00:00Z\",\n updatedAt: \"2025-01-15T10:25:00Z\",\n createdBy: \"dev@acme.com\"\n}`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Health checks</h2>\n <p className=\"text-muted-foreground\">\n IntegrationConnections are periodically health-checked to ensure they\n remain valid:\n </p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>API key validation</strong> - Test that credentials are\n still valid\n </li>\n <li>\n <strong>Connectivity check</strong> - Verify network access to the\n provider\n </li>\n <li>\n <strong>Permission verification</strong> - Ensure required scopes\n are granted\n </li>\n <li>\n <strong>Webhook validation</strong> - Test webhook endpoint\n reachability\n </li>\n </ul>\n <p className=\"text-muted-foreground\">\n Failed health checks update the connection status to \"error\" and\n trigger alerts.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Secret management</h2>\n <p className=\"text-muted-foreground\">\n Secrets (API keys, tokens) are never stored in plaintext:\n </p>\n <ol className=\"text-muted-foreground list-inside list-decimal space-y-2\">\n <li>User provides secrets through secure UI or API</li>\n <li>Secrets are encrypted using tenant-specific keys</li>\n <li>\n Encrypted secrets are stored in secure vault (e.g., AWS Secrets\n Manager)\n </li>\n <li>IntegrationConnection stores only a reference (secretRef)</li>\n <li>At runtime, secrets are decrypted on-demand and never logged</li>\n </ol>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Always maintain separate sandbox and production connections</li>\n <li>\n Use descriptive connection IDs that include tenant and environment\n </li>\n <li>Monitor health check status and set up alerts for failures</li>\n <li>Rotate secrets regularly and update secretRef accordingly</li>\n <li>Document the purpose and ownership of each connection</li>\n <li>Test connections in sandbox before enabling in production</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations\" className=\"btn-ghost\">\n Back to Integrations\n </Link>\n <Link\n href=\"/docs/architecture/integration-binding\"\n className=\"btn-primary\"\n >\n Integration Binding <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,4BAA4B;AAC1C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA2B,EAC9D,oBAAC;KAAE,WAAU;eAAwB;MAIjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAoB;KACvD,qBAAC;MAAE,WAAU;;OAAwB;OAC/B,oBAAC,sBAAO,oBAAwB;;;OAGlC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqDN;OACI;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoC,EACvE,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiEP;MACK;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAA0B;KAC7D,qBAAC;MAAE,WAAU;;OAAwB;OAChC,oBAAC,sBAAO,0BAA8B;;;OAEvC;KACJ,oBAAC;MAAI,WAAU;gBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;MAwBN;OACI;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAE9B,EACL,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCP;MACK;KACF;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAkB;KACrD,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,gDAEhC;OACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,gDAEhC;OACL,qBAAC,mBACC,oBAAC,sBAAO,4BAAgC,6CAErC;OACL,qBAAC,mBACC,oBAAC,sBAAO,uBAA2B,6CAEhC;;OACF;KACL,oBAAC;MAAE,WAAU;gBAAwB;OAGjC;;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBAAqB;OAAsB;KACzD,oBAAC;MAAE,WAAU;gBAAwB;OAEjC;KACJ,qBAAC;MAAG,WAAU;;OACZ,oBAAC,kBAAG,mDAAmD;OACvD,oBAAC,kBAAG,qDAAqD;OACzD,oBAAC,kBAAG,6EAGC;OACL,oBAAC,kBAAG,8DAA8D;OAClE,oBAAC,kBAAG,iEAAiE;;OAClE;;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,gEAAgE;MACpE,oBAAC,kBAAG,uEAEC;MACL,oBAAC,kBAAG,+DAA+D;MACnE,oBAAC,kBAAG,8DAA8D;MAClE,oBAAC,kBAAG,0DAA0D;MAC9D,oBAAC,kBAAG,8DAA8D;;MAC/D;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAqB,WAAU;eAAY;MAE/C,EACP,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,wBACqB,oBAAC,gBAAa,MAAM,KAAM;MACzC;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsStripePage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsStripePage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Stripe Integration: ContractSpec Docs',\n// description:\n// 'Accept payments, manage subscriptions, and handle invoicing with Stripe in ContractSpec.',\n// };\n\nexport function IntegrationsStripePage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Stripe</h1>\n <p className=\"text-muted-foreground\">\n The Stripe integration enables payment processing, subscription\n management, and invoicing in your ContractSpec applications. All\n Stripe operations are type-safe, policy-enforced, and automatically\n logged.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <p className=\"text-muted-foreground\">\n Add your Stripe credentials to your environment variables:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nSTRIPE_SECRET_KEY=sk_test_...\nSTRIPE_PUBLISHABLE_KEY=pk_test_...\nSTRIPE_WEBHOOK_SECRET=whsec_...`}</pre>\n </div>\n <p className=\"text-muted-foreground text-sm\">\n Get your API keys from the{' '}\n <a\n href=\"https://dashboard.stripe.com/apikeys\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-violet-400 hover:text-violet-300\"\n >\n Stripe Dashboard\n </a>\n .\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Available capabilities</h2>\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">Payment Intents</h3>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: stripe-create-payment-intent\nprovider:\n type: stripe\n operation: createPaymentIntent\n\ninputs:\n amount:\n type: number\n description: \"Amount in cents\"\n currency:\n type: string\n default: \"usd\"\n customerId:\n type: string\n optional: true\n metadata:\n type: object\n optional: true\n\noutputs:\n paymentIntentId:\n type: string\n clientSecret:\n type: string\n status:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">Customers</h3>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: stripe-create-customer\nprovider:\n type: stripe\n operation: createCustomer\n\ninputs:\n email:\n type: string\n name:\n type: string\n optional: true\n metadata:\n type: object\n optional: true\n\noutputs:\n customerId:\n type: string\n email:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold\">Subscriptions</h3>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: stripe-create-subscription\nprovider:\n type: stripe\n operation: createSubscription\n\ninputs:\n customerId:\n type: string\n priceId:\n type: string\n trialDays:\n type: number\n optional: true\n\noutputs:\n subscriptionId:\n type: string\n status:\n type: string\n currentPeriodEnd:\n type: timestamp`}</pre>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Webhooks</h2>\n <p className=\"text-muted-foreground\">\n ContractSpec automatically handles Stripe webhooks. Configure your\n webhook endpoint in the Stripe Dashboard:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`https://your-app.com/api/webhooks/stripe`}</pre>\n </div>\n <p className=\"text-muted-foreground\">Subscribe to these events:</p>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">\n payment_intent.succeeded\n </code>\n </li>\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">\n payment_intent.payment_failed\n </code>\n </li>\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">\n customer.subscription.created\n </code>\n </li>\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">\n customer.subscription.updated\n </code>\n </li>\n <li>\n <code className=\"bg-background/50 rounded px-2 py-1\">\n customer.subscription.deleted\n </code>\n </li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Example workflow</h2>\n <p className=\"text-muted-foreground\">\n Here's a complete payment workflow using Stripe:\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`workflowId: process-payment\nversion: '1.0.0'.0.0\n\nsteps:\n - id: create-customer\n capability: stripe-create-customer\n inputs:\n email: $\\{input.customerEmail}\n name: $\\{input.customerName}\n onSuccess: create-payment-intent\n onFailure: notify-error\n\n - id: create-payment-intent\n capability: stripe-create-payment-intent\n inputs:\n amount: $\\{input.amount}\n currency: \"usd\"\n customerId: $\\{steps.create-customer.output.customerId}\n onSuccess: send-payment-link\n onFailure: notify-error\n\n - id: send-payment-link\n capability: send-email\n inputs:\n to: $\\{input.customerEmail}\n template: \"payment-link\"\n data:\n clientSecret: $\\{steps.create-payment-intent.output.clientSecret}\n amount: $\\{input.amount}\n\n - id: notify-error\n capability: send-email\n inputs:\n to: \"admin@example.com\"\n template: \"payment-error\"\n data:\n error: $\\{error.message}`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Testing</h2>\n <p className=\"text-muted-foreground\">\n Use Stripe's test cards for development:\n </p>\n <div className=\"border-border/50 overflow-x-auto rounded-lg border\">\n <table className=\"w-full text-left text-sm\">\n <thead className=\"bg-card/50\">\n <tr className=\"border-border/50 border-b\">\n <th className=\"px-4 py-3 font-semibold\">Card Number</th>\n <th className=\"px-4 py-3 font-semibold\">Scenario</th>\n </tr>\n </thead>\n <tbody className=\"divide-border/50 divide-y\">\n <tr>\n <td className=\"px-4 py-3 font-mono\">4242 4242 4242 4242</td>\n <td className=\"px-4 py-3\">Successful payment</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-mono\">4000 0000 0000 9995</td>\n <td className=\"px-4 py-3\">Insufficient funds</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-mono\">4000 0000 0000 0002</td>\n <td className=\"px-4 py-3\">Card declined</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Always use test mode during development</li>\n <li>Verify webhook signatures to prevent fraud</li>\n <li>Handle idempotency for payment operations</li>\n <li>Store customer IDs for recurring payments</li>\n <li>\n Use metadata to link Stripe objects to your application records\n </li>\n <li>Monitor failed payments and retry logic</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations\" className=\"btn-ghost\">\n Back to Integrations\n </Link>\n <Link href=\"/docs/integrations/postmark\" className=\"btn-primary\">\n Next: Postmark <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntegrationsTwilioPage.js","names":[],"sources":["../../../../src/components/docs/integrations/IntegrationsTwilioPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\n\n// export const metadata = {\n// title: 'Twilio Integration: ContractSpec Docs',\n// description:\n// 'Send SMS notifications and messages with Twilio in ContractSpec.',\n// };\n\nexport function IntegrationsTwilioPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Twilio</h1>\n <p className=\"text-muted-foreground\">\n Send SMS notifications, alerts, and two-factor authentication codes\n using Twilio's reliable messaging platform.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Setup</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`# .env\nTWILIO_ACCOUNT_SID=...\nTWILIO_AUTH_TOKEN=...\nTWILIO_PHONE_NUMBER=+1234567890`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Sending SMS</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`capabilityId: twilio-send-sms\nprovider:\n type: twilio\n operation: sendSMS\n\ninputs:\n to:\n type: string\n description: \"Phone number in E.164 format\"\n body:\n type: string\n description: \"Message content (max 1600 chars)\"\n\noutputs:\n messageSid:\n type: string\n status:\n type: string`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Use cases</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Order confirmations and shipping updates</li>\n <li>Two-factor authentication codes</li>\n <li>Appointment reminders</li>\n <li>Alert notifications</li>\n </ul>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>Always use E.164 format for phone numbers (+1234567890)</li>\n <li>Keep messages under 160 characters to avoid splitting</li>\n <li>Implement rate limiting to prevent spam</li>\n <li>Handle delivery failures gracefully</li>\n <li>Respect opt-out requests</li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/integrations/s3\" className=\"btn-ghost\">\n Previous: S3 Storage\n </Link>\n <Link href=\"/docs/integrations\" className=\"btn-primary\">\n Back to Integrations\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AAQA,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAW,EAC9C,oBAAC;KAAE,WAAU;eAAwB;MAGjC;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAU,EAC7C,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;mCAGuB;MACzB;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAgB,EACnD,oBAAC;KAAI,WAAU;eACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;oBAiBQ;MACV;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAc,EACjD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,6CAA6C;MACjD,oBAAC,kBAAG,oCAAoC;MACxC,oBAAC,kBAAG,0BAA0B;MAC9B,oBAAC,kBAAG,wBAAwB;;MACzB;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAmB,EACtD,qBAAC;KAAG,WAAU;;MACZ,oBAAC,kBAAG,4DAA4D;MAChE,oBAAC,kBAAG,0DAA0D;MAC9D,oBAAC,kBAAG,4CAA4C;MAChD,oBAAC,kBAAG,wCAAwC;MAC5C,oBAAC,kBAAG,6BAA6B;;MAC9B;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAAwB,WAAU;eAAY;MAElD,EACP,oBAAC;KAAK,MAAK;KAAqB,WAAU;eAAc;MAEjD;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContractFirstApiPage.js","names":[],"sources":["../../../../src/components/docs/intent/ContractFirstApiPage.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport { contractFirstApiBrief } from '@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks';\nimport { SeoOptimizer } from '@contractspec/lib.content-gen/seo';\nimport { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport const metadata: Metadata = new SeoOptimizer().optimize(\n contractFirstApiBrief\n);\n\nexport function ContractFirstApiPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-3\">\n <h1 className=\"text-4xl font-bold\">{contractFirstApiBrief.title}</h1>\n <p className=\"text-muted-foreground text-lg\">\n {contractFirstApiBrief.summary}\n </p>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Problems Solved</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {contractFirstApiBrief.problems.map((problem, index) => (\n <li key={index}>{problem}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Solutions</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {contractFirstApiBrief.solutions.map((solution, index) => (\n <li key={index}>{solution}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Quick Start</h2>\n <p className=\"text-muted-foreground text-sm\">\n Define your first API contract and generate consistent\n implementations.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"src/contracts/user-create.operation.ts\"\n code={`import { defineOperation } from '@contractspec/lib.contracts/operations';\nimport { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\nexport const CreateUserOperation = defineOperation({\n goal: 'Create a new user account with validation',\n context: 'Used by frontend registration forms and internal admin tools',\n input: new SchemaModel({\n type: 'object',\n properties: {\n email: {\n type: 'string',\n format: 'email',\n required: true,\n },\n password: {\n type: 'string',\n minLength: 8,\n required: true,\n },\n },\n }),\n output: new SchemaModel({\n type: 'object',\n properties: {\n id: { type: 'string', required: true },\n email: { type: 'string', required: true },\n createdAt: { type: 'string', format: 'date-time', required: true },\n },\n }),\n metadata: {\n name: 'createUser',\n tags: ['users', 'auth'],\n description: 'Create a new user account with email and password',\n },\n});`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Generate OpenAPI</h2>\n <p className=\"text-muted-foreground text-sm\">\n Export OpenAPI documentation directly from your contracts.\n </p>\n <CodeBlock\n language=\"bash\"\n filename=\"export-openapi\"\n code={`contractspec openapi export \\\\\n --registry ./src/contracts/registry.ts \\\\\n --out ./openapi.json`}\n />\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/guides/nextjs-one-endpoint\" className=\"btn-primary\">\n Next.js Guide <ChevronRight size={16} />\n </Link>\n <Link href=\"/docs/intent/spec-driven-development\" className=\"btn-ghost\">\n Spec-driven Development\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,MAAa,WAAqB,IAAI,cAAc,CAAC,SACnD,sBACD;AAED,SAAgB,uBAAuB;AACrC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAsB,sBAAsB;MAAW,EACrE,oBAAC;KAAE,WAAU;eACV,sBAAsB;MACrB;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAoB,EACvD,oBAAC;KAAG,WAAU;eACX,sBAAsB,SAAS,KAAK,SAAS,UAC5C,oBAAC,kBAAgB,WAAR,MAAqB,CAC9B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAc,EACjD,oBAAC;KAAG,WAAU;eACX,sBAAsB,UAAU,KAAK,UAAU,UAC9C,oBAAC,kBAAgB,YAAR,MAAsB,CAC/B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAqB;QAAgB;MACnD,oBAAC;OAAE,WAAU;iBAAgC;QAGzC;MACJ,oBAAC;OACC,UAAS;OACT,UAAS;OACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmCN;;MACE,EAEN,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAqB;QAAqB;MACxD,oBAAC;OAAE,WAAU;iBAAgC;QAEzC;MACJ,oBAAC;OACC,UAAS;OACT,UAAS;OACT,MAAM;;;QAGN;;MACE;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KAAK,MAAK;KAAmC,WAAU;gBAAc,kBACtD,oBAAC,gBAAa,MAAM,KAAM;MACnC,EACP,oBAAC;KAAK,MAAK;KAAuC,WAAU;eAAY;MAEjE;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeterministicCodegenPage.js","names":[],"sources":["../../../../src/components/docs/intent/DeterministicCodegenPage.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport { deterministicCodegenBrief } from '@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks';\nimport { SeoOptimizer } from '@contractspec/lib.content-gen/seo';\n\nexport const metadata: Metadata = new SeoOptimizer().optimize(\n deterministicCodegenBrief\n);\nimport { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport function DeterministicCodegenPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-3\">\n <h1 className=\"text-4xl font-bold\">\n {deterministicCodegenBrief.title}\n </h1>\n <p className=\"text-muted-foreground text-lg\">\n {deterministicCodegenBrief.summary}\n </p>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Regeneration Challenges</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {deterministicCodegenBrief.problems.map((problem, index) => (\n <li key={index}>{problem}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Deterministic Solutions</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {deterministicCodegenBrief.solutions.map((solution, index) => (\n <li key={index}>{solution}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Protected Zones</h2>\n <p className=\"text-muted-foreground text-sm\">\n Separate generated code from hand-written business logic with clear\n boundaries.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"src/handlers/user-handlers.ts\"\n code={`// Hand-written business logic (protected from regeneration)\nexport class UserService {\n async createUser(input: CreateUserInput): Promise<CreateUserOutput> {\n // Custom validation and business rules\n if (await this.emailExists(input.email)) {\n throw new Error('Email already exists');\n }\n \n // Persistence logic\n const user = await this.repository.create({\n email: input.email,\n name: input.name,\n password: await this.hashPassword(input.password),\n });\n \n return {\n id: user.id,\n email: user.email,\n name: user.name,\n createdAt: user.createdAt.toISOString(),\n };\n }\n \n private async emailExists(email: string): Promise<boolean> {\n // Custom business validation\n return !!(await this.repository.findByEmail(email));\n }\n}\n\n// Generated handler wrapper (can be regenerated safely)\nexport const createUserHandler = wrapOperationHandler(\n UserService.prototype.createUser,\n {\n serviceName: 'UserService',\n operationName: 'createUser',\n errorMapper: mapToStandardErrors,\n }\n);`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Incremental Regeneration</h2>\n <p className=\"text-muted-foreground text-sm\">\n Regenerate only what changed while preserving custom logic.\n </p>\n <CodeBlock\n language=\"bash\"\n filename=\"incremental-regen\"\n code={`contractspec generate \\\\\n --incremental \\\\\n --preserve-zones ./src/handlers/*.ts \\\\\n --input ./src/contracts/ \\\\\n --output ./generated/`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Conflict Detection</h2>\n <p className=\"text-muted-foreground text-sm\">\n Automatically detect and report conflicts during regeneration.\n </p>\n <CodeBlock\n language=\"bash\"\n filename=\"check-conflicts\"\n code={`contractspec generate \\\\\n --check-conflicts \\\\\n --report-conflicts ./conflicts.json`}\n />\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link\n href=\"/docs/guides/generate-docs-clients-schemas\"\n className=\"btn-primary\"\n >\n Client Generation <ChevronRight size={16} />\n </Link>\n <Link\n href=\"/docs/intent/schema-validation-typescript\"\n className=\"btn-ghost\"\n >\n Type Safety\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAIA,MAAa,WAAqB,IAAI,cAAc,CAAC,SACnD,0BACD;AAKD,SAAgB,2BAA2B;AACzC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eACX,0BAA0B;MACxB,EACL,oBAAC;KAAE,WAAU;eACV,0BAA0B;MACzB;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA4B,EAC/D,oBAAC;KAAG,WAAU;eACX,0BAA0B,SAAS,KAAK,SAAS,UAChD,oBAAC,kBAAgB,WAAR,MAAqB,CAC9B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA4B,EAC/D,oBAAC;KAAG,WAAU;eACX,0BAA0B,UAAU,KAAK,UAAU,UAClD,oBAAC,kBAAgB,YAAR,MAAsB,CAC/B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAoB;OACvD,oBAAC;QAAE,WAAU;kBAAgC;SAGzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAsCN;;OACE;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAA6B;OAChE,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;SAKN;;OACE;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAuB;OAC1D,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;SAGN;;OACE;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,sBACmB,oBAAC,gBAAa,MAAM,KAAM;MACvC,EACP,oBAAC;KACC,MAAK;KACL,WAAU;eACX;MAEM;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GenerateClientFromSchemaPage.js","names":[],"sources":["../../../../src/components/docs/intent/GenerateClientFromSchemaPage.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport { generateClientFromSchemaBrief } from '@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks';\nimport { SeoOptimizer } from '@contractspec/lib.content-gen/seo';\nimport { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport const metadata: Metadata = new SeoOptimizer().optimize(\n generateClientFromSchemaBrief\n);\n\nexport function GenerateClientFromSchemaPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-3\">\n <h1 className=\"text-4xl font-bold\">\n {generateClientFromSchemaBrief.title}\n </h1>\n <p className=\"text-muted-foreground text-lg\">\n {generateClientFromSchemaBrief.summary}\n </p>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Client Development Problems</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {generateClientFromSchemaBrief.problems.map((problem, index) => (\n <li key={index}>{problem}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Automated Solutions</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {generateClientFromSchemaBrief.solutions.map((solution, index) => (\n <li key={index}>{solution}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Contract Definition</h2>\n <p className=\"text-muted-foreground text-sm\">\n Define your API contract once, generate clients for any language.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"src/contracts/api.contract.ts\"\n code={`import { defineContract } from '@contractspec/lib.contracts';\nimport { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\nexport const ApiContract = defineContract({\n name: 'MyAPI',\n version: '1.0.0',\n baseUrl: 'https://api.example.com',\n operations: {\n getUsers: {\n goal: 'Retrieve paginated list of users',\n method: 'GET',\n path: '/users',\n input: new SchemaModel({\n type: 'object',\n properties: {\n page: { type: 'integer', minimum: 1, default: 1 },\n limit: { type: 'integer', minimum: 1, maximum: 100, default: 20 },\n },\n }),\n output: new SchemaModel({\n type: 'object',\n properties: {\n users: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string', required: true },\n email: { type: 'string', required: true },\n name: { type: 'string', required: true },\n },\n },\n },\n pagination: {\n type: 'object',\n properties: {\n page: { type: 'integer', required: true },\n limit: { type: 'integer', required: true },\n total: { type: 'integer', required: true },\n },\n },\n },\n }),\n },\n createUser: {\n goal: 'Create a new user account',\n method: 'POST',\n path: '/users',\n input: new SchemaModel({\n type: 'object',\n properties: {\n email: { type: 'string', format: 'email', required: true },\n name: { type: 'string', minLength: 1, required: true },\n },\n }),\n output: new SchemaModel({\n type: 'object',\n properties: {\n id: { type: 'string', required: true },\n email: { type: 'string', required: true },\n name: { type: 'string', required: true },\n createdAt: { type: 'string', format: 'date-time', required: true },\n },\n }),\n },\n },\n metadata: {\n description: 'User management API with authentication',\n tags: ['users', 'authentication'],\n },\n});`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Generate Multiple Clients</h2>\n <p className=\"text-muted-foreground text-sm\">\n Generate type-safe clients for any language from the same contract.\n </p>\n <CodeBlock\n language=\"bash\"\n filename=\"generate-clients\"\n code={`# Generate all supported language clients\ncontractspec generate clients \\\\\n --contract ./src/contracts/api.contract.ts \\\\\n --output ./generated/clients \\\\\n --languages typescript,python,go,java,csharp\n\n# Generate specific language client\ncontractspec generate clients \\\\\n --contract ./src/contracts/api.contract.ts \\\\\n --output ./generated/clients \\\\\n --languages typescript \\\\\n --format npm-package\n\n# Options\n# --with-types: Include TypeScript definitions\n# --with-tests: Generate client test suites\n# --with-docs: Include client documentation\n# --framework: Use specific HTTP client framework`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Generated Client Examples</h2>\n <p className=\"text-muted-foreground text-sm\">\n Each generated client is fully type-safe and idiomatic.\n </p>\n\n <div className=\"space-y-4\">\n <div className=\"card-subtle p-4\">\n <h4 className=\"text-lg font-semibold\">TypeScript Client</h4>\n <CodeBlock\n language=\"typescript\"\n filename=\"generated/clients/typescript/index.ts\"\n code={`import { MyAPIClient } from './client';\n\nconst client = new MyAPIClient({\n baseUrl: 'https://api.example.com',\n apiKey: process.env.API_KEY,\n});\n\n// Type-safe method calls\nconst users = await client.getUsers({\n page: 1,\n limit: 10,\n});\n\nconst newUser = await client.createUser({\n email: 'user@example.com',\n name: 'John Doe',\n});\n\n// Full type inference\n// users: GetUsersResponse\n// newUser: CreateUserResponse`}\n />\n </div>\n\n <div className=\"card-subtle p-4\">\n <h4 className=\"text-lg font-semibold\">Python Client</h4>\n <CodeBlock\n language=\"python\"\n filename=\"generated/clients/python/index.py\"\n code={`from myapi_client import MyAPIClient\n\nclient = MyAPIClient(\n base_url='https://api.example.com',\n api_key=os.getenv('API_KEY')\n)\n\n# Type-safe method calls\nusers = await client.get_users(\n page=1,\n limit=10\n)\n\nnew_user = await client.create_user(\n email='user@example.com',\n name='John Doe'\n)\n\n# Full type hints\n# users: GetUsersResponse\n# new_user: CreateUserResponse`}\n />\n </div>\n\n <div className=\"card-subtle p-4\">\n <h4 className=\"text-lg font-semibold\">Go Client</h4>\n <CodeBlock\n language=\"go\"\n filename=\"generated/clients/go/client.go\"\n code={`package main\n\nimport (\n \"context\"\n \"myapi_client\"\n)\n\nfunc main() {\n client := myapi_client.NewMyAPIClient(\n myapi_client.WithBaseURL(\"https://api.example.com\"),\n myapi_client.WithAPIKey(os.Getenv(\"API_KEY\")),\n )\n \n // Type-safe method calls\n users, err := client.GetUsers(&myapi_client.GetUsersParams{\n Page: 1,\n Limit: 10,\n })\n \n newUser, err := client.CreateUser(&myapi_client.CreateUserParams{\n Email: \"user@example.com\",\n Name: \"John Doe\",\n })\n \n // Full type checking at compile time\n // users: *GetUsersResponse\n // newUser: *CreateUserResponse\n}`}\n />\n </div>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Advanced Features</h2>\n <p className=\"text-muted-foreground text-sm\">\n Generated clients include enterprise-grade features out of the box.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"client-features.ts\"\n code={`// Advanced client features\nconst client = new MyAPIClient({\n baseUrl: 'https://api.example.com',\n apiKey: 'your-api-key',\n \n // Retry configuration\n retryConfig: {\n maxRetries: 3,\n backoffMultiplier: 2,\n maxDelay: 30000,\n },\n \n // Request/Response interceptors\n interceptors: {\n request: [(config) => {\n // Add authentication headers\n config.headers.Authorization = \\`Bearer \\${await getAuthToken()}\\`;\n return config;\n }],\n response: [(response) => {\n // Log API calls\n console.log(\\`API Call: \\${response.config.method} \\${response.config.url}\\`);\n return response;\n }],\n },\n \n // Error handling\n errorHandler: (error) => {\n if (error.status === 401) {\n // Refresh token and retry\n return refreshTokenAndRetry(error.originalRequest);\n }\n throw error;\n },\n});\n\n// Automatic request deduplication\nconst user1 = client.getUser({ id: '123' });\nconst user2 = client.getUser({ id: '123' }); // Uses cached result\n\n// Request cancellation\nconst controller = new AbortController();\nconst promise = client.getUsers({ page: 1, signal: controller.signal });\ncontroller.abort(); // Cancels the request`}\n />\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link\n href=\"/docs/guides/generate-docs-clients-schemas\"\n className=\"btn-primary\"\n >\n Client Generation Guide <ChevronRight size={16} />\n </Link>\n <Link href=\"/docs/intent/contract-first-api\" className=\"btn-ghost\">\n Contract-first API\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,MAAa,WAAqB,IAAI,cAAc,CAAC,SACnD,8BACD;AAED,SAAgB,+BAA+B;AAC7C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eACX,8BAA8B;MAC5B,EACL,oBAAC;KAAE,WAAU;eACV,8BAA8B;MAC7B;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAgC,EACnE,oBAAC;KAAG,WAAU;eACX,8BAA8B,SAAS,KAAK,SAAS,UACpD,oBAAC,kBAAgB,WAAR,MAAqB,CAC9B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAwB,EAC3D,oBAAC;KAAG,WAAU;eACX,8BAA8B,UAAU,KAAK,UAAU,UACtD,oBAAC,kBAAgB,YAAR,MAAsB,CAC/B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAwB;OAC3D,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAuEN;;OACE;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAA8B;OACjE,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;SAkBN;;OACE;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAA8B;OACjE,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OAEJ,qBAAC;QAAI,WAAU;;SACb,qBAAC;UAAI,WAAU;qBACb,oBAAC;WAAG,WAAU;qBAAwB;YAAsB,EAC5D,oBAAC;WACC,UAAS;WACT,UAAS;WACT,MAAM;;;;;;;;;;;;;;;;;;;;;YAqBN;WACE;SAEN,qBAAC;UAAI,WAAU;qBACb,oBAAC;WAAG,WAAU;qBAAwB;YAAkB,EACxD,oBAAC;WACC,UAAS;WACT,UAAS;WACT,MAAM;;;;;;;;;;;;;;;;;;;;;YAqBN;WACE;SAEN,qBAAC;UAAI,WAAU;qBACb,oBAAC;WAAG,WAAU;qBAAwB;YAAc,EACpD,oBAAC;WACC,UAAS;WACT,UAAS;WACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA4BN;WACE;;SACF;;OACF;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAsB;OACzD,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA4CN;;OACE;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,4BACyB,oBAAC,gBAAa,MAAM,KAAM;MAC7C,EACP,oBAAC;KAAK,MAAK;KAAkC,WAAU;eAAY;MAE5D;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenapiAlternativePage.js","names":[],"sources":["../../../../src/components/docs/intent/OpenapiAlternativePage.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport { openapiAlternativeBrief } from '@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks';\nimport { SeoOptimizer } from '@contractspec/lib.content-gen/seo';\nimport { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport const metadata: Metadata = new SeoOptimizer().optimize(\n openapiAlternativeBrief\n);\n\nexport function OpenapiAlternativePage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-3\">\n <h1 className=\"text-4xl font-bold\">{openapiAlternativeBrief.title}</h1>\n <p className=\"text-muted-foreground text-lg\">\n {openapiAlternativeBrief.summary}\n </p>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">OpenAPI Limitations</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {openapiAlternativeBrief.problems.map((problem, index) => (\n <li key={index}>{problem}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">ContractSpec Advantages</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {openapiAlternativeBrief.solutions.map((solution, index) => (\n <li key={index}>{solution}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">\n Comparison: OpenAPI vs ContractSpec\n </h2>\n <p className=\"text-muted-foreground text-sm\">\n Key differences between OpenAPI documentation and ContractSpec\n executable contracts.\n </p>\n\n <div className=\"grid gap-6 md:grid-cols-2\">\n <div className=\"card-subtle space-y-3 p-4\">\n <h3 className=\"text-lg font-semibold\">OpenAPI</h3>\n <ul className=\"text-muted-foreground space-y-1 text-sm\">\n <li>• Documentation specification only</li>\n <li>• No runtime validation</li>\n <li>• Manual code generation</li>\n <li>• Type safety requires tools</li>\n <li>• Separate schemas from documentation</li>\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-3 p-4\">\n <h3 className=\"text-lg font-semibold\">ContractSpec</h3>\n <ul className=\"text-muted-foreground space-y-1 text-sm\">\n <li>• Executable contracts</li>\n <li>• Built-in runtime validation</li>\n <li>• Automatic code generation</li>\n <li>• Type-safe by default</li>\n <li>• Unified spec and implementation</li>\n </ul>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Export from Contracts</h2>\n <p className=\"text-muted-foreground text-sm\">\n Generate OpenAPI documentation from ContractSpec for existing\n tooling.\n </p>\n <CodeBlock\n language=\"bash\"\n filename=\"export-openapi\"\n code={`# From ContractSpec contracts\ncontractspec openapi export \\\\\n --registry ./src/contracts/registry.ts \\\\\n --format yaml \\\\\n --out ./openapi.yaml\n\n# Compare: Manual OpenAPI vs Generated\n# Manual: Write OpenAPI by hand, maintain separately\n# Generated: Single source of truth, always in sync`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Beyond Documentation</h2>\n <p className=\"text-muted-foreground text-sm\">\n ContractSpec provides more than just API documentation.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"multi-output-example.ts\"\n code={`// One contract, multiple outputs\nimport { UserApiContract } from './contracts/user-api.contract';\n\n// Generated outputs\nexport const outputs = {\n // API documentation (OpenAPI)\n openapi: UserApiContract.toOpenAPI(),\n \n // Client SDKs (TypeScript, Python, etc.)\n clients: UserApiContract.generateClients({\n languages: ['typescript', 'python', 'go'],\n }),\n \n // Database schemas (Prisma, Drizzle)\n database: UserApiContract.toDatabase({\n adapter: 'prisma',\n }),\n \n // API handlers (Express, Fastify, Next.js)\n handlers: UserApiContract.toHandlers({\n framework: 'express',\n }),\n \n // Validation middleware\n validation: UserApiContract.toValidation({\n library: 'zod',\n }),\n \n // Type definitions\n types: UserApiContract.toTypescript(),\n};`}\n />\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link\n href=\"/docs/guides/generate-docs-clients-schemas\"\n className=\"btn-primary\"\n >\n Generate from Contracts <ChevronRight size={16} />\n </Link>\n <Link\n href=\"/docs/intent/generate-client-from-schema\"\n className=\"btn-ghost\"\n >\n Client Generation\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,MAAa,WAAqB,IAAI,cAAc,CAAC,SACnD,wBACD;AAED,SAAgB,yBAAyB;AACvC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAsB,wBAAwB;MAAW,EACvE,oBAAC;KAAE,WAAU;eACV,wBAAwB;MACvB;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAwB,EAC3D,oBAAC;KAAG,WAAU;eACX,wBAAwB,SAAS,KAAK,SAAS,UAC9C,oBAAC,kBAAgB,WAAR,MAAqB,CAC9B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA4B,EAC/D,oBAAC;KAAG,WAAU;eACX,wBAAwB,UAAU,KAAK,UAAU,UAChD,oBAAC,kBAAgB,YAAR,MAAsB,CAC/B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAE9B;OACL,oBAAC;QAAE,WAAU;kBAAgC;SAGzC;OAEJ,qBAAC;QAAI,WAAU;mBACb,qBAAC;SAAI,WAAU;oBACb,oBAAC;UAAG,WAAU;oBAAwB;WAAY,EAClD,qBAAC;UAAG,WAAU;;WACZ,oBAAC,kBAAG,uCAAuC;WAC3C,oBAAC,kBAAG,4BAA4B;WAChC,oBAAC,kBAAG,6BAA6B;WACjC,oBAAC,kBAAG,iCAAiC;WACrC,oBAAC,kBAAG,0CAA0C;;WAC3C;UACD,EAEN,qBAAC;SAAI,WAAU;oBACb,oBAAC;UAAG,WAAU;oBAAwB;WAAiB,EACvD,qBAAC;UAAG,WAAU;;WACZ,oBAAC,kBAAG,2BAA2B;WAC/B,oBAAC,kBAAG,kCAAkC;WACtC,oBAAC,kBAAG,gCAAgC;WACpC,oBAAC,kBAAG,2BAA2B;WAC/B,oBAAC,kBAAG,sCAAsC;;WACvC;UACD;SACF;;OACF;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAA0B;OAC7D,oBAAC;QAAE,WAAU;kBAAgC;SAGzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;SASN;;OACE;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAyB;OAC5D,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA+BN;;OACE;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,4BACyB,oBAAC,gBAAa,MAAM,KAAM;MAC7C,EACP,oBAAC;KACC,MAAK;KACL,WAAU;eACX;MAEM;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaValidationTypescriptPage.js","names":[],"sources":["../../../../src/components/docs/intent/SchemaValidationTypescriptPage.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport { schemaValidationTypescriptBrief } from '@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks';\nimport { SeoOptimizer } from '@contractspec/lib.content-gen/seo';\nimport { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport const metadata: Metadata = new SeoOptimizer().optimize(\n schemaValidationTypescriptBrief\n);\n\nexport function SchemaValidationTypescriptPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-3\">\n <h1 className=\"text-4xl font-bold\">\n {schemaValidationTypescriptBrief.title}\n </h1>\n <p className=\"text-muted-foreground text-lg\">\n {schemaValidationTypescriptBrief.summary}\n </p>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Validation Pain Points</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {schemaValidationTypescriptBrief.problems.map((problem, index) => (\n <li key={index}>{problem}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Type-safe Solutions</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {schemaValidationTypescriptBrief.solutions.map((solution, index) => (\n <li key={index}>{solution}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Contract Schema</h2>\n <p className=\"text-muted-foreground text-sm\">\n Define data models with automatic TypeScript generation.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"src/contracts/user.schema.ts\"\n code={`import { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\nexport const UserSchema = new SchemaModel({\n type: 'object',\n properties: {\n id: {\n type: 'string',\n format: 'uuid',\n required: true,\n description: 'Unique user identifier',\n },\n email: {\n type: 'string',\n format: 'email',\n required: true,\n description: 'User email address',\n },\n name: {\n type: 'string',\n minLength: 1,\n maxLength: 100,\n required: true,\n description: 'Display name for the user',\n },\n role: {\n type: 'string',\n enum: ['user', 'admin', 'moderator'],\n default: 'user',\n description: 'User role in the system',\n },\n createdAt: {\n type: 'string',\n format: 'date-time',\n required: true,\n description: 'Account creation timestamp',\n },\n },\n required: ['id', 'email', 'name', 'createdAt'],\n metadata: {\n name: 'User',\n description: 'User account information',\n },\n});`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Generated Types</h2>\n <p className=\"text-muted-foreground text-sm\">\n TypeScript types are automatically generated with proper validation.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"generated/types/user.ts\"\n code={`// Auto-generated from UserSchema\nexport interface User {\n id: string;\n email: string;\n name: string;\n role: 'user' | 'admin' | 'moderator';\n createdAt: string;\n}\n\n// Auto-generated Zod schema for runtime validation\nexport const UserSchemaZod = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n name: z.string().min(1).max(100),\n role: z.enum(['user', 'admin', 'moderator']).default('user'),\n createdAt: z.string().datetime(),\n});\n\n// Generated validation utilities\nexport function validateUser(data: unknown): User {\n return UserSchemaZod.parse(data);\n}\n\nexport function isUser(data: unknown): data is User {\n return UserSchemaZod.safeParse(data).success;\n}`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Runtime Validation</h2>\n <p className=\"text-muted-foreground text-sm\">\n Use generated validation in your API handlers with zero boilerplate.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"src/handlers/user-handler.ts\"\n code={`import { validateUser } from '../generated/types/user';\n\nexport async function createUserHandler(request: Request) {\n try {\n const input = validateUser(await request.json());\n \n // input is now fully typed as User\n const user = await db.users.create({\n data: {\n ...input,\n createdAt: new Date().toISOString(),\n },\n });\n \n return Response.json({ user });\n } catch (error) {\n if (error instanceof z.ZodError) {\n return Response.json(\n { \n error: 'Validation failed',\n details: error.errors \n },\n { status: 400 }\n );\n }\n \n throw error;\n }\n}`}\n />\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link\n href=\"/docs/guides/spec-validation-and-typing\"\n className=\"btn-primary\"\n >\n Type Safety Guide <ChevronRight size={16} />\n </Link>\n <Link\n href=\"/docs/intent/generate-client-from-schema\"\n className=\"btn-ghost\"\n >\n Client Generation\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,MAAa,WAAqB,IAAI,cAAc,CAAC,SACnD,gCACD;AAED,SAAgB,iCAAiC;AAC/C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eACX,gCAAgC;MAC9B,EACL,oBAAC;KAAE,WAAU;eACV,gCAAgC;MAC/B;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAA2B,EAC9D,oBAAC;KAAG,WAAU;eACX,gCAAgC,SAAS,KAAK,SAAS,UACtD,oBAAC,kBAAgB,WAAR,MAAqB,CAC9B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAwB,EAC3D,oBAAC;KAAG,WAAU;eACX,gCAAgC,UAAU,KAAK,UAAU,UACxD,oBAAC,kBAAgB,YAAR,MAAsB,CAC/B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAoB;OACvD,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA2CN;;OACE;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAoB;OACvD,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;SA0BN;;OACE;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAAuB;OAC1D,oBAAC;QAAE,WAAU;kBAAgC;SAEzC;OACJ,oBAAC;QACC,UAAS;QACT,UAAS;QACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6BN;;OACE;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,sBACmB,oBAAC,gBAAa,MAAM,KAAM;MACvC,EACP,oBAAC;KACC,MAAK;KACL,WAAU;eACX;MAEM;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SpecDrivenDevelopmentPage.js","names":[],"sources":["../../../../src/components/docs/intent/SpecDrivenDevelopmentPage.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport { specDrivenDevelopmentBrief } from '@contractspec/bundle.library/components/docs/intent/intent-pages.docblocks';\nimport { SeoOptimizer } from '@contractspec/lib.content-gen/seo';\nimport { CodeBlock } from '@contractspec/lib.design-system';\nimport Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\nexport const metadata: Metadata = new SeoOptimizer().optimize(\n specDrivenDevelopmentBrief\n);\n\nexport function SpecDrivenDevelopmentPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-3\">\n <h1 className=\"text-4xl font-bold\">\n {specDrivenDevelopmentBrief.title}\n </h1>\n <p className=\"text-muted-foreground text-lg\">\n {specDrivenDevelopmentBrief.summary}\n </p>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Why Spec-driven?</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {specDrivenDevelopmentBrief.problems.map((problem, index) => (\n <li key={index}>{problem}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"card-subtle space-y-4 p-6\">\n <h2 className=\"text-2xl font-bold\">Benefits</h2>\n <ul className=\"text-muted-foreground space-y-2 text-sm\">\n {specDrivenDevelopmentBrief.solutions.map((solution, index) => (\n <li key={index}>{solution}</li>\n ))}\n </ul>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">Feature Specification Example</h2>\n <p className=\"text-muted-foreground text-sm\">\n Define a complete feature with operations, events, and data models.\n </p>\n <CodeBlock\n language=\"typescript\"\n filename=\"src/contracts/user-management.feature.ts\"\n code={`import { defineFeature } from '@contractspec/lib.contracts/features';\nimport { defineOperation } from '@contractspec/lib.contracts/operations';\nimport { defineEvent } from '@contractspec/lib.contracts/events';\nimport { SchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\n\nexport const UserManagementFeature = defineFeature({\n goal: 'Complete user management system with CRUD operations',\n context: 'Handles user lifecycle from creation to deletion with proper authorization',\n operations: {\n createUser: defineOperation({\n goal: 'Create a new user account',\n input: new SchemaModel({\n type: 'object',\n properties: {\n email: { type: 'string', format: 'email', required: true },\n name: { type: 'string', minLength: 1, required: true },\n },\n }),\n output: new SchemaModel({\n type: 'object',\n properties: {\n id: { type: 'string', required: true },\n email: { type: 'string', required: true },\n name: { type: 'string', required: true },\n },\n }),\n }),\n updateUser: defineOperation({\n goal: 'Update existing user information',\n input: new SchemaModel({\n type: 'object',\n properties: {\n name: { type: 'string', minLength: 1 },\n },\n }),\n output: new SchemaModel({\n type: 'object',\n properties: {\n id: { type: 'string', required: true },\n email: { type: 'string', required: true },\n name: { type: 'string', required: true },\n },\n }),\n }),\n },\n events: {\n userCreated: defineEvent({\n goal: 'Emit when a new user is created',\n payload: new SchemaModel({\n type: 'object',\n properties: {\n userId: { type: 'string', required: true },\n email: { type: 'string', required: true },\n },\n }),\n }),\n userUpdated: defineEvent({\n goal: 'Emit when user information changes',\n payload: new SchemaModel({\n type: 'object',\n properties: {\n userId: { type: 'string', required: true },\n changes: { type: 'array', items: { type: 'string' }, required: true },\n },\n }),\n }),\n },\n metadata: {\n name: 'user-management',\n version: '1.0.0',\n description: 'Complete user management with operations and events',\n },\n});`}\n />\n </div>\n\n <div className=\"space-y-3\">\n <h2 className=\"text-2xl font-bold\">\n Generate Type-safe Implementations\n </h2>\n <p className=\"text-muted-foreground text-sm\">\n Generate validation, types, and API handlers from your feature.\n </p>\n <CodeBlock\n language=\"bash\"\n filename=\"generate-from-feature\"\n code={`contractspec generate \\\\\n --input ./src/contracts/user-management.feature.ts \\\\\n --output ./generated/user-management`}\n />\n </div>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link\n href=\"/docs/guides/spec-validation-and-typing\"\n className=\"btn-primary\"\n >\n Type Safety Guide <ChevronRight size={16} />\n </Link>\n <Link href=\"/docs/intent/deterministic-codegen\" className=\"btn-ghost\">\n Deterministic Codegen\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,MAAa,WAAqB,IAAI,cAAc,CAAC,SACnD,2BACD;AAED,SAAgB,4BAA4B;AAC1C,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eACX,2BAA2B;MACzB,EACL,oBAAC;KAAE,WAAU;eACV,2BAA2B;MAC1B;KACA;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAqB,EACxD,oBAAC;KAAG,WAAU;eACX,2BAA2B,SAAS,KAAK,SAAS,UACjD,oBAAC,kBAAgB,WAAR,MAAqB,CAC9B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAa,EAChD,oBAAC;KAAG,WAAU;eACX,2BAA2B,UAAU,KAAK,UAAU,UACnD,oBAAC,kBAAgB,YAAR,MAAsB,CAC/B;MACC;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAqB;QAAkC;MACrE,oBAAC;OAAE,WAAU;iBAAgC;QAEzC;MACJ,oBAAC;OACC,UAAS;OACT,UAAS;OACT,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyEN;;MACE,EAEN,qBAAC;KAAI,WAAU;;MACb,oBAAC;OAAG,WAAU;iBAAqB;QAE9B;MACL,oBAAC;OAAE,WAAU;iBAAgC;QAEzC;MACJ,oBAAC;OACC,UAAS;OACT,UAAS;OACT,MAAM;;;QAGN;;MACE;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KACC,MAAK;KACL,WAAU;gBACX,sBACmB,oBAAC,gBAAa,MAAM,KAAM;MACvC,EACP,oBAAC;KAAK,MAAK;KAAqC,WAAU;eAAY;MAE/D;KACH;;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"intent-pages.docblocks.js","names":[],"sources":["../../../../src/components/docs/intent/intent-pages.docblocks.ts"],"sourcesContent":["import type { ContentBrief } from '@contractspec/lib.content-gen';\n\nexport const contractFirstApiBrief: ContentBrief = {\n title: 'Contract-first API',\n summary:\n 'Design APIs by writing contracts first, then generate consistent implementations across frameworks.',\n problems: [\n 'API drift between frontend and backend',\n 'Inconsistent error handling across endpoints',\n 'Documentation becomes outdated quickly',\n 'Manual OpenAPI maintenance is error-prone',\n ],\n solutions: [\n 'Single source of truth for API contracts',\n 'Generate OpenAPI and SDKs from contracts',\n 'Type-safe request/response validation',\n 'Always-in-sync documentation',\n ],\n audience: {\n role: 'API developers',\n industry: 'Software development',\n maturity: 'scaleup',\n },\n callToAction: 'Start with a simple operation contract',\n references: [\n {\n label: 'Next.js One Endpoint Guide',\n url: '/docs/guides/nextjs-one-endpoint',\n },\n {\n label: 'API Reference',\n url: '/docs/api',\n },\n ],\n};\n\nexport const specDrivenDevelopmentBrief: ContentBrief = {\n title: 'Spec-driven development',\n summary:\n 'Build features by writing specifications first, then generate type-safe implementations.',\n problems: [\n 'Feature requirements are ambiguous',\n 'Frontend and backend implementations diverge',\n 'Testing lacks clear contract definitions',\n 'Code reviews focus on style instead of behavior',\n ],\n solutions: [\n 'Executable specifications as single source of truth',\n 'Generate type-safe clients from specs',\n 'Automated contract testing',\n 'Clear behavior contracts for teams',\n ],\n audience: {\n role: 'Development teams',\n industry: 'Software engineering',\n maturity: 'enterprise',\n },\n callToAction: 'Define your first feature spec',\n references: [\n {\n label: 'Spec Validation + Typing Guide',\n url: '/docs/guides/spec-validation-and-typing',\n },\n {\n label: 'Core Contracts',\n url: '/docs/core-contracts',\n },\n ],\n};\n\nexport const deterministicCodegenBrief: ContentBrief = {\n title: 'Deterministic codegen',\n summary:\n 'Regenerate code from contracts without breaking existing functionality or losing customizations.',\n problems: [\n 'Generated code conflicts with manual changes',\n 'Regeneration loses custom business logic',\n 'Teams avoid regeneration after customization',\n 'Code migration between versions is risky',\n ],\n solutions: [\n 'Clear separation of generated vs hand-written code',\n 'Incremental regeneration with conflict detection',\n 'Protected zones for custom logic',\n 'Automatic migration paths',\n ],\n audience: {\n role: 'Platform engineers',\n industry: 'Developer tools',\n maturity: 'scaleup',\n },\n callToAction: 'Try deterministic regeneration',\n references: [\n {\n label: 'Generate Docs + Clients Guide',\n url: '/docs/guides/generate-docs-clients-schemas',\n },\n {\n label: 'CLI Reference',\n url: '/docs/getting-started/cli',\n },\n ],\n};\n\nexport const schemaValidationTypescriptBrief: ContentBrief = {\n title: 'Schema validation TypeScript',\n summary:\n 'Generate TypeScript types from contracts and validate data at runtime with zero overhead.',\n problems: [\n 'Runtime type validation is boilerplate-heavy',\n 'Type definitions drift from schemas',\n 'Validation logic scattered across codebase',\n 'Poor error messages for invalid data',\n ],\n solutions: [\n 'Auto-generated TypeScript from contracts',\n 'Zod schemas for runtime validation',\n 'Type-safe validation with clear errors',\n 'Single source of schema truth',\n ],\n audience: {\n role: 'TypeScript developers',\n industry: 'Web development',\n maturity: 'early',\n },\n callToAction: 'Generate typed contracts now',\n references: [\n {\n label: 'Type Safety Guide',\n url: '/docs/guides/spec-validation-and-typing',\n },\n {\n label: 'Schema Reference',\n url: '/docs/schemas',\n },\n ],\n};\n\nexport const openapiAlternativeBrief: ContentBrief = {\n title: 'OpenAPI alternative',\n summary:\n 'A spec-first approach that goes beyond OpenAPI with executable contracts and code generation.',\n problems: [\n 'OpenAPI is documentation-only',\n 'No type safety from OpenAPI specs',\n 'Manual SDK generation is complex',\n 'Cannot validate implementations against OpenAPI',\n ],\n solutions: [\n 'Executable contracts with validation',\n 'Generate multiple outputs from one spec',\n 'Type-safe by default',\n 'Built-in testing and validation',\n ],\n audience: {\n role: 'API architects',\n industry: 'Enterprise software',\n maturity: 'enterprise',\n },\n callToAction: 'Compare with OpenAPI approach',\n references: [\n {\n label: 'Generate OpenAPI from Contracts',\n url: '/docs/guides/generate-docs-clients-schemas',\n },\n {\n label: 'Contract vs OpenAPI',\n url: '/docs/comparison/openapi',\n },\n ],\n};\n\nexport const generateClientFromSchemaBrief: ContentBrief = {\n title: 'Generate client from schema',\n summary:\n 'Automatically generate type-safe API clients in any language from your contracts.',\n problems: [\n 'Writing API clients is repetitive',\n 'Manual clients have type mismatches',\n 'Keeping clients in sync with APIs',\n 'Language-specific client maintenance',\n ],\n solutions: [\n 'Generate clients for multiple languages',\n 'Type-safe request/response handling',\n 'Automatic client updates from contracts',\n 'Consistent error handling across languages',\n ],\n audience: {\n role: 'Full-stack developers',\n industry: 'Software development',\n maturity: 'scaleup',\n },\n callToAction: 'Generate your first API client',\n references: [\n {\n label: 'Client Generation Guide',\n url: '/docs/guides/generate-docs-clients-schemas',\n },\n {\n label: 'Supported Languages',\n url: '/docs/integrations',\n },\n ],\n};\n"],"mappings":";AAEA,MAAa,wBAAsC;CACjD,OAAO;CACP,SACE;CACF,UAAU;EACR;EACA;EACA;EACA;EACD;CACD,WAAW;EACT;EACA;EACA;EACA;EACD;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACV,UAAU;EACX;CACD,cAAc;CACd,YAAY,CACV;EACE,OAAO;EACP,KAAK;EACN,EACD;EACE,OAAO;EACP,KAAK;EACN,CACF;CACF;AAED,MAAa,6BAA2C;CACtD,OAAO;CACP,SACE;CACF,UAAU;EACR;EACA;EACA;EACA;EACD;CACD,WAAW;EACT;EACA;EACA;EACA;EACD;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACV,UAAU;EACX;CACD,cAAc;CACd,YAAY,CACV;EACE,OAAO;EACP,KAAK;EACN,EACD;EACE,OAAO;EACP,KAAK;EACN,CACF;CACF;AAED,MAAa,4BAA0C;CACrD,OAAO;CACP,SACE;CACF,UAAU;EACR;EACA;EACA;EACA;EACD;CACD,WAAW;EACT;EACA;EACA;EACA;EACD;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACV,UAAU;EACX;CACD,cAAc;CACd,YAAY,CACV;EACE,OAAO;EACP,KAAK;EACN,EACD;EACE,OAAO;EACP,KAAK;EACN,CACF;CACF;AAED,MAAa,kCAAgD;CAC3D,OAAO;CACP,SACE;CACF,UAAU;EACR;EACA;EACA;EACA;EACD;CACD,WAAW;EACT;EACA;EACA;EACA;EACD;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACV,UAAU;EACX;CACD,cAAc;CACd,YAAY,CACV;EACE,OAAO;EACP,KAAK;EACN,EACD;EACE,OAAO;EACP,KAAK;EACN,CACF;CACF;AAED,MAAa,0BAAwC;CACnD,OAAO;CACP,SACE;CACF,UAAU;EACR;EACA;EACA;EACA;EACD;CACD,WAAW;EACT;EACA;EACA;EACA;EACD;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACV,UAAU;EACX;CACD,cAAc;CACd,YAAY,CACV;EACE,OAAO;EACP,KAAK;EACN,EACD;EACE,OAAO;EACP,KAAK;EACN,CACF;CACF;AAED,MAAa,gCAA8C;CACzD,OAAO;CACP,SACE;CACF,UAAU;EACR;EACA;EACA;EACA;EACD;CACD,WAAW;EACT;EACA;EACA;EACA;EACD;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACV,UAAU;EACX;CACD,cAAc;CACd,YAAY,CACV;EACE,OAAO;EACP,KAAK;EACN,EACD;EACE,OAAO;EACP,KAAK;EACN,CACF;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"KnowledgeCategoriesPage.js","names":[],"sources":["../../../../src/components/docs/knowledge/KnowledgeCategoriesPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\nimport { ChevronRight } from 'lucide-react';\n\n// export const metadata = {\n// title: 'Knowledge Categories: ContractSpec Docs',\n// description:\n// 'Understand the four knowledge categories in ContractSpec and how they affect trust and decision-making.',\n// };\n\nexport function KnowledgeCategoriesPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Knowledge Categories</h1>\n <p className=\"text-muted-foreground\">\n ContractSpec classifies knowledge into four categories based on trust\n level, source authority, and intended use. This classification\n determines how knowledge can be used in workflows, policy decisions,\n and agent responses.\n </p>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">The four categories</h2>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`type KnowledgeCategory =\n | \"canonical\" // Internal ground truth\n | \"operational\" // Internal operational docs\n | \"external\" // Third-party reference\n | \"ephemeral\"; // Temporary context`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-4\">\n <h3 className=\"text-xl font-semibold\">1. Canonical</h3>\n <p className=\"text-muted-foreground\">\n <strong>Trust level:</strong> Highest - Authoritative ground truth\n </p>\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">What it contains:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>Official product specifications and schemas</li>\n <li>Company policies and procedures</li>\n <li>Legal terms and compliance requirements</li>\n <li>Pricing rules and business logic</li>\n <li>Data classification and security policies</li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">How it's used:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>\n <strong>Policy decisions</strong> - Can drive PDP decisions\n </li>\n <li>\n <strong>Validation</strong> - Used to validate user inputs and\n operations\n </li>\n <li>\n <strong>Code generation</strong> - Source of truth for\n generated code\n </li>\n <li>\n <strong>Compliance</strong> - Reference for audit and\n regulatory checks\n </li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">Examples:</h4>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded border p-3 font-mono text-xs\">\n <pre>{`// Product Canon space\n{\n id: \"product-canon\",\n category: \"canonical\",\n sources: [\n \"database-schema.sql\",\n \"product-catalog.yaml\",\n \"pricing-rules.json\"\n ]\n}\n\n// Policy Canon space\n{\n id: \"policy-canon\",\n category: \"canonical\",\n sources: [\n \"data-classification.yaml\",\n \"access-policies.rego\",\n \"compliance-requirements.md\"\n ]\n}`}</pre>\n </div>\n </div>\n <div className=\"card-subtle border-violet-500/30 bg-violet-500/10 p-3\">\n <p className=\"text-sm text-violet-300\">\n <strong>⚠️ Important:</strong> Canonical knowledge is immutable\n once indexed. Changes require re-sync and versioning.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h3 className=\"text-xl font-semibold\">2. Operational</h3>\n <p className=\"text-muted-foreground\">\n <strong>Trust level:</strong> High - Internal but not authoritative\n </p>\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">What it contains:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>Support ticket history and resolutions</li>\n <li>Internal runbooks and playbooks</li>\n <li>Sales materials and customer communications</li>\n <li>Product management docs and roadmaps</li>\n <li>Team wikis and knowledge bases</li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">How it's used:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>\n <strong>Context</strong> - Provides helpful context for\n decisions\n </li>\n <li>\n <strong>Suggestions</strong> - Informs recommendations, not\n requirements\n </li>\n <li>\n <strong>Learning</strong> - Helps agents learn from past\n interactions\n </li>\n <li>\n <strong>Troubleshooting</strong> - Guides problem-solving\n workflows\n </li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">Examples:</h4>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded border p-3 font-mono text-xs\">\n <pre>{`// Support History space\n{\n id: \"support-history\",\n category: \"operational\",\n sources: [\n \"gmail:support@company.com\",\n \"zendesk:tickets\",\n \"slack:support-channel\"\n ]\n}\n\n// Internal Docs space\n{\n id: \"internal-docs\",\n category: \"operational\",\n sources: [\n \"notion:engineering-wiki\",\n \"confluence:product-docs\",\n \"google-drive:runbooks\"\n ]\n}`}</pre>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h3 className=\"text-xl font-semibold\">3. External</h3>\n <p className=\"text-muted-foreground\">\n <strong>Trust level:</strong> Medium - Reference only\n </p>\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">What it contains:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>Third-party integration documentation (Stripe, Twilio)</li>\n <li>Regulatory and compliance documents</li>\n <li>Industry standards and best practices</li>\n <li>Public API documentation</li>\n <li>External knowledge bases</li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">How it's used:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>\n <strong>Reference</strong> - Consulted but not authoritative\n </li>\n <li>\n <strong>Integration help</strong> - Guides external API usage\n </li>\n <li>\n <strong>Compliance context</strong> - Provides regulatory\n background\n </li>\n <li>\n <strong>Never for policy</strong> - Cannot drive policy\n decisions\n </li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">Examples:</h4>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded border p-3 font-mono text-xs\">\n <pre>{`// External Provider Docs space\n{\n id: \"provider-docs\",\n category: \"external\",\n sources: [\n \"url:https://stripe.com/docs\",\n \"url:https://twilio.com/docs\",\n \"url:https://openai.com/docs\"\n ]\n}\n\n// Regulatory Docs space\n{\n id: \"regulatory-docs\",\n category: \"external\",\n sources: [\n \"url:https://gdpr.eu/\",\n \"url:https://www.hhs.gov/hipaa\",\n \"pdf:SOC2-requirements.pdf\"\n ]\n}`}</pre>\n </div>\n </div>\n <div className=\"card-subtle border-amber-500/30 bg-amber-500/10 p-3\">\n <p className=\"text-sm text-amber-300\">\n <strong>⚠️ Note:</strong> External knowledge should be clearly\n marked in agent responses as \"according to [source]\" to indicate\n it's not internal authority.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h3 className=\"text-xl font-semibold\">4. Ephemeral</h3>\n <p className=\"text-muted-foreground\">\n <strong>Trust level:</strong> Low - Temporary context only\n </p>\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">What it contains:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>Agent conversation history and scratchpads</li>\n <li>Session-specific context and state</li>\n <li>Draft documents and work-in-progress</li>\n <li>Temporary calculations and intermediate results</li>\n <li>User-provided context for current task</li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">How it's used:</h4>\n <ul className=\"text-muted-foreground ml-4 list-inside list-disc space-y-1 text-sm\">\n <li>\n <strong>Session continuity</strong> - Maintains conversation\n context\n </li>\n <li>\n <strong>Working memory</strong> - Stores intermediate results\n </li>\n <li>\n <strong>Never persisted long-term</strong> - Auto-purged after\n session\n </li>\n <li>\n <strong>Never for decisions</strong> - Cannot influence policy\n or validation\n </li>\n </ul>\n </div>\n <div>\n <h4 className=\"mb-2 text-sm font-semibold\">Examples:</h4>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded border p-3 font-mono text-xs\">\n <pre>{`// Agent Scratchpad space\n{\n id: \"agent-scratchpad\",\n category: \"ephemeral\",\n retentionPolicy: { days: 1 },\n sources: [\n \"session:current-conversation\",\n \"memory:agent-working-memory\"\n ]\n}\n\n// User Session space\n{\n id: \"user-session\",\n category: \"ephemeral\",\n retentionPolicy: { days: 7 },\n sources: [\n \"session:user-uploads\",\n \"session:form-drafts\"\n ]\n}`}</pre>\n </div>\n </div>\n <div className=\"card-subtle border-red-500/30 bg-red-500/10 p-3\">\n <p className=\"text-sm text-red-300\">\n <strong>⚠️ Critical:</strong> Ephemeral knowledge is never used\n for policy decisions, compliance checks, or any authoritative\n purpose.\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Category comparison</h2>\n <div className=\"border-border/50 overflow-x-auto rounded-lg border\">\n <table className=\"w-full text-left text-sm\">\n <thead className=\"bg-card/50\">\n <tr className=\"border-border/50 border-b\">\n <th className=\"px-4 py-3 font-semibold\">Feature</th>\n <th className=\"px-4 py-3 font-semibold\">Canonical</th>\n <th className=\"px-4 py-3 font-semibold\">Operational</th>\n <th className=\"px-4 py-3 font-semibold\">External</th>\n <th className=\"px-4 py-3 font-semibold\">Ephemeral</th>\n </tr>\n </thead>\n <tbody className=\"divide-border/50 divide-y\">\n <tr>\n <td className=\"px-4 py-3 font-semibold\">Trust Level</td>\n <td className=\"px-4 py-3\">Highest</td>\n <td className=\"px-4 py-3\">High</td>\n <td className=\"px-4 py-3\">Medium</td>\n <td className=\"px-4 py-3\">Low</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-semibold\">Policy Impact</td>\n <td className=\"px-4 py-3\">✅ Can drive decisions</td>\n <td className=\"px-4 py-3\">⚠️ Can inform</td>\n <td className=\"px-4 py-3\">❌ Reference only</td>\n <td className=\"px-4 py-3\">❌ Never used</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-semibold\">Mutability</td>\n <td className=\"px-4 py-3\">Immutable</td>\n <td className=\"px-4 py-3\">Mutable</td>\n <td className=\"px-4 py-3\">Mutable</td>\n <td className=\"px-4 py-3\">Temporary</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-semibold\">Retention</td>\n <td className=\"px-4 py-3\">Permanent</td>\n <td className=\"px-4 py-3\">Long-term</td>\n <td className=\"px-4 py-3\">Long-term</td>\n <td className=\"px-4 py-3\">Short-term</td>\n </tr>\n <tr>\n <td className=\"px-4 py-3 font-semibold\">Audit Level</td>\n <td className=\"px-4 py-3\">Full audit</td>\n <td className=\"px-4 py-3\">Full audit</td>\n <td className=\"px-4 py-3\">Basic audit</td>\n <td className=\"px-4 py-3\">Minimal audit</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Best practices</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n Use canonical for anything that affects policy, pricing, or\n compliance\n </li>\n <li>\n Use operational for context that helps but doesn't dictate decisions\n </li>\n <li>\n Use external for reference material that's helpful but not\n authoritative\n </li>\n <li>\n Use ephemeral for temporary working memory that shouldn't persist\n </li>\n <li>\n Never mix categories in a single knowledge space - keep them\n separate\n </li>\n <li>\n Document the category and purpose of each knowledge space clearly\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/knowledge\" className=\"btn-ghost\">\n Back to Knowledge\n </Link>\n <Link href=\"/docs/knowledge/spaces\" className=\"btn-primary\">\n Knowledge Spaces <ChevronRight size={16} />\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"KnowledgeExamplesPage.js","names":[],"sources":["../../../../src/components/docs/knowledge/KnowledgeExamplesPage.tsx"],"sourcesContent":["import Link from '@contractspec/lib.ui-link';\n\n// export const metadata = {\n// title: 'Knowledge Examples: ContractSpec Docs',\n// description:\n// 'Real-world examples of knowledge spaces in ContractSpec applications.',\n// };\n\nexport function KnowledgeExamplesPage() {\n return (\n <div className=\"space-y-8\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold\">Knowledge Examples</h1>\n <p className=\"text-muted-foreground\">\n Real-world examples of how different applications use knowledge spaces\n to power intelligent workflows and agents.\n </p>\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n Example 1: ArtisanOS Support Agent\n </h2>\n <p className=\"text-muted-foreground\">\n <strong>Context:</strong> ArtisanOS needs a support agent that can\n answer product questions using official documentation and learn from\n past support tickets.\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`// Knowledge spaces\nknowledgeSpaces: [\n {\n id: \"product-canon\",\n category: \"canonical\",\n sources: [\n { kind: \"notion\", location: \"product-docs\" },\n { kind: \"database-query\", location: \"SELECT * FROM features\" }\n ]\n },\n {\n id: \"support-history\",\n category: \"operational\",\n sources: [\n { kind: \"email\", location: \"support@artisanos.com\" },\n { kind: \"slack\", location: \"#support-channel\" }\n ]\n }\n]\n\n// Workflow\nworkflowId: answer-support-question\nsteps:\n - id: embed-question\n capability: openai-embeddings\n inputs:\n text: $\\{input.question}\n \n - id: search-canon\n capability: vector.search\n inputs:\n collection: \"product-canon\"\n vector: $\\{steps.embed-question.output.embedding}\n limit: 5\n \n - id: search-history\n capability: vector.search\n inputs:\n collection: \"support-history\"\n vector: $\\{steps.embed-question.output.embedding}\n limit: 3\n \n - id: generate-answer\n capability: openai-chat\n inputs:\n messages:\n - role: \"system\"\n content: |\n Answer using canonical docs as authority.\n Use support history for helpful context.\n - role: \"user\"\n content: |\n Question: $\\{input.question}\n Docs: $\\{steps.search-canon.output.results}\n History: $\\{steps.search-history.output.results}`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n Example 2: HCircle Invoice Generation\n </h2>\n <p className=\"text-muted-foreground\">\n <strong>Context:</strong> HCircle needs to generate invoices using\n house playbook rules and resident service history.\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`// Knowledge spaces\nknowledgeSpaces: [\n {\n id: \"house-playbook\",\n category: \"canonical\",\n sources: [\n { kind: \"uploaded-document\", location: \"playbook.pdf\" },\n { kind: \"database-query\", location: \"SELECT * FROM pricing_rules\" }\n ]\n },\n {\n id: \"resident-history\",\n category: \"operational\",\n sources: [\n { kind: \"database-query\", location: \"SELECT * FROM services\" },\n { kind: \"database-query\", location: \"SELECT * FROM invoices\" }\n ]\n }\n]\n\n// Workflow\nworkflowId: generate-invoice\nsteps:\n - id: fetch-services\n capability: database.query\n inputs:\n query: \"SELECT * FROM services WHERE resident_id = ?\"\n params: [$\\{input.residentId}]\n \n - id: search-pricing-rules\n capability: vector.search\n inputs:\n collection: \"house-playbook\"\n query: \"pricing rules for $\\{steps.fetch-services.output.serviceType}\"\n limit: 3\n \n - id: calculate-total\n capability: calculate\n inputs:\n services: $\\{steps.fetch-services.output.rows}\n rules: $\\{steps.search-pricing-rules.output.results}\n \n - id: create-invoice\n capability: database.insert\n inputs:\n table: \"invoices\"\n data: $\\{steps.calculate-total.output}`}</pre>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">\n Example 3: Multi-tenant SaaS with External Docs\n </h2>\n <p className=\"text-muted-foreground\">\n <strong>Context:</strong> A SaaS platform needs to help users\n integrate with Stripe, using both internal guides and Stripe's\n official documentation.\n </p>\n <div className=\"bg-background/50 border-border text-muted-foreground overflow-x-auto rounded-lg border p-4 font-mono text-sm\">\n <pre>{`// Knowledge spaces\nknowledgeSpaces: [\n {\n id: \"integration-guides\",\n category: \"canonical\",\n sources: [\n { kind: \"notion\", location: \"integration-guides\" }\n ]\n },\n {\n id: \"stripe-docs\",\n category: \"external\",\n sources: [\n { kind: \"url\", location: \"https://stripe.com/docs\" }\n ]\n },\n {\n id: \"customer-questions\",\n category: \"operational\",\n sources: [\n { kind: \"email\", location: \"support@saas.com\" }\n ]\n }\n]\n\n// Workflow\nworkflowId: answer-integration-question\nsteps:\n - id: embed-question\n capability: openai-embeddings\n inputs:\n text: $\\{input.question}\n \n - id: search-internal-guides\n capability: vector.search\n inputs:\n collection: \"integration-guides\"\n vector: $\\{steps.embed-question.output.embedding}\n limit: 3\n \n - id: search-stripe-docs\n capability: vector.search\n inputs:\n collection: \"stripe-docs\"\n vector: $\\{steps.embed-question.output.embedding}\n limit: 2\n \n - id: search-past-questions\n capability: vector.search\n inputs:\n collection: \"customer-questions\"\n vector: $\\{steps.embed-question.output.embedding}\n limit: 2\n \n - id: generate-answer\n capability: openai-chat\n inputs:\n messages:\n - role: \"system\"\n content: |\n Prioritize internal guides (authoritative).\n Use Stripe docs for API details (reference).\n Use past questions for common issues (context).\n - role: \"user\"\n content: |\n Question: $\\{input.question}\n Internal: $\\{steps.search-internal-guides.output.results}\n Stripe: $\\{steps.search-stripe-docs.output.results}\n Past: $\\{steps.search-past-questions.output.results}`}</pre>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h2 className=\"text-2xl font-bold\">Key patterns</h2>\n <ul className=\"text-muted-foreground list-inside list-disc space-y-2\">\n <li>\n <strong>Canonical first</strong> - Always search canonical spaces\n before operational or external\n </li>\n <li>\n <strong>Category-aware prompts</strong> - Tell the LLM which sources\n are authoritative vs reference\n </li>\n <li>\n <strong>Multi-space queries</strong> - Combine results from multiple\n spaces for richer context\n </li>\n <li>\n <strong>Limit results</strong> - Use appropriate limits (3-5) to\n avoid token overflow\n </li>\n <li>\n <strong>Audit everything</strong> - Log all knowledge queries for\n debugging and compliance\n </li>\n </ul>\n </div>\n\n <div className=\"flex items-center gap-4 pt-4\">\n <Link href=\"/docs/knowledge/sources\" className=\"btn-ghost\">\n Previous: Sources\n </Link>\n <Link href=\"/docs/architecture/knowledge-binding\" className=\"btn-ghost\">\n Knowledge Binding\n </Link>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AAQA,SAAgB,wBAAwB;AACtC,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAuB,EAC1D,oBAAC;KAAE,WAAU;eAAwB;MAGjC;KACA;GAEN,qBAAC;IAAI,WAAU;;KACb,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAE9B;OACL,qBAAC;QAAE,WAAU;mBACX,oBAAC,sBAAO,aAAiB;SAGvB;OACJ,oBAAC;QAAI,WAAU;kBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAsDkD;SACpD;;OACF;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAE9B;OACL,qBAAC;QAAE,WAAU;mBACX,oBAAC,sBAAO,aAAiB;SAEvB;OACJ,oBAAC;QAAI,WAAU;kBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDA8CkC;SACpC;;OACF;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAG,WAAU;kBAAqB;SAE9B;OACL,qBAAC;QAAE,WAAU;mBACX,oBAAC,sBAAO,aAAiB;SAGvB;OACJ,oBAAC;QAAI,WAAU;kBACb,oBAAC,mBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAoEsD;SACxD;;OACF;;KACF;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAG,WAAU;eAAqB;MAAiB,EACpD,qBAAC;KAAG,WAAU;;MACZ,qBAAC,mBACC,oBAAC,sBAAO,oBAAwB,wEAE7B;MACL,qBAAC,mBACC,oBAAC,sBAAO,2BAA+B,oEAEpC;MACL,qBAAC,mBACC,oBAAC,sBAAO,wBAA4B,kEAEjC;MACL,qBAAC,mBACC,oBAAC,sBAAO,kBAAsB,+DAE3B;MACL,qBAAC,mBACC,oBAAC,sBAAO,qBAAyB,iEAE9B;;MACF;KACD;GAEN,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,MAAK;KAA0B,WAAU;eAAY;MAEpD,EACP,oBAAC;KAAK,MAAK;KAAuC,WAAU;eAAY;MAEjE;KACH;;GACF"}