@contractspec/bundle.library 3.8.12 → 3.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (683) hide show
  1. package/.turbo/turbo-build.log +614 -602
  2. package/CHANGELOG.md +97 -0
  3. package/dist/application/context-storage/index.js +1 -1
  4. package/dist/application/index.js +11 -11
  5. package/dist/application/mcp/cliMcp.js +6 -6
  6. package/dist/application/mcp/cliMcp.onboarding.d.ts +4 -0
  7. package/dist/application/mcp/cliMcp.onboarding.js +2 -0
  8. package/dist/application/mcp/cliMcp.test.d.ts +1 -0
  9. package/dist/application/mcp/common.js +1 -1
  10. package/dist/application/mcp/contractsMcp.js +2 -2
  11. package/dist/application/mcp/contractsMcp.test.d.ts +1 -0
  12. package/dist/application/mcp/contractsMcpAdoptionTools.d.ts +3 -0
  13. package/dist/application/mcp/contractsMcpAdoptionTools.js +2 -0
  14. package/dist/application/mcp/contractsMcpResources.js +2 -2
  15. package/dist/application/mcp/contractsMcpTools.js +1 -1
  16. package/dist/application/mcp/contractsMcpTypes.d.ts +16 -0
  17. package/dist/application/mcp/docsMcp.catalog.js +2 -2
  18. package/dist/application/mcp/docsMcp.data.js +1 -1
  19. package/dist/application/mcp/docsMcp.js +3 -3
  20. package/dist/application/mcp/docsMcp.prompts.js +3 -3
  21. package/dist/application/mcp/docsMcp.reference.js +2 -2
  22. package/dist/application/mcp/docsMcp.resources.js +2 -2
  23. package/dist/application/mcp/docsMcp.tools.js +2 -2
  24. package/dist/application/mcp/index.js +11 -11
  25. package/dist/application/mcp/internalMcp.js +2 -2
  26. package/dist/application/mcp/normalizeMcpRequest.js +1 -1
  27. package/dist/application/mcp/providerRankingMcp.js +1 -1
  28. package/dist/bundles/LibraryBundle.d.ts +19 -111
  29. package/dist/bundles/LibraryBundle.js +1 -1
  30. package/dist/bundles/index.js +1 -1
  31. package/dist/components/docs/DocsIndexPage.js +2 -2
  32. package/dist/components/docs/advanced/AdvancedMCPPage.js +3 -3
  33. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
  34. package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -2
  35. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
  36. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
  37. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
  38. package/dist/components/docs/advanced/index.js +9 -9
  39. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
  40. package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
  41. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
  42. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
  43. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
  44. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
  45. package/dist/components/docs/architecture/index.js +20 -20
  46. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
  47. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
  48. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
  49. package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -1
  50. package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -1
  51. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
  52. package/dist/components/docs/comparison/index.js +1 -1
  53. package/dist/components/docs/docsManifest.js +1 -1
  54. package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -2
  55. package/dist/components/docs/ecosystem/PluginsPage.js +4 -4
  56. package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
  57. package/dist/components/docs/ecosystem/TemplatesPage.js +3 -3
  58. package/dist/components/docs/ecosystem/index.js +11 -11
  59. package/dist/components/docs/examples/DocsExamplesPage.js +1 -17
  60. package/dist/components/docs/examples/ExampleShowcasePage.d.ts +1 -1
  61. package/dist/components/docs/examples/ExampleShowcasePage.js +2 -17
  62. package/dist/components/docs/examples/exampleShowcaseData.d.ts +2 -2
  63. package/dist/components/docs/examples/exampleShowcaseData.js +2 -17
  64. package/dist/components/docs/examples/exampleShowcaseData.test.d.ts +1 -0
  65. package/dist/components/docs/examples/index.js +2 -17
  66. package/dist/components/docs/generated/docs-index.generated.js +1 -1
  67. package/dist/components/docs/generated/index.d.ts +7 -1
  68. package/dist/components/docs/generated/index.js +1 -1
  69. package/dist/components/docs/generated/loader.js +1 -1
  70. package/dist/components/docs/getting-started/CLIPage.js +6 -5
  71. package/dist/components/docs/getting-started/CompatibilityPage.js +1 -1
  72. package/dist/components/docs/getting-started/DataViewTutorialPage.js +44 -67
  73. package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -1
  74. package/dist/components/docs/getting-started/HelloWorldPage.js +5 -5
  75. package/dist/components/docs/getting-started/InstallationPage.js +3 -3
  76. package/dist/components/docs/getting-started/StartHerePage.js +4 -2
  77. package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -2
  78. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
  79. package/dist/components/docs/getting-started/getting-started.docblocks.js +2 -2
  80. package/dist/components/docs/getting-started/index.js +60 -80
  81. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
  82. package/dist/components/docs/guides/GuideConnectInRepoPage.js +30 -5
  83. package/dist/components/docs/guides/GuideContractTypesPage.js +6 -6
  84. package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -3
  85. package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
  86. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
  87. package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +21 -6
  88. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
  89. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
  90. package/dist/components/docs/guides/GuideReleaseCapsulesPage.d.ts +1 -0
  91. package/dist/components/docs/guides/GuideReleaseCapsulesPage.js +16 -0
  92. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
  93. package/dist/components/docs/guides/GuidesIndexPage.js +2 -2
  94. package/dist/components/docs/guides/index.d.ts +1 -0
  95. package/dist/components/docs/guides/index.js +93 -39
  96. package/dist/components/docs/index.js +690 -419
  97. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
  98. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
  99. package/dist/components/docs/integrations/IntegrationsGithubPage.js +2 -2
  100. package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  101. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
  102. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
  103. package/dist/components/docs/integrations/IntegrationsMistralPage.js +2 -2
  104. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  105. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  106. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
  107. package/dist/components/docs/integrations/IntegrationsPowensPage.js +2 -2
  108. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
  109. package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -3
  110. package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -4
  111. package/dist/components/docs/integrations/IntegrationsSlackPage.js +2 -2
  112. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
  113. package/dist/components/docs/integrations/IntegrationsStripePage.js +2 -2
  114. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
  115. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
  116. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
  117. package/dist/components/docs/integrations/index.js +39 -39
  118. package/dist/components/docs/intent/ContractFirstApiPage.js +2 -2
  119. package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -2
  120. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
  121. package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -3
  122. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
  123. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
  124. package/dist/components/docs/intent/index.js +15 -15
  125. package/dist/components/docs/intent/intent-pages.docblocks.js +1 -1
  126. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
  127. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
  128. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  129. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
  130. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
  131. package/dist/components/docs/knowledge/index.js +5 -5
  132. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
  133. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
  134. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
  135. package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -2
  136. package/dist/components/docs/libraries/LibrariesContractsPage.js +43 -18
  137. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
  138. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.d.ts +67 -0
  139. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +86 -0
  140. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.d.ts +1 -0
  141. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.js +86 -0
  142. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
  143. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
  144. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +77 -29
  145. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
  146. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
  147. package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -3
  148. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
  149. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
  150. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
  151. package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  152. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
  153. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
  154. package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -4
  155. package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -2
  156. package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -3
  157. package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -3
  158. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
  159. package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -3
  160. package/dist/components/docs/libraries/LibrariesUIKitPage.js +42 -16
  161. package/dist/components/docs/libraries/LibrariesUIKitWebPage.d.ts +1 -0
  162. package/dist/components/docs/libraries/LibrariesUIKitWebPage.js +47 -0
  163. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
  164. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
  165. package/dist/components/docs/libraries/index.d.ts +2 -0
  166. package/dist/components/docs/libraries/index.js +338 -110
  167. package/dist/components/docs/manifesto/ManifestoPage.js +1 -1
  168. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
  169. package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -2
  170. package/dist/components/docs/ops/index.js +3 -3
  171. package/dist/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
  172. package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
  173. package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
  174. package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
  175. package/dist/components/docs/ops/ops-top.docs.js +2 -2
  176. package/dist/components/docs/ops/ops.docs.js +6 -6
  177. package/dist/components/docs/product/product.docblocks.js +2 -2
  178. package/dist/components/docs/reference/DocsMarkdownContent.js +2 -2
  179. package/dist/components/docs/reference/DocsReferenceContent.js +3 -3
  180. package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -2
  181. package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -2
  182. package/dist/components/docs/reference/DocsReferencePage.js +3 -3
  183. package/dist/components/docs/reference/docsMarkdownParser.js +2 -2
  184. package/dist/components/docs/reference/index.js +4 -4
  185. package/dist/components/docs/safety/SafetyAuditingPage.js +2 -2
  186. package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -2
  187. package/dist/components/docs/safety/SafetyOverviewPage.js +1 -1
  188. package/dist/components/docs/safety/SafetyPDPPage.js +2 -2
  189. package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -1
  190. package/dist/components/docs/safety/SafetySigningPage.js +3 -3
  191. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
  192. package/dist/components/docs/safety/index.js +7 -7
  193. package/dist/components/docs/shared/StudioPrompt.js +1 -1
  194. package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +18 -3
  195. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
  196. package/dist/components/docs/specs/SpecsConnectPage.js +4 -2
  197. package/dist/components/docs/specs/SpecsDataViewsPage.js +39 -32
  198. package/dist/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
  199. package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -2
  200. package/dist/components/docs/specs/SpecsOverviewPage.js +1 -1
  201. package/dist/components/docs/specs/SpecsPolicyPage.js +3 -3
  202. package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -2
  203. package/dist/components/docs/specs/index.js +66 -42
  204. package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
  205. package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
  206. package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
  207. package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
  208. package/dist/components/docs/studio/StudioOverviewPage.js +1 -1
  209. package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  210. package/dist/components/docs/studio/index.js +1 -1
  211. package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
  212. package/dist/components/integrations/index.js +2 -2
  213. package/dist/components/integrations/molecules/IntegrationCard.js +1 -1
  214. package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -1
  215. package/dist/components/integrations/organisms/IntegrationSettings.js +2 -2
  216. package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -1
  217. package/dist/components/legal/PrivacyTemplate.js +1 -1
  218. package/dist/components/legal/TermsTemplate.js +1 -1
  219. package/dist/components/legal/index.js +1 -1
  220. package/dist/components/shared/FeatureGateNotice.js +1 -1
  221. package/dist/components/shared/index.js +1 -1
  222. package/dist/components/shell/WorkspaceHeader.js +1 -1
  223. package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -1
  224. package/dist/components/shell/WorkspaceShellRenderer.js +1 -1
  225. package/dist/components/shell/WorkspaceSidebar.js +1 -1
  226. package/dist/components/shell/index.js +1 -1
  227. package/dist/components/templates/engine/index.js +1 -1
  228. package/dist/components/templates/index.js +11 -11
  229. package/dist/components/templates/messaging/ConversationList.js +2 -2
  230. package/dist/components/templates/messaging/MessageComposer.js +4 -4
  231. package/dist/components/templates/messaging/MessageThread.js +3 -3
  232. package/dist/components/templates/messaging/MessagingWorkspace.js +5 -5
  233. package/dist/components/templates/messaging/index.js +5 -5
  234. package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
  235. package/dist/components/templates/recipes/RecipeCard.js +1 -1
  236. package/dist/components/templates/recipes/RecipeDetail.js +1 -1
  237. package/dist/components/templates/recipes/RecipeList.js +3 -3
  238. package/dist/components/templates/recipes/index.js +3 -3
  239. package/dist/components/templates/todos/FilterBar.js +1 -1
  240. package/dist/components/templates/todos/TaskForm.js +2 -2
  241. package/dist/components/templates/todos/TaskItem.js +1 -1
  242. package/dist/components/templates/todos/TaskList.js +5 -5
  243. package/dist/components/templates/todos/index.js +5 -5
  244. package/dist/config/contractspec-blueprint.js +1 -1
  245. package/dist/config/contractspec-branding.js +1 -1
  246. package/dist/config/contractspec-routes.js +1 -1
  247. package/dist/config/index.js +1 -1
  248. package/dist/features/contracts-registry.js +1 -1
  249. package/dist/features/docs/docs.contracts.js +1 -1
  250. package/dist/features/docs/index.js +1 -1
  251. package/dist/features/docs.feature.js +1 -1
  252. package/dist/features/index.js +1 -1
  253. package/dist/features/mcp.feature.js +1 -1
  254. package/dist/features/presentations.feature.js +1 -1
  255. package/dist/features/registry.js +1 -1
  256. package/dist/index.d.ts +1 -0
  257. package/dist/index.js +701 -430
  258. package/dist/infrastructure/elysia/index.js +1 -1
  259. package/dist/infrastructure/elysia/logger.js +1 -1
  260. package/dist/infrastructure/index.js +1 -1
  261. package/dist/libs/email/client.js +1 -1
  262. package/dist/libs/email/contact.js +3 -3
  263. package/dist/libs/email/newsletter.js +3 -3
  264. package/dist/libs/email/utils.js +2 -2
  265. package/dist/libs/email/waitlist-application.js +3 -3
  266. package/dist/libs/email/waitlist.js +3 -3
  267. package/dist/libs/email.js +6 -6
  268. package/dist/libs/posthog/client.js +1 -1
  269. package/dist/libs/posthog/native.js +1 -1
  270. package/dist/libs/posthog/server.js +1 -1
  271. package/dist/libs/pricing-examples.js +1 -1
  272. package/dist/node/application/context-storage/index.js +1 -1
  273. package/dist/node/application/index.js +11 -11
  274. package/dist/node/application/mcp/cliMcp.js +6 -6
  275. package/dist/node/application/mcp/cliMcp.onboarding.js +1 -0
  276. package/dist/node/application/mcp/common.js +1 -1
  277. package/dist/node/application/mcp/contractsMcp.js +2 -2
  278. package/dist/node/application/mcp/contractsMcpAdoptionTools.js +1 -0
  279. package/dist/node/application/mcp/contractsMcpResources.js +2 -2
  280. package/dist/node/application/mcp/contractsMcpTools.js +1 -1
  281. package/dist/node/application/mcp/docsMcp.catalog.js +2 -2
  282. package/dist/node/application/mcp/docsMcp.data.js +1 -1
  283. package/dist/node/application/mcp/docsMcp.js +3 -3
  284. package/dist/node/application/mcp/docsMcp.prompts.js +3 -3
  285. package/dist/node/application/mcp/docsMcp.reference.js +2 -2
  286. package/dist/node/application/mcp/docsMcp.resources.js +2 -2
  287. package/dist/node/application/mcp/docsMcp.tools.js +2 -2
  288. package/dist/node/application/mcp/index.js +11 -11
  289. package/dist/node/application/mcp/internalMcp.js +2 -2
  290. package/dist/node/application/mcp/normalizeMcpRequest.js +1 -1
  291. package/dist/node/application/mcp/providerRankingMcp.js +1 -1
  292. package/dist/node/bundles/LibraryBundle.js +1 -1
  293. package/dist/node/bundles/index.js +1 -1
  294. package/dist/node/components/docs/DocsIndexPage.js +2 -2
  295. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +3 -3
  296. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
  297. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -2
  298. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
  299. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
  300. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
  301. package/dist/node/components/docs/advanced/index.js +9 -9
  302. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
  303. package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
  304. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
  305. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
  306. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
  307. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
  308. package/dist/node/components/docs/architecture/index.js +20 -20
  309. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
  310. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
  311. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
  312. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -1
  313. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -1
  314. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
  315. package/dist/node/components/docs/comparison/index.js +1 -1
  316. package/dist/node/components/docs/docsManifest.js +1 -1
  317. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -2
  318. package/dist/node/components/docs/ecosystem/PluginsPage.js +4 -4
  319. package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
  320. package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -3
  321. package/dist/node/components/docs/ecosystem/index.js +11 -11
  322. package/dist/node/components/docs/examples/DocsExamplesPage.js +1 -17
  323. package/dist/node/components/docs/examples/ExampleShowcasePage.js +2 -17
  324. package/dist/node/components/docs/examples/exampleShowcaseData.js +2 -17
  325. package/dist/node/components/docs/examples/index.js +2 -17
  326. package/dist/node/components/docs/generated/docs-index.generated.js +1 -1
  327. package/dist/node/components/docs/generated/index.js +1 -1
  328. package/dist/node/components/docs/generated/loader.js +1 -1
  329. package/dist/node/components/docs/getting-started/CLIPage.js +6 -5
  330. package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -1
  331. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +44 -67
  332. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -1
  333. package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -5
  334. package/dist/node/components/docs/getting-started/InstallationPage.js +3 -3
  335. package/dist/node/components/docs/getting-started/StartHerePage.js +4 -2
  336. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -2
  337. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
  338. package/dist/node/components/docs/getting-started/getting-started.docblocks.js +2 -2
  339. package/dist/node/components/docs/getting-started/index.js +60 -80
  340. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
  341. package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +30 -5
  342. package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -6
  343. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -3
  344. package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
  345. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
  346. package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +21 -6
  347. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
  348. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
  349. package/dist/node/components/docs/guides/GuideReleaseCapsulesPage.js +15 -0
  350. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
  351. package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -2
  352. package/dist/node/components/docs/guides/index.js +93 -39
  353. package/dist/node/components/docs/index.js +690 -419
  354. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
  355. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
  356. package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +2 -2
  357. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  358. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
  359. package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
  360. package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +2 -2
  361. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  362. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  363. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
  364. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +2 -2
  365. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
  366. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -3
  367. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -4
  368. package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +2 -2
  369. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
  370. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +2 -2
  371. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
  372. package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
  373. package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
  374. package/dist/node/components/docs/integrations/index.js +39 -39
  375. package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -2
  376. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -2
  377. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
  378. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -3
  379. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
  380. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
  381. package/dist/node/components/docs/intent/index.js +15 -15
  382. package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -1
  383. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
  384. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
  385. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  386. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
  387. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
  388. package/dist/node/components/docs/knowledge/index.js +5 -5
  389. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
  390. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
  391. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
  392. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -2
  393. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +43 -18
  394. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
  395. package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +85 -0
  396. package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.js +85 -0
  397. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
  398. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
  399. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +77 -29
  400. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
  401. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
  402. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -3
  403. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
  404. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
  405. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
  406. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  407. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
  408. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
  409. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -4
  410. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -2
  411. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -3
  412. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -3
  413. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
  414. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -3
  415. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +42 -16
  416. package/dist/node/components/docs/libraries/LibrariesUIKitWebPage.js +46 -0
  417. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
  418. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
  419. package/dist/node/components/docs/libraries/index.js +338 -110
  420. package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -1
  421. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
  422. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -2
  423. package/dist/node/components/docs/ops/index.js +3 -3
  424. package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
  425. package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
  426. package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
  427. package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
  428. package/dist/node/components/docs/ops/ops-top.docs.js +2 -2
  429. package/dist/node/components/docs/ops/ops.docs.js +6 -6
  430. package/dist/node/components/docs/product/product.docblocks.js +2 -2
  431. package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -2
  432. package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -3
  433. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -2
  434. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -2
  435. package/dist/node/components/docs/reference/DocsReferencePage.js +3 -3
  436. package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -2
  437. package/dist/node/components/docs/reference/index.js +4 -4
  438. package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -2
  439. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -2
  440. package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -1
  441. package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -2
  442. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -1
  443. package/dist/node/components/docs/safety/SafetySigningPage.js +3 -3
  444. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
  445. package/dist/node/components/docs/safety/index.js +7 -7
  446. package/dist/node/components/docs/shared/StudioPrompt.js +1 -1
  447. package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +18 -3
  448. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
  449. package/dist/node/components/docs/specs/SpecsConnectPage.js +4 -2
  450. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +39 -32
  451. package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
  452. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -2
  453. package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -1
  454. package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -3
  455. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -2
  456. package/dist/node/components/docs/specs/index.js +66 -42
  457. package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
  458. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
  459. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
  460. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
  461. package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -1
  462. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  463. package/dist/node/components/docs/studio/index.js +1 -1
  464. package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
  465. package/dist/node/components/integrations/index.js +2 -2
  466. package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -1
  467. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -1
  468. package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -2
  469. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -1
  470. package/dist/node/components/legal/PrivacyTemplate.js +1 -1
  471. package/dist/node/components/legal/TermsTemplate.js +1 -1
  472. package/dist/node/components/legal/index.js +1 -1
  473. package/dist/node/components/shared/FeatureGateNotice.js +1 -1
  474. package/dist/node/components/shared/index.js +1 -1
  475. package/dist/node/components/shell/WorkspaceHeader.js +1 -1
  476. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -1
  477. package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -1
  478. package/dist/node/components/shell/WorkspaceSidebar.js +1 -1
  479. package/dist/node/components/shell/index.js +1 -1
  480. package/dist/node/components/templates/engine/index.js +1 -1
  481. package/dist/node/components/templates/index.js +11 -11
  482. package/dist/node/components/templates/messaging/ConversationList.js +2 -2
  483. package/dist/node/components/templates/messaging/MessageComposer.js +4 -4
  484. package/dist/node/components/templates/messaging/MessageThread.js +3 -3
  485. package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -5
  486. package/dist/node/components/templates/messaging/index.js +5 -5
  487. package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
  488. package/dist/node/components/templates/recipes/RecipeCard.js +1 -1
  489. package/dist/node/components/templates/recipes/RecipeDetail.js +1 -1
  490. package/dist/node/components/templates/recipes/RecipeList.js +3 -3
  491. package/dist/node/components/templates/recipes/index.js +3 -3
  492. package/dist/node/components/templates/todos/FilterBar.js +1 -1
  493. package/dist/node/components/templates/todos/TaskForm.js +2 -2
  494. package/dist/node/components/templates/todos/TaskItem.js +1 -1
  495. package/dist/node/components/templates/todos/TaskList.js +5 -5
  496. package/dist/node/components/templates/todos/index.js +5 -5
  497. package/dist/node/config/contractspec-blueprint.js +1 -1
  498. package/dist/node/config/contractspec-branding.js +1 -1
  499. package/dist/node/config/contractspec-routes.js +1 -1
  500. package/dist/node/config/index.js +1 -1
  501. package/dist/node/features/contracts-registry.js +1 -1
  502. package/dist/node/features/docs/docs.contracts.js +1 -1
  503. package/dist/node/features/docs/index.js +1 -1
  504. package/dist/node/features/docs.feature.js +1 -1
  505. package/dist/node/features/index.js +1 -1
  506. package/dist/node/features/mcp.feature.js +1 -1
  507. package/dist/node/features/presentations.feature.js +1 -1
  508. package/dist/node/features/registry.js +1 -1
  509. package/dist/node/index.js +701 -430
  510. package/dist/node/infrastructure/elysia/index.js +1 -1
  511. package/dist/node/infrastructure/elysia/logger.js +1 -1
  512. package/dist/node/infrastructure/index.js +1 -1
  513. package/dist/node/libs/email/client.js +1 -1
  514. package/dist/node/libs/email/contact.js +3 -3
  515. package/dist/node/libs/email/newsletter.js +3 -3
  516. package/dist/node/libs/email/utils.js +2 -2
  517. package/dist/node/libs/email/waitlist-application.js +3 -3
  518. package/dist/node/libs/email/waitlist.js +3 -3
  519. package/dist/node/libs/email.js +6 -6
  520. package/dist/node/libs/posthog/client.js +1 -1
  521. package/dist/node/libs/posthog/native.js +1 -1
  522. package/dist/node/libs/posthog/server.js +1 -1
  523. package/dist/node/libs/pricing-examples.js +1 -1
  524. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
  525. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -1
  526. package/dist/node/presentation/features/atoms/index.js +1 -1
  527. package/dist/node/presentation/features/hooks/index.js +1 -1
  528. package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -1
  529. package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
  530. package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
  531. package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
  532. package/dist/node/presentation/features/index.js +1 -1
  533. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
  534. package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -1
  535. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
  536. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
  537. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  538. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
  539. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
  540. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
  541. package/dist/node/presentation/features/molecules/index.js +1 -1
  542. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -1
  543. package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
  544. package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -1
  545. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
  546. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
  547. package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -1
  548. package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -1
  549. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -1
  550. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -1
  551. package/dist/node/presentation/features/organisms/index.js +1 -1
  552. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
  553. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
  554. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
  555. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
  556. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
  557. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
  558. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
  559. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
  560. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
  561. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
  562. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
  563. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
  564. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
  565. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
  566. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
  567. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
  568. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
  569. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
  570. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
  571. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
  572. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
  573. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
  574. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
  575. package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -1
  576. package/dist/presentation/features/atoms/index.js +1 -1
  577. package/dist/presentation/features/hooks/index.js +1 -1
  578. package/dist/presentation/features/hooks/useContractsRegistry.js +1 -1
  579. package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
  580. package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
  581. package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
  582. package/dist/presentation/features/index.js +1 -1
  583. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
  584. package/dist/presentation/features/molecules/FeatureCard/index.js +1 -1
  585. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
  586. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
  587. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  588. package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
  589. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
  590. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
  591. package/dist/presentation/features/molecules/index.js +1 -1
  592. package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -1
  593. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
  594. package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -1
  595. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
  596. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
  597. package/dist/presentation/features/organisms/FeatureEventsList.js +1 -1
  598. package/dist/presentation/features/organisms/FeatureFormsList.js +1 -1
  599. package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -1
  600. package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -1
  601. package/dist/presentation/features/organisms/index.js +1 -1
  602. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
  603. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
  604. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
  605. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
  606. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
  607. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
  608. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
  609. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
  610. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
  611. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
  612. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
  613. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
  614. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
  615. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
  616. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
  617. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
  618. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
  619. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
  620. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
  621. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
  622. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
  623. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
  624. package/package.json +96 -23
  625. package/src/application/mcp/cliMcp.onboarding.ts +297 -0
  626. package/src/application/mcp/cliMcp.test.ts +99 -0
  627. package/src/application/mcp/cliMcp.ts +30 -3
  628. package/src/application/mcp/contractsMcp.test.ts +65 -0
  629. package/src/application/mcp/contractsMcpAdoptionTools.ts +131 -0
  630. package/src/application/mcp/contractsMcpResources.ts +49 -0
  631. package/src/application/mcp/contractsMcpTools.ts +2 -0
  632. package/src/application/mcp/contractsMcpTypes.ts +16 -0
  633. package/src/bundles/LibraryBundle.ts +19 -130
  634. package/src/components/docs/docsManifest.test.ts +14 -0
  635. package/src/components/docs/docsManifest.ts +22 -0
  636. package/src/components/docs/examples/DocsExamplesPage.tsx +6 -14
  637. package/src/components/docs/examples/ExampleShowcasePage.tsx +22 -18
  638. package/src/components/docs/examples/exampleShowcaseData.test.ts +22 -0
  639. package/src/components/docs/examples/exampleShowcaseData.ts +75 -50
  640. package/src/components/docs/generated/docs-index._common.json +9 -1
  641. package/src/components/docs/generated/docs-index.ai-chat.json +1 -1
  642. package/src/components/docs/generated/docs-index.app-config.json +4 -4
  643. package/src/components/docs/generated/docs-index.data-grid-showcase.json +9 -1
  644. package/src/components/docs/generated/docs-index.jobs.json +1 -1
  645. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +5 -5
  646. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +1 -1
  647. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +1 -1
  648. package/src/components/docs/generated/docs-index.learning-journey-registry.json +1 -1
  649. package/src/components/docs/generated/docs-index.learning-journey.json +27 -3
  650. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +8 -0
  651. package/src/components/docs/generated/docs-index.manifest.json +13 -13
  652. package/src/components/docs/generated/docs-index.mobile-demo-landing.json +42 -0
  653. package/src/components/docs/generated/docs-index.platform-agent.json +18 -2
  654. package/src/components/docs/generated/docs-index.platform-context.json +16 -0
  655. package/src/components/docs/generated/docs-index.platform-docs.json +9 -1
  656. package/src/components/docs/generated/docs-index.platform-provider-ranking.json +32 -0
  657. package/src/components/docs/generated/docs-index.wealth-snapshot.json +4 -4
  658. package/src/components/docs/generated/index.ts +20 -5
  659. package/src/components/docs/generated/loader.ts +15 -8
  660. package/src/components/docs/getting-started/CLIPage.tsx +10 -2
  661. package/src/components/docs/getting-started/CompatibilityPage.tsx +14 -0
  662. package/src/components/docs/getting-started/DataViewTutorialPage.tsx +63 -70
  663. package/src/components/docs/getting-started/StartHerePage.tsx +10 -9
  664. package/src/components/docs/guides/GuideConnectInRepoPage.tsx +52 -3
  665. package/src/components/docs/guides/GuideHostBuilderWorkbenchPage.tsx +55 -6
  666. package/src/components/docs/guides/GuideReleaseCapsulesPage.tsx +147 -0
  667. package/src/components/docs/guides/GuidesIndexPage.tsx +7 -0
  668. package/src/components/docs/guides/index.ts +1 -0
  669. package/src/components/docs/libraries/LibrariesContractsPage.tsx +72 -27
  670. package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.content.ts +252 -0
  671. package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.tsx +232 -0
  672. package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +140 -55
  673. package/src/components/docs/libraries/LibrariesOverviewPage.tsx +13 -1
  674. package/src/components/docs/libraries/LibrariesRuntimePage.tsx +15 -0
  675. package/src/components/docs/libraries/LibrariesUIKitPage.tsx +78 -25
  676. package/src/components/docs/libraries/LibrariesUIKitWebPage.tsx +129 -0
  677. package/src/components/docs/libraries/index.ts +2 -0
  678. package/src/components/docs/reference/DocsReferenceIndexPage.tsx +1 -1
  679. package/src/components/docs/specs/SpecsBuilderControlPlanePage.tsx +58 -3
  680. package/src/components/docs/specs/SpecsConnectPage.tsx +30 -0
  681. package/src/components/docs/specs/SpecsDataViewsPage.tsx +63 -42
  682. package/src/index.ts +1 -1
  683. package/src/components/docs/generated/docs-index.mobile-demo-tasks.json +0 -34
@@ -1,4 +1,4 @@
1
- import{CodeBlock as g}from"@contractspec/lib.design-system";import b from"@contractspec/lib.ui-link";import{ChevronRight as C}from"lucide-react";import{jsx as n,jsxs as r}from"react/jsx-runtime";function I(){return r("div",{className:"space-y-8",children:[r("div",{className:"space-y-4",children:[n("h1",{className:"font-bold text-4xl",children:"App Configuration"}),n("p",{className:"text-muted-foreground",children:"ContractSpec uses a three-tier configuration model that separates global app definitions from tenant-specific settings and runtime resolution."})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"AppBlueprintSpec"}),r("p",{className:"text-muted-foreground",children:["The ",n("strong",{children:"AppBlueprintSpec"})," is the global, versioned definition of your application. It contains no tenant-specific information and is stored in version control."]}),n(g,{language:"typescript",code:`type AppBlueprintSpec = {
1
+ var A=Object.defineProperty;var S=(m)=>m;function P(m,u){this[m]=S.bind(null,u)}var V=(m,u)=>{for(var v in u)A(m,v,{get:u[v],enumerable:!0,configurable:!0,set:P.bind(u,v)})};var W=(m,u)=>()=>(m&&(u=m(m=0)),u);import{CodeBlock as h}from"@contractspec/lib.design-system";import w from"@contractspec/lib.ui-link";import{ChevronRight as _}from"lucide-react";import{jsx as n,jsxs as r}from"react/jsx-runtime";function T(){return r("div",{className:"space-y-8",children:[r("div",{className:"space-y-4",children:[n("h1",{className:"font-bold text-4xl",children:"App Configuration"}),n("p",{className:"text-muted-foreground",children:"ContractSpec uses a three-tier configuration model that separates global app definitions from tenant-specific settings and runtime resolution."})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"AppBlueprintSpec"}),r("p",{className:"text-muted-foreground",children:["The ",n("strong",{children:"AppBlueprintSpec"})," is the global, versioned definition of your application. It contains no tenant-specific information and is stored in version control."]}),n(h,{language:"typescript",code:`type AppBlueprintSpec = {
2
2
  id: string;
3
3
  version: string;
4
4
  name: string;
@@ -35,7 +35,7 @@ import{CodeBlock as g}from"@contractspec/lib.design-system";import b from"@contr
35
35
 
36
36
  // Schema evolution
37
37
  migrations: MigrationSpec[];
38
- };`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"TenantAppConfig"}),r("p",{className:"text-muted-foreground",children:["The ",n("strong",{children:"TenantAppConfig"})," is the per-tenant, per-environment configuration that customizes how a specific tenant uses the app."]}),n(g,{language:"typescript",code:`type TenantAppConfig = {
38
+ };`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"TenantAppConfig"}),r("p",{className:"text-muted-foreground",children:["The ",n("strong",{children:"TenantAppConfig"})," is the per-tenant, per-environment configuration that customizes how a specific tenant uses the app."]}),n(h,{language:"typescript",code:`type TenantAppConfig = {
39
39
  tenantId: string;
40
40
  blueprintId: string;
41
41
  blueprintVersion: string;
@@ -66,7 +66,7 @@ import{CodeBlock as g}from"@contractspec/lib.design-system";import b from"@contr
66
66
  metadata: Record<string, unknown>;
67
67
  createdAt: string;
68
68
  updatedAt: string;
69
- };`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"AppIntegrationBinding"}),n("p",{className:"text-muted-foreground",children:"Defines how a tenant connects specific integration instances to satisfy capabilities and workflows."}),n(g,{language:"typescript",code:`type AppIntegrationBinding = {
69
+ };`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"AppIntegrationBinding"}),n("p",{className:"text-muted-foreground",children:"Defines how a tenant connects specific integration instances to satisfy capabilities and workflows."}),n(h,{language:"typescript",code:`type AppIntegrationBinding = {
70
70
  slotId: string; // References AppIntegrationSlot.slotId
71
71
  connectionId: string; // References IntegrationConnection.meta.id
72
72
  scope?: {
@@ -86,7 +86,7 @@ import{CodeBlock as g}from"@contractspec/lib.design-system";import b from"@contr
86
86
  operations: ["payments.stripe.*"]
87
87
  },
88
88
  priority: 1
89
- }`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"AppKnowledgeBinding"}),n("p",{className:"text-muted-foreground",children:"Defines which knowledge spaces a tenant's app can access and how."}),n(g,{language:"typescript",code:`type AppKnowledgeBinding = {
89
+ }`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"AppKnowledgeBinding"}),n("p",{className:"text-muted-foreground",children:"Defines which knowledge spaces a tenant's app can access and how."}),n(h,{language:"typescript",code:`type AppKnowledgeBinding = {
90
90
  spaceId: string;
91
91
  enabled: boolean;
92
92
 
@@ -116,7 +116,7 @@ import{CodeBlock as g}from"@contractspec/lib.design-system";import b from"@contr
116
116
  },
117
117
  allowedCategories: ["canonical", "operational"],
118
118
  sources: ["src_notion_product_docs", "src_database_schema"]
119
- }`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"ResolvedAppConfig"}),r("p",{className:"text-muted-foreground",children:["The ",n("strong",{children:"ResolvedAppConfig"})," is the runtime result of merging AppBlueprintSpec with TenantAppConfig. It's computed on-demand and never persisted."]}),n(g,{language:"typescript",code:`type ResolvedAppConfig = {
119
+ }`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"ResolvedAppConfig"}),r("p",{className:"text-muted-foreground",children:["The ",n("strong",{children:"ResolvedAppConfig"})," is the runtime result of merging AppBlueprintSpec with TenantAppConfig. It's computed on-demand and never persisted."]}),n(h,{language:"typescript",code:`type ResolvedAppConfig = {
120
120
  appId: string;
121
121
  tenantId: string;
122
122
  blueprintName: string;
@@ -143,7 +143,7 @@ import{CodeBlock as g}from"@contractspec/lib.design-system";import b from"@contr
143
143
  knowledge: ResolvedKnowledge[]; // [{ binding, space, sources }]
144
144
  branding: ResolvedBranding; // { appName, assets, colors, domain }
145
145
  notes?: string;
146
- };`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"Configuration flow"}),n("p",{className:"text-muted-foreground",children:"Here's how configuration flows from definition to runtime:"}),r("ol",{className:"list-inside list-decimal space-y-3 text-muted-foreground",children:[r("li",{children:[n("strong",{children:"Development"})," - Define AppBlueprintSpec with required integrations and knowledge spaces"]}),r("li",{children:[n("strong",{children:"Deployment"})," - Deploy blueprint to environment (sandbox, staging, production)"]}),r("li",{children:[n("strong",{children:"Tenant Setup"})," - Create TenantAppConfig with specific integration connections and knowledge sources"]}),r("li",{children:[n("strong",{children:"Runtime"})," - Resolve configuration on-demand when tenant accesses the app"]}),r("li",{children:[n("strong",{children:"Execution"})," - Use ResolvedAppConfig to execute capabilities, workflows, and enforce policies"]})]})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"Best practices"}),r("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[n("li",{children:"Keep AppBlueprintSpec environment-agnostic - no secrets or tenant-specific data"}),n("li",{children:"Use TenantAppConfig for all tenant-specific settings and connections"}),n("li",{children:"Cache ResolvedAppConfig per request to avoid repeated resolution"}),n("li",{children:"Version blueprints carefully - migrations affect all tenants"}),n("li",{children:"Test blueprint changes in sandbox before promoting to production"})]})]}),r("div",{className:"flex items-center gap-4 pt-4",children:[n(b,{href:"/docs/architecture",className:"btn-ghost",children:"Back to Architecture"}),r(b,{href:"/docs/architecture/integration-binding",className:"btn-primary",children:["Integration Binding ",n(C,{size:16})]})]})]})}import{CodeBlock as v}from"@contractspec/lib.design-system";import h from"@contractspec/lib.ui-link";import{ChevronRight as A}from"lucide-react";import{jsx as o,jsxs as p}from"react/jsx-runtime";function S(){return p("div",{className:"space-y-8",children:[p("div",{className:"space-y-4",children:[o("h1",{className:"font-bold text-4xl",children:"Control Plane Runtime"}),o("p",{className:"text-muted-foreground",children:"The control plane is the governance layer for agentic execution. It turns incoming intent into deterministic plans, enforces risk policy before side effects, and records replayable traces for audits."})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Canonical execution loop"}),p("ol",{className:"list-inside list-decimal space-y-2 text-muted-foreground",children:[o("li",{children:"Accept intent and create execution identity + trace context."}),o("li",{children:"Compile intent into a typed, deterministic plan DAG."}),o("li",{children:"Verify plan against policy and risk rules."}),o("li",{children:"Route into autonomous or assist mode based on verdict."}),o("li",{children:"Execute steps with idempotent keys and explicit stage events."}),o("li",{children:"Persist outcomes for replay, audits, and operator visibility."})]})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Contract surfaces (v1 baseline)"}),p("p",{className:"text-muted-foreground",children:["The runtime is contract-first. Commands, queries, events, and capabilities are explicit and versioned under",o("code",{children:" @contractspec/lib.contracts-spec"}),"."]}),o(v,{language:"text",code:`Commands
146
+ };`})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"Configuration flow"}),n("p",{className:"text-muted-foreground",children:"Here's how configuration flows from definition to runtime:"}),r("ol",{className:"list-inside list-decimal space-y-3 text-muted-foreground",children:[r("li",{children:[n("strong",{children:"Development"})," - Define AppBlueprintSpec with required integrations and knowledge spaces"]}),r("li",{children:[n("strong",{children:"Deployment"})," - Deploy blueprint to environment (sandbox, staging, production)"]}),r("li",{children:[n("strong",{children:"Tenant Setup"})," - Create TenantAppConfig with specific integration connections and knowledge sources"]}),r("li",{children:[n("strong",{children:"Runtime"})," - Resolve configuration on-demand when tenant accesses the app"]}),r("li",{children:[n("strong",{children:"Execution"})," - Use ResolvedAppConfig to execute capabilities, workflows, and enforce policies"]})]})]}),r("div",{className:"space-y-4",children:[n("h2",{className:"font-bold text-2xl",children:"Best practices"}),r("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[n("li",{children:"Keep AppBlueprintSpec environment-agnostic - no secrets or tenant-specific data"}),n("li",{children:"Use TenantAppConfig for all tenant-specific settings and connections"}),n("li",{children:"Cache ResolvedAppConfig per request to avoid repeated resolution"}),n("li",{children:"Version blueprints carefully - migrations affect all tenants"}),n("li",{children:"Test blueprint changes in sandbox before promoting to production"})]})]}),r("div",{className:"flex items-center gap-4 pt-4",children:[n(w,{href:"/docs/architecture",className:"btn-ghost",children:"Back to Architecture"}),r(w,{href:"/docs/architecture/integration-binding",className:"btn-primary",children:["Integration Binding ",n(_,{size:16})]})]})]})}import{CodeBlock as N}from"@contractspec/lib.design-system";import b from"@contractspec/lib.ui-link";import{ChevronRight as B}from"lucide-react";import{jsx as o,jsxs as p}from"react/jsx-runtime";function R(){return p("div",{className:"space-y-8",children:[p("div",{className:"space-y-4",children:[o("h1",{className:"font-bold text-4xl",children:"Control Plane Runtime"}),o("p",{className:"text-muted-foreground",children:"The control plane is the governance layer for agentic execution. It turns incoming intent into deterministic plans, enforces risk policy before side effects, and records replayable traces for audits."})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Canonical execution loop"}),p("ol",{className:"list-inside list-decimal space-y-2 text-muted-foreground",children:[o("li",{children:"Accept intent and create execution identity + trace context."}),o("li",{children:"Compile intent into a typed, deterministic plan DAG."}),o("li",{children:"Verify plan against policy and risk rules."}),o("li",{children:"Route into autonomous or assist mode based on verdict."}),o("li",{children:"Execute steps with idempotent keys and explicit stage events."}),o("li",{children:"Persist outcomes for replay, audits, and operator visibility."})]})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Contract surfaces (v1 baseline)"}),p("p",{className:"text-muted-foreground",children:["The runtime is contract-first. Commands, queries, events, and capabilities are explicit and versioned under",o("code",{children:" @contractspec/lib.contracts-spec"}),"."]}),o(N,{language:"text",code:`Commands
147
147
  - controlPlane.intent.submit
148
148
  - controlPlane.plan.compile
149
149
  - controlPlane.plan.verify
@@ -179,7 +179,7 @@ Capabilities
179
179
  - control-plane.approval
180
180
  - control-plane.audit
181
181
  - control-plane.skill-registry
182
- - control-plane.channel-runtime`})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Policy and safety posture"}),p("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[o("li",{children:"No side-effect action executes unless it comes from a compiled plan."}),o("li",{children:"High-risk actions are blocked from autonomous mode in v1."}),o("li",{children:"Approval commands provide explicit human-in-the-loop transitions."}),o("li",{children:"Skill installation is modeled as governance-controlled operations."}),o("li",{children:"Trace queries expose policy rationale and step outcomes for replay."})]})]}),p("section",{className:"editorial-panel space-y-4",children:[o("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:"Apply the runtime locally with Connect"}),o("p",{className:"text-muted-foreground text-sm leading-7",children:"The control plane defines the governance contracts. Connect is the local adapter that turns those contracts into task-scoped context, plan, verification, review, and replay flows for coding agents."}),p("div",{className:"flex flex-wrap gap-3",children:[o(h,{href:"/docs/specs/connect",className:"btn-primary",children:"Connect spec"}),o(h,{href:"/docs/guides/connect-in-a-repo",className:"btn-ghost",children:"Use Connect in a repo"})]})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Implementation map"}),o(v,{language:"text",code:`packages/libs/contracts-spec/src/control-plane/
182
+ - control-plane.channel-runtime`})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Policy and safety posture"}),p("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[o("li",{children:"No side-effect action executes unless it comes from a compiled plan."}),o("li",{children:"High-risk actions are blocked from autonomous mode in v1."}),o("li",{children:"Approval commands provide explicit human-in-the-loop transitions."}),o("li",{children:"Skill installation is modeled as governance-controlled operations."}),o("li",{children:"Trace queries expose policy rationale and step outcomes for replay."})]})]}),p("section",{className:"editorial-panel space-y-4",children:[o("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:"Apply the runtime locally with Connect"}),o("p",{className:"text-muted-foreground text-sm leading-7",children:"The control plane defines the governance contracts. Connect is the local adapter that turns those contracts into task-scoped context, plan, verification, review, and replay flows for coding agents."}),p("div",{className:"flex flex-wrap gap-3",children:[o(b,{href:"/docs/specs/connect",className:"btn-primary",children:"Connect spec"}),o(b,{href:"/docs/guides/connect-in-a-repo",className:"btn-ghost",children:"Use Connect in a repo"})]})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"Implementation map"}),o(N,{language:"text",code:`packages/libs/contracts-spec/src/control-plane/
183
183
  commands/
184
184
  queries/
185
185
  events/
@@ -188,7 +188,7 @@ Capabilities
188
188
  contracts.test.ts
189
189
 
190
190
  packages/apps/web-landing/src/app/docs/architecture/control-plane/page.tsx
191
- implementation_plan_controle_plane.md`})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"What comes next"}),o("p",{className:"text-muted-foreground",children:"WS1 delivers the contract fabric. Next increments add planner/executor split, policy escalation, capability-bound authorization, signed skill compatibility checks, and full replay tooling."})]}),p("div",{className:"flex items-center gap-4 pt-4",children:[o(h,{href:"/docs/architecture/integration-binding",className:"btn-ghost",children:"Previous: Integration Binding"}),p(h,{href:"/docs/safety/auditing",className:"btn-primary",children:["Audit Logs ",o(A,{size:16})]})]})]})}import{CodeBlock as m}from"@contractspec/lib.design-system";import w from"@contractspec/lib.ui-link";import{ChevronRight as P}from"lucide-react";import{jsx as t,jsxs as s}from"react/jsx-runtime";function _(){return s("div",{className:"space-y-8",children:[s("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Integration Binding"}),t("p",{className:"text-muted-foreground",children:"Integration binding connects your app's capabilities to external service providers. Each tenant can configure their own integration connections while sharing the same app blueprint."})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"How it works"}),t("p",{className:"text-muted-foreground",children:"Integration binding follows a three-layer model:"}),s("ol",{className:"list-inside list-decimal space-y-3 text-muted-foreground",children:[s("li",{children:[t("strong",{children:"IntegrationSpec"})," (global) - Defines what an integration provides"]}),s("li",{children:[t("strong",{children:"IntegrationConnection"})," (per-tenant) - A tenant's configured connection"]}),s("li",{children:[t("strong",{children:"AppIntegrationBinding"})," (per-app) - Maps named slots to concrete tenant connections"]})]})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Example: Payment processing"}),t("p",{className:"text-muted-foreground",children:"Let's walk through a complete example of binding Stripe for payments."}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 1: Blueprint declares requirement"}),t(m,{language:"typescript",code:`// AppBlueprintSpec
191
+ implementation_plan_controle_plane.md`})]}),p("div",{className:"space-y-4",children:[o("h2",{className:"font-bold text-2xl",children:"What comes next"}),o("p",{className:"text-muted-foreground",children:"WS1 delivers the contract fabric. Next increments add planner/executor split, policy escalation, capability-bound authorization, signed skill compatibility checks, and full replay tooling."})]}),p("div",{className:"flex items-center gap-4 pt-4",children:[o(b,{href:"/docs/architecture/integration-binding",className:"btn-ghost",children:"Previous: Integration Binding"}),p(b,{href:"/docs/safety/auditing",className:"btn-primary",children:["Audit Logs ",o(B,{size:16})]})]})]})}import{CodeBlock as g}from"@contractspec/lib.design-system";import k from"@contractspec/lib.ui-link";import{ChevronRight as q}from"lucide-react";import{jsx as t,jsxs as s}from"react/jsx-runtime";function L(){return s("div",{className:"space-y-8",children:[s("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Integration Binding"}),t("p",{className:"text-muted-foreground",children:"Integration binding connects your app's capabilities to external service providers. Each tenant can configure their own integration connections while sharing the same app blueprint."})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"How it works"}),t("p",{className:"text-muted-foreground",children:"Integration binding follows a three-layer model:"}),s("ol",{className:"list-inside list-decimal space-y-3 text-muted-foreground",children:[s("li",{children:[t("strong",{children:"IntegrationSpec"})," (global) - Defines what an integration provides"]}),s("li",{children:[t("strong",{children:"IntegrationConnection"})," (per-tenant) - A tenant's configured connection"]}),s("li",{children:[t("strong",{children:"AppIntegrationBinding"})," (per-app) - Maps named slots to concrete tenant connections"]})]})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Example: Payment processing"}),t("p",{className:"text-muted-foreground",children:"Let's walk through a complete example of binding Stripe for payments."}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 1: Blueprint declares requirement"}),t(g,{language:"typescript",code:`// AppBlueprintSpec
192
192
  {
193
193
  meta: { name: "invoice-app", version: '1.0.0', appId: "invoice" },
194
194
  integrationSlots: [
@@ -212,7 +212,7 @@ implementation_plan_controle_plane.md`})]}),p("div",{className:"space-y-4",child
212
212
  assets: [{ type: "logo", url: "https://cdn.acme.dev/logo.png" }],
213
213
  colorTokens: { primary: "colors.brand.primary" }
214
214
  }
215
- }`})]}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 2: Tenant creates connection"}),t(m,{language:"typescript",code:`// IntegrationConnection
215
+ }`})]}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 2: Tenant creates connection"}),t(g,{language:"typescript",code:`// IntegrationConnection
216
216
  {
217
217
  meta: {
218
218
  id: "conn_stripe_acme_prod",
@@ -232,7 +232,7 @@ implementation_plan_controle_plane.md`})]}),p("div",{className:"space-y-4",child
232
232
  },
233
233
  secretRef: "vault://integrations/acme/conn_stripe_acme_prod",
234
234
  status: "active"
235
- }`})]}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 3: TenantAppConfig binds connection"}),t(m,{language:"typescript",code:`// TenantAppConfig
235
+ }`})]}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 3: TenantAppConfig binds connection"}),t(g,{language:"typescript",code:`// TenantAppConfig
236
236
  {
237
237
  meta: {
238
238
  tenantId: "acme-corp",
@@ -258,7 +258,7 @@ implementation_plan_controle_plane.md`})]}),p("div",{className:"space-y-4",child
258
258
  customDomain: "billing.acme.com",
259
259
  assets: [{ type: "logo", url: "https://assets.acme.com/logo.svg" }]
260
260
  }
261
- }`})]}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 4: Runtime resolves and executes"}),t(m,{language:"typescript",code:`// ResolvedAppConfig (runtime)
261
+ }`})]}),s("div",{className:"space-y-3",children:[t("h3",{className:"font-semibold text-lg",children:"Step 4: Runtime resolves and executes"}),t(g,{language:"typescript",code:`// ResolvedAppConfig (runtime)
262
262
  {
263
263
  integrations: {
264
264
  "payments.createPaymentIntent": {
@@ -275,7 +275,7 @@ const result = await executeCapability(
275
275
  { amount: 5000, currency: "usd" },
276
276
  resolvedConfig
277
277
  );
278
- // → Uses Stripe connection automatically`})]})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Multi-integration scenarios"}),t("p",{className:"text-muted-foreground",children:"A single app can use multiple integrations across different categories:"}),t(m,{language:"typescript",code:`integrations: [
278
+ // → Uses Stripe connection automatically`})]})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Multi-integration scenarios"}),t("p",{className:"text-muted-foreground",children:"A single app can use multiple integrations across different categories:"}),t(g,{language:"typescript",code:`integrations: [
279
279
  {
280
280
  slotId: "payments.primary",
281
281
  connectionId: "conn_stripe_prod",
@@ -301,7 +301,7 @@ const result = await executeCapability(
301
301
  workflows: ["semantic-search", "rag-query"]
302
302
  }
303
303
  }
304
- ]`})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Sandbox vs Production"}),t("p",{className:"text-muted-foreground",children:"Tenants typically maintain separate connections for sandbox and production environments:"}),t(m,{language:"typescript",code:`// Sandbox environment
304
+ ]`})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Sandbox vs Production"}),t("p",{className:"text-muted-foreground",children:"Tenants typically maintain separate connections for sandbox and production environments:"}),t(g,{language:"typescript",code:`// Sandbox environment
305
305
  {
306
306
  meta: { environment: "sandbox", status: "preview" },
307
307
  integrations: [
@@ -321,7 +321,7 @@ const result = await executeCapability(
321
321
  connectionId: "conn_stripe_acme_prod"
322
322
  }
323
323
  ]
324
- }`})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Security & validation"}),s("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[t("li",{children:"Integration connections are validated before binding - health checks ensure connectivity"}),t("li",{children:"Secrets are never stored in TenantAppConfig - only references to encrypted secrets"}),t("li",{children:"Policy Decision Point (PDP) enforces which workflows can use which integrations"}),t("li",{children:"All integration calls are audited with full request/response logging"}),t("li",{children:"Rate limiting and quotas are enforced per connection"})]})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Best practices"}),s("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[s("li",{children:["Use wildcard patterns sparingly in ",t("code",{children:"allowedWorkflows"})," - be explicit about access"]}),t("li",{children:"Always maintain separate sandbox and production connections"}),t("li",{children:"Monitor integration health checks and set up alerts for failures"}),t("li",{children:"Document the purpose of each integration binding for your team"}),t("li",{children:"Test integration changes in sandbox before promoting to production"})]})]}),s("div",{className:"flex items-center gap-4 pt-4",children:[t(w,{href:"/docs/architecture/app-config",className:"btn-ghost",children:"Previous: App Configuration"}),s(w,{href:"/docs/architecture/knowledge-binding",className:"btn-primary",children:["Knowledge Binding ",t(P,{size:16})]})]})]})}import{CodeBlock as f}from"@contractspec/lib.design-system";import N from"@contractspec/lib.ui-link";import{ChevronRight as T}from"lucide-react";import{jsx as e,jsxs as a}from"react/jsx-runtime";function B(){return a("div",{className:"space-y-8",children:[a("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"Knowledge Binding"}),e("p",{className:"text-muted-foreground",children:"Knowledge binding connects your app's workflows and agents to structured knowledge spaces. This enables semantic search, RAG (Retrieval-Augmented Generation), and context-aware decision-making."})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"How it works"}),e("p",{className:"text-muted-foreground",children:"Knowledge binding follows a three-layer model:"}),a("ol",{className:"list-inside list-decimal space-y-3 text-muted-foreground",children:[a("li",{children:[e("strong",{children:"KnowledgeSpaceSpec"})," (global) - Defines a logical knowledge domain"]}),a("li",{children:[e("strong",{children:"KnowledgeSourceConfig"})," (per-tenant) - Tenant's data sources feeding spaces"]}),a("li",{children:[e("strong",{children:"AppKnowledgeBinding"})," (per-app) - Maps spaces to workflows/agents"]})]})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Example: Support agent with RAG"}),e("p",{className:"text-muted-foreground",children:"Let's build a support agent that uses canonical product documentation and operational support history."}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 1: Blueprint declares knowledge needs"}),e(f,{language:"typescript",code:`// AppBlueprintSpec
324
+ }`})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Security & validation"}),s("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[t("li",{children:"Integration connections are validated before binding - health checks ensure connectivity"}),t("li",{children:"Secrets are never stored in TenantAppConfig - only references to encrypted secrets"}),t("li",{children:"Policy Decision Point (PDP) enforces which workflows can use which integrations"}),t("li",{children:"All integration calls are audited with full request/response logging"}),t("li",{children:"Rate limiting and quotas are enforced per connection"})]})]}),s("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Best practices"}),s("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[s("li",{children:["Use wildcard patterns sparingly in ",t("code",{children:"allowedWorkflows"})," - be explicit about access"]}),t("li",{children:"Always maintain separate sandbox and production connections"}),t("li",{children:"Monitor integration health checks and set up alerts for failures"}),t("li",{children:"Document the purpose of each integration binding for your team"}),t("li",{children:"Test integration changes in sandbox before promoting to production"})]})]}),s("div",{className:"flex items-center gap-4 pt-4",children:[t(k,{href:"/docs/architecture/app-config",className:"btn-ghost",children:"Previous: App Configuration"}),s(k,{href:"/docs/architecture/knowledge-binding",className:"btn-primary",children:["Knowledge Binding ",t(q,{size:16})]})]})]})}import{CodeBlock as y}from"@contractspec/lib.design-system";import C from"@contractspec/lib.ui-link";import{ChevronRight as K}from"lucide-react";import{jsx as e,jsxs as a}from"react/jsx-runtime";function D(){return a("div",{className:"space-y-8",children:[a("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"Knowledge Binding"}),e("p",{className:"text-muted-foreground",children:"Knowledge binding connects your app's workflows and agents to structured knowledge spaces. This enables semantic search, RAG (Retrieval-Augmented Generation), and context-aware decision-making."})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"How it works"}),e("p",{className:"text-muted-foreground",children:"Knowledge binding follows a three-layer model:"}),a("ol",{className:"list-inside list-decimal space-y-3 text-muted-foreground",children:[a("li",{children:[e("strong",{children:"KnowledgeSpaceSpec"})," (global) - Defines a logical knowledge domain"]}),a("li",{children:[e("strong",{children:"KnowledgeSourceConfig"})," (per-tenant) - Tenant's data sources feeding spaces"]}),a("li",{children:[e("strong",{children:"AppKnowledgeBinding"})," (per-app) - Maps spaces to workflows/agents"]})]})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Example: Support agent with RAG"}),e("p",{className:"text-muted-foreground",children:"Let's build a support agent that uses canonical product documentation and operational support history."}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 1: Blueprint declares knowledge needs"}),e(y,{language:"typescript",code:`// AppBlueprintSpec
325
325
  {
326
326
  id: "support-app",
327
327
  version: "1.0.0",
@@ -345,7 +345,7 @@ const result = await executeCapability(
345
345
  purpose: "Third-party integration documentation"
346
346
  }
347
347
  ]
348
- }`})]}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 2: Tenant configures sources"}),e(f,{language:"typescript",code:`// KnowledgeSourceConfig (per-tenant)
348
+ }`})]}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 2: Tenant configures sources"}),e(y,{language:"typescript",code:`// KnowledgeSourceConfig (per-tenant)
349
349
  [
350
350
  {
351
351
  id: "src_notion_product_docs",
@@ -374,7 +374,7 @@ const result = await executeCapability(
374
374
  syncPolicy: { interval: "24h" },
375
375
  lastSyncedAt: "2025-01-15T00:00:00Z"
376
376
  }
377
- ]`})]}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 3: TenantAppConfig binds spaces"}),e(f,{language:"typescript",code:`// TenantAppConfig
377
+ ]`})]}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 3: TenantAppConfig binds spaces"}),e(y,{language:"typescript",code:`// TenantAppConfig
378
378
  {
379
379
  tenantId: "acme-corp",
380
380
  blueprintId: "support-app",
@@ -410,7 +410,7 @@ const result = await executeCapability(
410
410
  sources: ["src_stripe_docs"]
411
411
  }
412
412
  ]
413
- }`})]}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 4: Workflow uses knowledge"}),e(f,{language:"yaml",code:`// WorkflowSpec
413
+ }`})]}),a("div",{className:"space-y-3",children:[e("h3",{className:"font-semibold text-lg",children:"Step 4: Workflow uses knowledge"}),e(y,{language:"yaml",code:`// WorkflowSpec
414
414
  workflowId: answer-question
415
415
  version: '1.0.0'.0.0
416
416
 
@@ -452,7 +452,7 @@ steps:
452
452
  \${steps.search-canonical.output.results}
453
453
 
454
454
  Support history:
455
- \${steps.search-support-history.output.results}`})]})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Category-based access control"}),e("p",{className:"text-muted-foreground",children:"Different knowledge categories have different trust levels and access patterns:"}),e("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:a("table",{className:"w-full text-left text-sm",children:[e("thead",{className:"bg-card/50",children:a("tr",{className:"border-border/50 border-b",children:[e("th",{className:"px-4 py-3 font-semibold",children:"Category"}),e("th",{className:"px-4 py-3 font-semibold",children:"Trust Level"}),e("th",{className:"px-4 py-3 font-semibold",children:"Use Cases"}),e("th",{className:"px-4 py-3 font-semibold",children:"Policy Impact"})]})}),a("tbody",{className:"divide-y divide-border/50",children:[a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"canonical"}),e("td",{className:"px-4 py-3",children:"Highest"}),e("td",{className:"px-4 py-3",children:"Product specs, schemas, official policies"}),e("td",{className:"px-4 py-3",children:"Can drive policy decisions"})]}),a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"operational"}),e("td",{className:"px-4 py-3",children:"High"}),e("td",{className:"px-4 py-3",children:"Support tickets, sales docs, internal runbooks"}),e("td",{className:"px-4 py-3",children:"Can inform decisions"})]}),a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"external"}),e("td",{className:"px-4 py-3",children:"Medium"}),e("td",{className:"px-4 py-3",children:"Third-party docs, regulations, PSP guides"}),e("td",{className:"px-4 py-3",children:"Reference only, not authoritative"})]}),a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"ephemeral"}),e("td",{className:"px-4 py-3",children:"Low"}),e("td",{className:"px-4 py-3",children:"Agent scratchpads, session context, drafts"}),e("td",{className:"px-4 py-3",children:"Never used for decisions"})]})]})]})})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Multi-space workflows"}),e("p",{className:"text-muted-foreground",children:"Workflows can query multiple knowledge spaces and combine results:"}),e(f,{language:"typescript",code:`knowledgeBindings: [
455
+ \${steps.search-support-history.output.results}`})]})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Category-based access control"}),e("p",{className:"text-muted-foreground",children:"Different knowledge categories have different trust levels and access patterns:"}),e("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:a("table",{className:"w-full text-left text-sm",children:[e("thead",{className:"bg-card/50",children:a("tr",{className:"border-border/50 border-b",children:[e("th",{className:"px-4 py-3 font-semibold",children:"Category"}),e("th",{className:"px-4 py-3 font-semibold",children:"Trust Level"}),e("th",{className:"px-4 py-3 font-semibold",children:"Use Cases"}),e("th",{className:"px-4 py-3 font-semibold",children:"Policy Impact"})]})}),a("tbody",{className:"divide-y divide-border/50",children:[a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"canonical"}),e("td",{className:"px-4 py-3",children:"Highest"}),e("td",{className:"px-4 py-3",children:"Product specs, schemas, official policies"}),e("td",{className:"px-4 py-3",children:"Can drive policy decisions"})]}),a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"operational"}),e("td",{className:"px-4 py-3",children:"High"}),e("td",{className:"px-4 py-3",children:"Support tickets, sales docs, internal runbooks"}),e("td",{className:"px-4 py-3",children:"Can inform decisions"})]}),a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"external"}),e("td",{className:"px-4 py-3",children:"Medium"}),e("td",{className:"px-4 py-3",children:"Third-party docs, regulations, PSP guides"}),e("td",{className:"px-4 py-3",children:"Reference only, not authoritative"})]}),a("tr",{children:[e("td",{className:"px-4 py-3 font-mono text-xs",children:"ephemeral"}),e("td",{className:"px-4 py-3",children:"Low"}),e("td",{className:"px-4 py-3",children:"Agent scratchpads, session context, drafts"}),e("td",{className:"px-4 py-3",children:"Never used for decisions"})]})]})]})})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Multi-space workflows"}),e("p",{className:"text-muted-foreground",children:"Workflows can query multiple knowledge spaces and combine results:"}),e(y,{language:"typescript",code:`knowledgeBindings: [
456
456
  {
457
457
  spaceId: "product-canon",
458
458
  enabled: true,
@@ -480,11 +480,11 @@ steps:
480
480
  allowedCategories: ["operational"],
481
481
  sources: ["src_crm_data", "src_past_invoices"]
482
482
  }
483
- ]`})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Security & validation"}),a("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[e("li",{children:"Knowledge sources are validated before sync - credentials and permissions checked"}),e("li",{children:"PDP enforces which workflows/agents can access which spaces"}),e("li",{children:"All knowledge queries are audited with search terms and results"}),e("li",{children:"Canonical knowledge is immutable once indexed - changes require re-sync"}),e("li",{children:"Ephemeral knowledge is automatically purged based on retention policies"})]})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Best practices"}),a("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[e("li",{children:"Use canonical spaces for policy-critical decisions, operational for suggestions"}),e("li",{children:"Never allow workflows to write to canonical spaces - maintain read-only access"}),e("li",{children:"Set up monitoring for sync failures and stale knowledge sources"}),e("li",{children:"Document the purpose and trust level of each knowledge space"}),e("li",{children:"Test knowledge queries in sandbox before promoting to production"}),a("li",{children:["Use explicit ",e("code",{children:"allowedConsumers"})," - avoid wildcard access"]})]})]}),a("div",{className:"flex items-center gap-4 pt-4",children:[e(N,{href:"/docs/architecture/integration-binding",className:"btn-ghost",children:"Previous: Integration Binding"}),a(N,{href:"/docs/knowledge",className:"btn-primary",children:["Knowledge & Context ",e(T,{size:16})]})]})]})}import{CodeBlock as R}from"@contractspec/lib.design-system";import k from"@contractspec/lib.ui-link";import{ChevronRight as q}from"lucide-react";import{jsx as c,jsxs as l}from"react/jsx-runtime";function L(){return l("div",{className:"space-y-8",children:[l("div",{className:"space-y-4",children:[c("h1",{className:"font-bold text-4xl",children:"Multi-Tenancy"}),c("p",{className:"text-muted-foreground",children:"ContractSpec is designed from the ground up for multi-tenancy. Apps built with ContractSpec can serve multiple organizations (tenants) from a single deployment, while ensuring strict data isolation and configuration separation."})]}),l("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Core Concepts"}),l("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[l("li",{children:[c("strong",{children:"Tenant"}),": An organization or customer that uses your app. Each tenant has a unique ",c("code",{children:"tenantId"}),"."]}),l("li",{children:[c("strong",{children:"Tenant Isolation"}),": Data and configuration for one tenant is never accessible to another tenant unless explicitly shared."]}),l("li",{children:[c("strong",{children:"Tenant Context"}),": Every request and operation runs within the context of a specific tenant."]})]})]}),l("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Tenant Resolution"}),c("p",{className:"text-muted-foreground",children:"The runtime automatically resolves the tenant context for every request based on:"}),l("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[l("li",{children:["Subdomain (e.g., ",c("code",{children:"acme.app.com"}),")"]}),l("li",{children:["Custom Domain (e.g., ",c("code",{children:"portal.acme.com"}),")"]}),l("li",{children:["Header (e.g., ",c("code",{children:"x-tenant-id: acme-corp"}),")"]}),c("li",{children:"Authentication Token (embedded tenant claim)"})]})]}),l("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Configuration Isolation"}),l("p",{className:"text-muted-foreground",children:["Each tenant has its own ",c("code",{children:"TenantAppConfig"})," which defines:"]}),c(R,{language:"typescript",code:`type TenantAppConfig = {
483
+ ]`})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Security & validation"}),a("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[e("li",{children:"Knowledge sources are validated before sync - credentials and permissions checked"}),e("li",{children:"PDP enforces which workflows/agents can access which spaces"}),e("li",{children:"All knowledge queries are audited with search terms and results"}),e("li",{children:"Canonical knowledge is immutable once indexed - changes require re-sync"}),e("li",{children:"Ephemeral knowledge is automatically purged based on retention policies"})]})]}),a("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Best practices"}),a("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[e("li",{children:"Use canonical spaces for policy-critical decisions, operational for suggestions"}),e("li",{children:"Never allow workflows to write to canonical spaces - maintain read-only access"}),e("li",{children:"Set up monitoring for sync failures and stale knowledge sources"}),e("li",{children:"Document the purpose and trust level of each knowledge space"}),e("li",{children:"Test knowledge queries in sandbox before promoting to production"}),a("li",{children:["Use explicit ",e("code",{children:"allowedConsumers"})," - avoid wildcard access"]})]})]}),a("div",{className:"flex items-center gap-4 pt-4",children:[e(C,{href:"/docs/architecture/integration-binding",className:"btn-ghost",children:"Previous: Integration Binding"}),a(C,{href:"/docs/knowledge",className:"btn-primary",children:["Knowledge & Context ",e(K,{size:16})]})]})]})}import{CodeBlock as E}from"@contractspec/lib.design-system";import I from"@contractspec/lib.ui-link";import{ChevronRight as M}from"lucide-react";import{jsx as c,jsxs as l}from"react/jsx-runtime";function U(){return l("div",{className:"space-y-8",children:[l("div",{className:"space-y-4",children:[c("h1",{className:"font-bold text-4xl",children:"Multi-Tenancy"}),c("p",{className:"text-muted-foreground",children:"ContractSpec is designed from the ground up for multi-tenancy. Apps built with ContractSpec can serve multiple organizations (tenants) from a single deployment, while ensuring strict data isolation and configuration separation."})]}),l("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Core Concepts"}),l("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[l("li",{children:[c("strong",{children:"Tenant"}),": An organization or customer that uses your app. Each tenant has a unique ",c("code",{children:"tenantId"}),"."]}),l("li",{children:[c("strong",{children:"Tenant Isolation"}),": Data and configuration for one tenant is never accessible to another tenant unless explicitly shared."]}),l("li",{children:[c("strong",{children:"Tenant Context"}),": Every request and operation runs within the context of a specific tenant."]})]})]}),l("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Tenant Resolution"}),c("p",{className:"text-muted-foreground",children:"The runtime automatically resolves the tenant context for every request based on:"}),l("ul",{className:"list-inside list-disc space-y-2 text-muted-foreground",children:[l("li",{children:["Subdomain (e.g., ",c("code",{children:"acme.app.com"}),")"]}),l("li",{children:["Custom Domain (e.g., ",c("code",{children:"portal.acme.com"}),")"]}),l("li",{children:["Header (e.g., ",c("code",{children:"x-tenant-id: acme-corp"}),")"]}),c("li",{children:"Authentication Token (embedded tenant claim)"})]})]}),l("div",{className:"space-y-4",children:[c("h2",{className:"font-bold text-2xl",children:"Configuration Isolation"}),l("p",{className:"text-muted-foreground",children:["Each tenant has its own ",c("code",{children:"TenantAppConfig"})," which defines:"]}),c(E,{language:"typescript",code:`type TenantAppConfig = {
484
484
  tenantId: string;
485
485
  blueprintId: string;
486
486
  // ...
487
487
  integrationBindings: AppIntegrationBinding[];
488
488
  knowledgeBindings: AppKnowledgeBinding[];
489
489
  featureFlags: Record<string, boolean>;
490
- };`}),c("p",{className:"mt-2 text-muted-foreground",children:"This allows you to customize feature flags, integration connections, and knowledge sources per tenant without changing the application code."})]}),l("div",{className:"flex items-center gap-4 pt-4",children:[c(k,{href:"/docs/architecture",className:"btn-ghost",children:"Back to Architecture"}),l(k,{href:"/docs/libraries/multi-tenancy",className:"btn-primary",children:["Multi-Tenancy Library ",c(q,{size:16})]})]})]})}import u from"@contractspec/lib.ui-link";import{jsx as i,jsxs as d}from"react/jsx-runtime";var K=[{title:"Contracts and schemas",body:"Explicit specs define the durable boundary for behavior, data, and governance."},{title:"Bindings and configuration",body:"Apps, tenants, integrations, and knowledge sources are wired through explicit configuration instead of hidden glue."},{title:"Runtimes and generators",body:"Serve or generate aligned surfaces for API, UI, workflows, docs, and agent-facing interfaces."},{title:"Operate and observe",body:"Carry auditability, policy, tracing, migrations, and tenant isolation through the same model."}];function D(){return d("div",{className:"space-y-10",children:[d("div",{className:"space-y-3",children:[i("p",{className:"editorial-kicker",children:"Build"}),i("h1",{className:"font-serif text-4xl tracking-[-0.04em] md:text-5xl",children:"The architecture keeps contracts, runtime behavior, and operations in the same system."}),i("p",{className:"max-w-3xl text-lg text-muted-foreground leading-8",children:"ContractSpec is not a single runtime. It is a layered system that lets you define explicit boundaries, bind real-world configuration, and then serve or generate aligned surfaces without losing control of the output."})]}),i("div",{className:"grid gap-4 md:grid-cols-2",children:K.map((y)=>d("article",{className:"editorial-panel space-y-3",children:[i("h2",{className:"font-semibold text-xl",children:y.title}),i("p",{className:"text-muted-foreground text-sm leading-7",children:y.body})]},y.title))}),d("section",{className:"editorial-panel space-y-5",children:[d("div",{className:"space-y-2",children:[i("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:"UI composition belongs in the bundle runtime layer"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"When the system needs adaptive layouts, entity workbenches, assistant slots, and safe overlays, use module bundles as the layer between the contract model and the rendered surface."})]}),d("div",{className:"grid gap-4 md:grid-cols-2",children:[d(u,{href:"/docs/specs/module-bundles",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Module bundles spec"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"See the typed bundle contract, resolved surface plan model, and bounded AI/runtime behavior."})]}),d(u,{href:"/docs/guides/first-module-bundle",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Build a first module bundle"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"Follow the route-to-plan-to-render path with one practical host example."})]})]})]}),d("section",{className:"editorial-panel space-y-5",children:[d("div",{className:"space-y-2",children:[i("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:"Follow the architecture by responsibility"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"Use the architecture pages when you need to understand how the pieces snap together in a real deployment."})]}),d("div",{className:"grid gap-4 md:grid-cols-2",children:[d(u,{href:"/docs/architecture/app-config",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"App configuration"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How blueprint-level and tenant-level config stay explicit and merge safely."})]}),d(u,{href:"/docs/architecture/integration-binding",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Integration binding"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How apps connect to tenant-owned integrations without leaking provider logic everywhere."})]}),d(u,{href:"/docs/architecture/knowledge-binding",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Knowledge binding"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How trusted knowledge enters the system and stays isolated by context and tenant."})]}),d(u,{href:"/docs/architecture/control-plane",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Control plane runtime"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How intent, policy, planning, and execution flow through the system runtime."})]})]})]})]})}export{D as ArchitectureOverviewPage,L as ArchitectureMultiTenancyPage,B as ArchitectureKnowledgeBindingPage,_ as ArchitectureIntegrationBindingPage,S as ArchitectureControlPlanePage,I as ArchitectureAppConfigPage};
490
+ };`}),c("p",{className:"mt-2 text-muted-foreground",children:"This allows you to customize feature flags, integration connections, and knowledge sources per tenant without changing the application code."})]}),l("div",{className:"flex items-center gap-4 pt-4",children:[c(I,{href:"/docs/architecture",className:"btn-ghost",children:"Back to Architecture"}),l(I,{href:"/docs/libraries/multi-tenancy",className:"btn-primary",children:["Multi-Tenancy Library ",c(M,{size:16})]})]})]})}import f from"@contractspec/lib.ui-link";import{jsx as i,jsxs as d}from"react/jsx-runtime";var z=[{title:"Contracts and schemas",body:"Explicit specs define the durable boundary for behavior, data, and governance."},{title:"Bindings and configuration",body:"Apps, tenants, integrations, and knowledge sources are wired through explicit configuration instead of hidden glue."},{title:"Runtimes and generators",body:"Serve or generate aligned surfaces for API, UI, workflows, docs, and agent-facing interfaces."},{title:"Operate and observe",body:"Carry auditability, policy, tracing, migrations, and tenant isolation through the same model."}];function H(){return d("div",{className:"space-y-10",children:[d("div",{className:"space-y-3",children:[i("p",{className:"editorial-kicker",children:"Build"}),i("h1",{className:"font-serif text-4xl tracking-[-0.04em] md:text-5xl",children:"The architecture keeps contracts, runtime behavior, and operations in the same system."}),i("p",{className:"max-w-3xl text-lg text-muted-foreground leading-8",children:"ContractSpec is not a single runtime. It is a layered system that lets you define explicit boundaries, bind real-world configuration, and then serve or generate aligned surfaces without losing control of the output."})]}),i("div",{className:"grid gap-4 md:grid-cols-2",children:z.map((m)=>d("article",{className:"editorial-panel space-y-3",children:[i("h2",{className:"font-semibold text-xl",children:m.title}),i("p",{className:"text-muted-foreground text-sm leading-7",children:m.body})]},m.title))}),d("section",{className:"editorial-panel space-y-5",children:[d("div",{className:"space-y-2",children:[i("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:"UI composition belongs in the bundle runtime layer"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"When the system needs adaptive layouts, entity workbenches, assistant slots, and safe overlays, use module bundles as the layer between the contract model and the rendered surface."})]}),d("div",{className:"grid gap-4 md:grid-cols-2",children:[d(f,{href:"/docs/specs/module-bundles",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Module bundles spec"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"See the typed bundle contract, resolved surface plan model, and bounded AI/runtime behavior."})]}),d(f,{href:"/docs/guides/first-module-bundle",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Build a first module bundle"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"Follow the route-to-plan-to-render path with one practical host example."})]})]})]}),d("section",{className:"editorial-panel space-y-5",children:[d("div",{className:"space-y-2",children:[i("h2",{className:"font-serif text-3xl tracking-[-0.03em]",children:"Follow the architecture by responsibility"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"Use the architecture pages when you need to understand how the pieces snap together in a real deployment."})]}),d("div",{className:"grid gap-4 md:grid-cols-2",children:[d(f,{href:"/docs/architecture/app-config",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"App configuration"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How blueprint-level and tenant-level config stay explicit and merge safely."})]}),d(f,{href:"/docs/architecture/integration-binding",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Integration binding"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How apps connect to tenant-owned integrations without leaking provider logic everywhere."})]}),d(f,{href:"/docs/architecture/knowledge-binding",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Knowledge binding"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How trusted knowledge enters the system and stays isolated by context and tenant."})]}),d(f,{href:"/docs/architecture/control-plane",className:"docs-footer-link",children:[i("h3",{className:"font-semibold text-lg",children:"Control plane runtime"}),i("p",{className:"text-muted-foreground text-sm leading-7",children:"How intent, policy, planning, and execution flow through the system runtime."})]})]})]})]})}export{H as ArchitectureOverviewPage,U as ArchitectureMultiTenancyPage,D as ArchitectureKnowledgeBindingPage,L as ArchitectureIntegrationBindingPage,R as ArchitectureControlPlanePage,T as ArchitectureAppConfigPage};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as a}from"react/jsx-runtime";function e(){return a("div",{className:"space-y-8",children:[a("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Automation platforms"}),t("p",{className:"text-muted-foreground",children:"Automation platforms connect apps and automate tasks through triggers and actions. They serve operations and non-technical users well but stop short of generating full applications or enforcing fine-grained policies."})]}),a("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Feature comparison"}),t("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:a("table",{className:"w-full text-left text-sm",children:[t("thead",{className:"bg-card/50",children:a("tr",{className:"border-border/50 border-b",children:[t("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),t("th",{className:"px-4 py-3 font-semibold",children:"Zapier"}),t("th",{className:"px-4 py-3 font-semibold",children:"Make (Integromat)"}),t("th",{className:"px-4 py-3 font-semibold",children:"n8n"}),t("th",{className:"px-4 py-3 font-semibold",children:"Pipedream"})]})}),a("tbody",{className:"divide-y divide-border/50",children:[a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Workflow model"}),t("td",{className:"px-4 py-3 align-top",children:"Zaps: trigger + one or more actions"}),t("td",{className:"px-4 py-3 align-top",children:"Real-time visual orchestration for AI agents and automations"}),t("td",{className:"px-4 py-3 align-top",children:"Node-based workflow builder with drag-and-drop and code; build multi-step AI agents"}),t("td",{className:"px-4 py-3 align-top",children:"Workflows connect any API; Pipedream Connect SDK adds integrations quickly"})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Visual builder?"}),t("td",{className:"px-4 py-3 align-top",children:"Yes (simple; web-based)."}),t("td",{className:"px-4 py-3 align-top",children:"Yes; AI-assisted editor"}),t("td",{className:"px-4 py-3 align-top",children:"Yes; visual canvas."}),t("td",{className:"px-4 py-3 align-top",children:"Code-centric editor; no visual UI builder"})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Self-host?"}),t("td",{className:"px-4 py-3 align-top",children:"No (cloud only)."}),t("td",{className:"px-4 py-3 align-top",children:"Cloud only."}),t("td",{className:"px-4 py-3 align-top",children:"Yes (Docker, self-host)"}),t("td",{className:"px-4 py-3 align-top",children:"Cloud only (hosted)."})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Integrations & AI"}),t("td",{className:"px-4 py-3 align-top",children:"Connects almost 8 000 apps; limited AI features."}),t("td",{className:"px-4 py-3 align-top",children:"3 000+ pre-built apps; supports GenAI tools; GDPR/SOC2 and SSO"}),t("td",{className:"px-4 py-3 align-top",children:"Integrates LLMs; allows JS or Python code and library imports; chatbots with Slack/Teams"}),t("td",{className:"px-4 py-3 align-top",children:"MCP servers add 3 000+ APIs and 10 000+ tools to agents; AI agent builder prompts and deploys agents; SOC 2/ HIPAA/GDPR compliant"})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Policy & UI generation"}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; does not generate user interfaces."}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; does not generate UIs beyond a workflow dashboard."}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; no UI builder"}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; does not generate UI."})]})]})]})})]}),a("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Why ContractSpec differs"}),a("ul",{className:"space-y-2 text-muted-foreground",children:[a("li",{children:[t("strong",{children:"Full application generation"})," – ContractSpec compiles specs into back-end, events and user interfaces for both web and mobile."]}),a("li",{children:[t("strong",{children:"Policy enforcement"})," – A built-in policy engine governs PII access and mutations across the UI."]}),a("li",{children:[t("strong",{children:"Customisation via overlays"})," – Non-technical users can safely personalise layouts while respecting policies."]}),a("li",{children:[t("strong",{children:"Extensible capabilities"})," – Connect to external APIs and services via capability providers while maintaining type safety."]})]}),t("p",{className:"text-muted-foreground",children:"Automation tools simplify integrations and tasks; ContractSpec goes further by generating a complete, policy-safe application around your data and processes."})]})]})}export{e as ComparisonAutomationPlatformsPage};
1
+ var l=Object.defineProperty;var i=(e)=>e;function s(e,o){this[e]=i.bind(null,o)}var p=(e,o)=>{for(var n in o)l(e,n,{get:o[n],enumerable:!0,configurable:!0,set:s.bind(o,n)})};var d=(e,o)=>()=>(e&&(o=e(e=0)),o);import{jsx as t,jsxs as a}from"react/jsx-runtime";function c(){return a("div",{className:"space-y-8",children:[a("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Automation platforms"}),t("p",{className:"text-muted-foreground",children:"Automation platforms connect apps and automate tasks through triggers and actions. They serve operations and non-technical users well but stop short of generating full applications or enforcing fine-grained policies."})]}),a("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Feature comparison"}),t("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:a("table",{className:"w-full text-left text-sm",children:[t("thead",{className:"bg-card/50",children:a("tr",{className:"border-border/50 border-b",children:[t("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),t("th",{className:"px-4 py-3 font-semibold",children:"Zapier"}),t("th",{className:"px-4 py-3 font-semibold",children:"Make (Integromat)"}),t("th",{className:"px-4 py-3 font-semibold",children:"n8n"}),t("th",{className:"px-4 py-3 font-semibold",children:"Pipedream"})]})}),a("tbody",{className:"divide-y divide-border/50",children:[a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Workflow model"}),t("td",{className:"px-4 py-3 align-top",children:"Zaps: trigger + one or more actions"}),t("td",{className:"px-4 py-3 align-top",children:"Real-time visual orchestration for AI agents and automations"}),t("td",{className:"px-4 py-3 align-top",children:"Node-based workflow builder with drag-and-drop and code; build multi-step AI agents"}),t("td",{className:"px-4 py-3 align-top",children:"Workflows connect any API; Pipedream Connect SDK adds integrations quickly"})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Visual builder?"}),t("td",{className:"px-4 py-3 align-top",children:"Yes (simple; web-based)."}),t("td",{className:"px-4 py-3 align-top",children:"Yes; AI-assisted editor"}),t("td",{className:"px-4 py-3 align-top",children:"Yes; visual canvas."}),t("td",{className:"px-4 py-3 align-top",children:"Code-centric editor; no visual UI builder"})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Self-host?"}),t("td",{className:"px-4 py-3 align-top",children:"No (cloud only)."}),t("td",{className:"px-4 py-3 align-top",children:"Cloud only."}),t("td",{className:"px-4 py-3 align-top",children:"Yes (Docker, self-host)"}),t("td",{className:"px-4 py-3 align-top",children:"Cloud only (hosted)."})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Integrations & AI"}),t("td",{className:"px-4 py-3 align-top",children:"Connects almost 8 000 apps; limited AI features."}),t("td",{className:"px-4 py-3 align-top",children:"3 000+ pre-built apps; supports GenAI tools; GDPR/SOC2 and SSO"}),t("td",{className:"px-4 py-3 align-top",children:"Integrates LLMs; allows JS or Python code and library imports; chatbots with Slack/Teams"}),t("td",{className:"px-4 py-3 align-top",children:"MCP servers add 3 000+ APIs and 10 000+ tools to agents; AI agent builder prompts and deploys agents; SOC 2/ HIPAA/GDPR compliant"})]}),a("tr",{children:[t("td",{className:"px-4 py-3 align-top font-semibold",children:"Policy & UI generation"}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; does not generate user interfaces."}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; does not generate UIs beyond a workflow dashboard."}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; no UI builder"}),t("td",{className:"px-4 py-3 align-top",children:"No policy engine; does not generate UI."})]})]})]})})]}),a("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Why ContractSpec differs"}),a("ul",{className:"space-y-2 text-muted-foreground",children:[a("li",{children:[t("strong",{children:"Full application generation"})," – ContractSpec compiles specs into back-end, events and user interfaces for both web and mobile."]}),a("li",{children:[t("strong",{children:"Policy enforcement"})," – A built-in policy engine governs PII access and mutations across the UI."]}),a("li",{children:[t("strong",{children:"Customisation via overlays"})," – Non-technical users can safely personalise layouts while respecting policies."]}),a("li",{children:[t("strong",{children:"Extensible capabilities"})," – Connect to external APIs and services via capability providers while maintaining type safety."]})]}),t("p",{className:"text-muted-foreground",children:"Automation tools simplify integrations and tasks; ContractSpec goes further by generating a complete, policy-safe application around your data and processes."})]})]})}export{c as ComparisonAutomationPlatformsPage};
@@ -1 +1 @@
1
- import v from"@contractspec/lib.ui-link";import{jsx as g,jsxs as q}from"react/jsx-runtime";function A(){return q("div",{className:"space-y-8",children:[q("div",{className:"space-y-4",children:[g("h1",{className:"font-bold text-4xl",children:"Enterprise orchestration platforms"}),g("p",{className:"text-muted-foreground",children:"Enterprise orchestration platforms manage mission-critical workloads and integrate deeply with ERP systems. They prioritise governance, reliability and compliance, but they do not provide spec-driven app generation or per-user customisation."})]}),q("div",{className:"space-y-4",children:[g("h2",{className:"font-bold text-2xl",children:"Redwood RunMyJobs"}),q("p",{className:"text-muted-foreground",children:[g(v,{href:"https://www.redwood.com/workload-automation/",className:"underline decoration-dotted underline-offset-4 hover:text-foreground",target:"_blank",rel:"noreferrer",children:"RunMyJobs by Redwood"})," ","is a cloud-native service orchestration and automation platform. Key attributes include:"]}),q("ul",{className:"space-y-2 text-muted-foreground",children:[q("li",{children:[g("strong",{children:"Self-service portal."})," Business users can run and customise workloads while IT ensures governance and compliance"]}),q("li",{children:[g("strong",{children:"Full-stack orchestration."})," Integrates with both SAP and non-SAP systems; Redwood is recognised as a Leader in Gartner’s Magic Quadrant for service orchestration"]}),q("li",{children:[g("strong",{children:"Observability and AI insights."})," Dashboards and AI-enhanced analytics identify bottlenecks and forecast issues"]}),q("li",{children:[g("strong",{children:"Deep SAP integration."})," Supports SAP’s latest technologies and orchestrates mission-critical business processes"]}),q("li",{children:[g("strong",{children:"Connectors & wizard."})," Provides pre-built connectors and a wizard to link on-prem and cloud systems"]})]})]}),q("div",{className:"space-y-4",children:[g("h3",{className:"font-semibold text-xl",children:"Comparison with ContractSpec"}),g("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:q("table",{className:"w-full text-left text-sm",children:[g("thead",{className:"bg-card/50",children:q("tr",{className:"border-border/50 border-b",children:[g("th",{className:"px-4 py-3 font-semibold",children:"Aspect"}),g("th",{className:"px-4 py-3 font-semibold",children:"RunMyJobs"}),g("th",{className:"px-4 py-3 font-semibold",children:"ContractSpec"})]})}),q("tbody",{className:"divide-y divide-border/50",children:[q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Target user"})}),g("td",{className:"px-4 py-3 align-top",children:"Enterprise IT and operations teams automating SAP and mission-critical workflows."}),g("td",{className:"px-4 py-3 align-top",children:"Developers, product teams and SMBs wanting to generate policy-safe apps with customisable UIs."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Workload focus"})}),g("td",{className:"px-4 py-3 align-top",children:"Service orchestration and job scheduling across ERP/legacy systems"}),g("td",{className:"px-4 py-3 align-top",children:"End-to-end application generation with back-end, UI and policies."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"User interface"})}),g("td",{className:"px-4 py-3 align-top",children:"Self-service portal to run/monitor jobs; no custom UI generation for new apps."}),g("td",{className:"px-4 py-3 align-top",children:"Generates React/React-Native UIs from specs; users can personalise layout via overlays."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Open source"})}),g("td",{className:"px-4 py-3 align-top",children:"Proprietary SaaS; enterprise agreements."}),g("td",{className:"px-4 py-3 align-top",children:"Core compiler is proprietary; SDK and certain modules may be open-source; offers hosted and on-prem options."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Policy & personalisation"})}),g("td",{className:"px-4 py-3 align-top",children:"IT controls governance; no per-user overlay concept."}),g("td",{className:"px-4 py-3 align-top",children:"Built-in policy engine and per-user overlays for safe personalisation."})]})]})]})}),g("p",{className:"text-muted-foreground",children:"Redwood RunMyJobs is designed for orchestrating enterprise workloads and SAP processes. ContractSpec targets a different problem: generating complete applications from typed specs and letting end users adapt them safely."})]})]})}export{A as ComparisonEnterprisePlatformsPage};
1
+ var B=Object.defineProperty;var D=(v)=>v;function E(v,z){this[v]=D.bind(null,z)}var G=(v,z)=>{for(var A in z)B(v,A,{get:z[A],enumerable:!0,configurable:!0,set:E.bind(z,A)})};var H=(v,z)=>()=>(v&&(z=v(v=0)),z);import F from"@contractspec/lib.ui-link";import{jsx as g,jsxs as q}from"react/jsx-runtime";function N(){return q("div",{className:"space-y-8",children:[q("div",{className:"space-y-4",children:[g("h1",{className:"font-bold text-4xl",children:"Enterprise orchestration platforms"}),g("p",{className:"text-muted-foreground",children:"Enterprise orchestration platforms manage mission-critical workloads and integrate deeply with ERP systems. They prioritise governance, reliability and compliance, but they do not provide spec-driven app generation or per-user customisation."})]}),q("div",{className:"space-y-4",children:[g("h2",{className:"font-bold text-2xl",children:"Redwood RunMyJobs"}),q("p",{className:"text-muted-foreground",children:[g(F,{href:"https://www.redwood.com/workload-automation/",className:"underline decoration-dotted underline-offset-4 hover:text-foreground",target:"_blank",rel:"noreferrer",children:"RunMyJobs by Redwood"})," ","is a cloud-native service orchestration and automation platform. Key attributes include:"]}),q("ul",{className:"space-y-2 text-muted-foreground",children:[q("li",{children:[g("strong",{children:"Self-service portal."})," Business users can run and customise workloads while IT ensures governance and compliance"]}),q("li",{children:[g("strong",{children:"Full-stack orchestration."})," Integrates with both SAP and non-SAP systems; Redwood is recognised as a Leader in Gartner’s Magic Quadrant for service orchestration"]}),q("li",{children:[g("strong",{children:"Observability and AI insights."})," Dashboards and AI-enhanced analytics identify bottlenecks and forecast issues"]}),q("li",{children:[g("strong",{children:"Deep SAP integration."})," Supports SAP’s latest technologies and orchestrates mission-critical business processes"]}),q("li",{children:[g("strong",{children:"Connectors & wizard."})," Provides pre-built connectors and a wizard to link on-prem and cloud systems"]})]})]}),q("div",{className:"space-y-4",children:[g("h3",{className:"font-semibold text-xl",children:"Comparison with ContractSpec"}),g("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:q("table",{className:"w-full text-left text-sm",children:[g("thead",{className:"bg-card/50",children:q("tr",{className:"border-border/50 border-b",children:[g("th",{className:"px-4 py-3 font-semibold",children:"Aspect"}),g("th",{className:"px-4 py-3 font-semibold",children:"RunMyJobs"}),g("th",{className:"px-4 py-3 font-semibold",children:"ContractSpec"})]})}),q("tbody",{className:"divide-y divide-border/50",children:[q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Target user"})}),g("td",{className:"px-4 py-3 align-top",children:"Enterprise IT and operations teams automating SAP and mission-critical workflows."}),g("td",{className:"px-4 py-3 align-top",children:"Developers, product teams and SMBs wanting to generate policy-safe apps with customisable UIs."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Workload focus"})}),g("td",{className:"px-4 py-3 align-top",children:"Service orchestration and job scheduling across ERP/legacy systems"}),g("td",{className:"px-4 py-3 align-top",children:"End-to-end application generation with back-end, UI and policies."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"User interface"})}),g("td",{className:"px-4 py-3 align-top",children:"Self-service portal to run/monitor jobs; no custom UI generation for new apps."}),g("td",{className:"px-4 py-3 align-top",children:"Generates React/React-Native UIs from specs; users can personalise layout via overlays."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Open source"})}),g("td",{className:"px-4 py-3 align-top",children:"Proprietary SaaS; enterprise agreements."}),g("td",{className:"px-4 py-3 align-top",children:"Core compiler is proprietary; SDK and certain modules may be open-source; offers hosted and on-prem options."})]}),q("tr",{children:[g("td",{className:"px-4 py-3 align-top",children:g("strong",{children:"Policy & personalisation"})}),g("td",{className:"px-4 py-3 align-top",children:"IT controls governance; no per-user overlay concept."}),g("td",{className:"px-4 py-3 align-top",children:"Built-in policy engine and per-user overlays for safe personalisation."})]})]})]})}),g("p",{className:"text-muted-foreground",children:"Redwood RunMyJobs is designed for orchestrating enterprise workloads and SAP processes. ContractSpec targets a different problem: generating complete applications from typed specs and letting end users adapt them safely."})]})]})}export{N as ComparisonEnterprisePlatformsPage};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";function a(){return t("div",{className:"space-y-8",children:[t("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"Internal-tool builders"}),e("p",{className:"text-muted-foreground",children:"Internal-tool builders let teams quickly assemble dashboards and admin panels. These platforms often provide drag-and-drop UIs and connectors to databases and APIs, but they rely on developers to write custom code for business logic and seldom enforce policies across surfaces."})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Feature comparison"}),e("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:t("table",{className:"w-full text-left text-sm",children:[e("thead",{className:"bg-card/50",children:t("tr",{className:"border-border/50 border-b",children:[e("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),e("th",{className:"px-4 py-3 font-semibold",children:"Retool"}),e("th",{className:"px-4 py-3 font-semibold",children:"Appsmith"}),e("th",{className:"px-4 py-3 font-semibold",children:"ToolJet"}),e("th",{className:"px-4 py-3 font-semibold",children:"Budibase"})]})}),t("tbody",{className:"divide-y divide-border/50",children:[t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"UI builder"}),e("td",{className:"px-4 py-3 align-top",children:"Drag-and-drop canvas; shape UI components easily"}),e("td",{className:"px-4 py-3 align-top",children:"Visual builder with drag-and-drop widgets"}),e("td",{className:"px-4 py-3 align-top",children:"Drag-and-drop UI widgets (tables, charts, forms)"}),e("td",{className:"px-4 py-3 align-top",children:"Pre-built components and templates for mobile/desktop"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Custom code & logic"}),e("td",{className:"px-4 py-3 align-top",children:"Full code insertion anywhere via IDE"}),e("td",{className:"px-4 py-3 align-top",children:"Logic via JavaScript or natural-language prompts in a central IDE"}),e("td",{className:"px-4 py-3 align-top",children:"Supports business logic in JavaScript or Python queries"}),e("td",{className:"px-4 py-3 align-top",children:"Custom logic via JavaScript; plugins and external embeds"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Data connectors"}),e("td",{className:"px-4 py-3 align-top",children:"Wide support for databases and APIs (PostgreSQL, MongoDB, GraphQL, etc.)."}),e("td",{className:"px-4 py-3 align-top",children:"Connects to LLMs and databases"}),e("td",{className:"px-4 py-3 align-top",children:"Built-in database; connects to PostgreSQL, MongoDB, APIs, GraphQL, SaaS"}),e("td",{className:"px-4 py-3 align-top",children:"Connects to external databases, REST, CSV or built-in DB"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Open source & self-host"}),e("td",{className:"px-4 py-3 align-top",children:"Proprietary; cloud or on-prem subscription."}),e("td",{className:"px-4 py-3 align-top",children:"Open source (Apache-2.0); self-host or cloud."}),e("td",{className:"px-4 py-3 align-top",children:"Open source; self-host via Docker or cloud."}),e("td",{className:"px-4 py-3 align-top",children:"Open source; self-host via Docker/Kubernetes"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Policy & personalisation"}),e("td",{className:"px-4 py-3 align-top",children:"No built-in policy engine; personalisation limited to user roles."}),e("td",{className:"px-4 py-3 align-top",children:"No typed policy engine; customisation depends on user roles."}),e("td",{className:"px-4 py-3 align-top",children:"No policy engine; personalisation via user roles."}),e("td",{className:"px-4 py-3 align-top",children:"No policy engine; personalisation via RBAC & SSO"})]})]})]})})]}),t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"ContractSpec’s differences"}),t("ul",{className:"space-y-2 text-muted-foreground",children:[t("li",{children:[e("strong",{children:"Typed specifications"})," produce both the API and UI. You define capabilities, data views and workflows, and the compiler generates code, forms and screens—no manual widget wiring."]}),t("li",{children:[e("strong",{children:"Policy enforcement"})," at run time ensures PII and ABAC rules across the entire app."]}),t("li",{children:[e("strong",{children:"Overlay personalisation"})," allows tenants and users to change layouts safely without code."]}),t("li",{children:[e("strong",{children:"Unified mobile/web runtime"})," means you don’t need separate builders for React Native vs web."]})]}),e("p",{className:"text-muted-foreground",children:"Internal-tool builders are useful for quick dashboards. ContractSpec extends this by generating the whole stack from specs and enforcing policies throughout."})]})]})}export{a as ComparisonInternalToolBuildersPage};
1
+ var n=Object.defineProperty;var s=(a)=>a;function i(a,o){this[a]=s.bind(null,o)}var d=(a,o)=>{for(var l in o)n(a,l,{get:o[l],enumerable:!0,configurable:!0,set:i.bind(o,l)})};var r=(a,o)=>()=>(a&&(o=a(a=0)),o);import{jsx as e,jsxs as t}from"react/jsx-runtime";function c(){return t("div",{className:"space-y-8",children:[t("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"Internal-tool builders"}),e("p",{className:"text-muted-foreground",children:"Internal-tool builders let teams quickly assemble dashboards and admin panels. These platforms often provide drag-and-drop UIs and connectors to databases and APIs, but they rely on developers to write custom code for business logic and seldom enforce policies across surfaces."})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Feature comparison"}),e("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:t("table",{className:"w-full text-left text-sm",children:[e("thead",{className:"bg-card/50",children:t("tr",{className:"border-border/50 border-b",children:[e("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),e("th",{className:"px-4 py-3 font-semibold",children:"Retool"}),e("th",{className:"px-4 py-3 font-semibold",children:"Appsmith"}),e("th",{className:"px-4 py-3 font-semibold",children:"ToolJet"}),e("th",{className:"px-4 py-3 font-semibold",children:"Budibase"})]})}),t("tbody",{className:"divide-y divide-border/50",children:[t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"UI builder"}),e("td",{className:"px-4 py-3 align-top",children:"Drag-and-drop canvas; shape UI components easily"}),e("td",{className:"px-4 py-3 align-top",children:"Visual builder with drag-and-drop widgets"}),e("td",{className:"px-4 py-3 align-top",children:"Drag-and-drop UI widgets (tables, charts, forms)"}),e("td",{className:"px-4 py-3 align-top",children:"Pre-built components and templates for mobile/desktop"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Custom code & logic"}),e("td",{className:"px-4 py-3 align-top",children:"Full code insertion anywhere via IDE"}),e("td",{className:"px-4 py-3 align-top",children:"Logic via JavaScript or natural-language prompts in a central IDE"}),e("td",{className:"px-4 py-3 align-top",children:"Supports business logic in JavaScript or Python queries"}),e("td",{className:"px-4 py-3 align-top",children:"Custom logic via JavaScript; plugins and external embeds"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Data connectors"}),e("td",{className:"px-4 py-3 align-top",children:"Wide support for databases and APIs (PostgreSQL, MongoDB, GraphQL, etc.)."}),e("td",{className:"px-4 py-3 align-top",children:"Connects to LLMs and databases"}),e("td",{className:"px-4 py-3 align-top",children:"Built-in database; connects to PostgreSQL, MongoDB, APIs, GraphQL, SaaS"}),e("td",{className:"px-4 py-3 align-top",children:"Connects to external databases, REST, CSV or built-in DB"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Open source & self-host"}),e("td",{className:"px-4 py-3 align-top",children:"Proprietary; cloud or on-prem subscription."}),e("td",{className:"px-4 py-3 align-top",children:"Open source (Apache-2.0); self-host or cloud."}),e("td",{className:"px-4 py-3 align-top",children:"Open source; self-host via Docker or cloud."}),e("td",{className:"px-4 py-3 align-top",children:"Open source; self-host via Docker/Kubernetes"})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top font-semibold",children:"Policy & personalisation"}),e("td",{className:"px-4 py-3 align-top",children:"No built-in policy engine; personalisation limited to user roles."}),e("td",{className:"px-4 py-3 align-top",children:"No typed policy engine; customisation depends on user roles."}),e("td",{className:"px-4 py-3 align-top",children:"No policy engine; personalisation via user roles."}),e("td",{className:"px-4 py-3 align-top",children:"No policy engine; personalisation via RBAC & SSO"})]})]})]})})]}),t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"ContractSpec’s differences"}),t("ul",{className:"space-y-2 text-muted-foreground",children:[t("li",{children:[e("strong",{children:"Typed specifications"})," produce both the API and UI. You define capabilities, data views and workflows, and the compiler generates code, forms and screens—no manual widget wiring."]}),t("li",{children:[e("strong",{children:"Policy enforcement"})," at run time ensures PII and ABAC rules across the entire app."]}),t("li",{children:[e("strong",{children:"Overlay personalisation"})," allows tenants and users to change layouts safely without code."]}),t("li",{children:[e("strong",{children:"Unified mobile/web runtime"})," means you don’t need separate builders for React Native vs web."]})]}),e("p",{className:"text-muted-foreground",children:"Internal-tool builders are useful for quick dashboards. ContractSpec extends this by generating the whole stack from specs and enforcing policies throughout."})]})]})}export{c as ComparisonInternalToolBuildersPage};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e}from"react/jsx-runtime";function o(){return e("div",{className:"space-y-8",children:[e("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Comparison overview"}),t("p",{className:"text-muted-foreground",children:"ContractSpec sits at the intersection of several tool categories. To appreciate its unique offering—typed specifications for back-end, front-end, workflows and policies with a unified web/mobile runtime—this section compares it to related products."}),e("p",{className:"text-muted-foreground",children:["ContractSpec uses ",t("strong",{children:"runtime adapters"})," to serve typed"," ",t("strong",{children:"Operations"})," (Commands/Queries),"," ",t("strong",{children:"DataViews"}),", ",t("strong",{children:"Workflows"}),", and"," ",t("strong",{children:"Policies"})," as REST/GraphQL/MCP endpoints. A"," ",t("strong",{children:"policy decision point"})," governs every operation, and"," ",t("strong",{children:"OverlaySpecs"})," allow non-technical users to personalise screens safely. Few competitors offer this combination of runtime type safety, policy enforcement, and end-user customisation."]})]}),e("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Tool categories"}),t("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:e("table",{className:"w-full text-left text-sm",children:[t("thead",{className:"bg-card/50",children:e("tr",{className:"border-border/50 border-b",children:[t("th",{className:"px-4 py-3 font-semibold",children:"Category"}),t("th",{className:"px-4 py-3 font-semibold",children:"Examples"}),t("th",{className:"px-4 py-3 font-semibold",children:"What they do"}),t("th",{className:"px-4 py-3 font-semibold",children:"Limitations"})]})}),e("tbody",{className:"divide-y divide-border/50",children:[e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Workflow engines"})}),t("td",{className:"px-4 py-3 align-top",children:"Prefect, Kestra, Temporal, Airflow, Dagster, Hatchet, Windmill"}),t("td",{className:"px-4 py-3 align-top",children:"Orchestrate code or data pipelines; handle retries, scheduling and observability"}),t("td",{className:"px-4 py-3 align-top",children:"Require writing code; no automatic UI generation or policy enforcement."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Internal-tool builders"})}),t("td",{className:"px-4 py-3 align-top",children:"Retool, Appsmith, ToolJet, Budibase"}),t("td",{className:"px-4 py-3 align-top",children:"Drag-and-drop dashboards and admin panels; connect to databases/APIs"}),t("td",{className:"px-4 py-3 align-top",children:"No typed back-end spec; limited enforcement of policies; custom code glues logic."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Automation platforms"})}),t("td",{className:"px-4 py-3 align-top",children:"Zapier, Make, n8n, Pipedream"}),t("td",{className:"px-4 py-3 align-top",children:"Connect apps via triggers and actions; visual or low-code interfaces"}),t("td",{className:"px-4 py-3 align-top",children:"Automate tasks but do not generate full apps or enforce per-field policies."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Enterprise orchestrators"})}),t("td",{className:"px-4 py-3 align-top",children:"Redwood RunMyJobs"}),t("td",{className:"px-4 py-3 align-top",children:"Automate mission-critical workloads with self-service portals and SAP integrations"}),t("td",{className:"px-4 py-3 align-top",children:"Focus on IT workloads; not built for custom app creation or per-user customisation."})]})]})]})}),t("p",{className:"text-muted-foreground",children:"Use the pages below to explore each group in detail and see how ContractSpec compares."})]})]})}export{o as ComparisonOverviewPage};
1
+ var n=Object.defineProperty;var s=(o)=>o;function i(o,a){this[o]=s.bind(null,a)}var p=(o,a)=>{for(var r in a)n(o,r,{get:a[r],enumerable:!0,configurable:!0,set:i.bind(a,r)})};var l=(o,a)=>()=>(o&&(a=o(o=0)),a);import{jsx as t,jsxs as e}from"react/jsx-runtime";function c(){return e("div",{className:"space-y-8",children:[e("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Comparison overview"}),t("p",{className:"text-muted-foreground",children:"ContractSpec sits at the intersection of several tool categories. To appreciate its unique offering—typed specifications for back-end, front-end, workflows and policies with a unified web/mobile runtime—this section compares it to related products."}),e("p",{className:"text-muted-foreground",children:["ContractSpec uses ",t("strong",{children:"runtime adapters"})," to serve typed"," ",t("strong",{children:"Operations"})," (Commands/Queries),"," ",t("strong",{children:"DataViews"}),", ",t("strong",{children:"Workflows"}),", and"," ",t("strong",{children:"Policies"})," as REST/GraphQL/MCP endpoints. A"," ",t("strong",{children:"policy decision point"})," governs every operation, and"," ",t("strong",{children:"OverlaySpecs"})," allow non-technical users to personalise screens safely. Few competitors offer this combination of runtime type safety, policy enforcement, and end-user customisation."]})]}),e("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Tool categories"}),t("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:e("table",{className:"w-full text-left text-sm",children:[t("thead",{className:"bg-card/50",children:e("tr",{className:"border-border/50 border-b",children:[t("th",{className:"px-4 py-3 font-semibold",children:"Category"}),t("th",{className:"px-4 py-3 font-semibold",children:"Examples"}),t("th",{className:"px-4 py-3 font-semibold",children:"What they do"}),t("th",{className:"px-4 py-3 font-semibold",children:"Limitations"})]})}),e("tbody",{className:"divide-y divide-border/50",children:[e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Workflow engines"})}),t("td",{className:"px-4 py-3 align-top",children:"Prefect, Kestra, Temporal, Airflow, Dagster, Hatchet, Windmill"}),t("td",{className:"px-4 py-3 align-top",children:"Orchestrate code or data pipelines; handle retries, scheduling and observability"}),t("td",{className:"px-4 py-3 align-top",children:"Require writing code; no automatic UI generation or policy enforcement."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Internal-tool builders"})}),t("td",{className:"px-4 py-3 align-top",children:"Retool, Appsmith, ToolJet, Budibase"}),t("td",{className:"px-4 py-3 align-top",children:"Drag-and-drop dashboards and admin panels; connect to databases/APIs"}),t("td",{className:"px-4 py-3 align-top",children:"No typed back-end spec; limited enforcement of policies; custom code glues logic."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Automation platforms"})}),t("td",{className:"px-4 py-3 align-top",children:"Zapier, Make, n8n, Pipedream"}),t("td",{className:"px-4 py-3 align-top",children:"Connect apps via triggers and actions; visual or low-code interfaces"}),t("td",{className:"px-4 py-3 align-top",children:"Automate tasks but do not generate full apps or enforce per-field policies."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Enterprise orchestrators"})}),t("td",{className:"px-4 py-3 align-top",children:"Redwood RunMyJobs"}),t("td",{className:"px-4 py-3 align-top",children:"Automate mission-critical workloads with self-service portals and SAP integrations"}),t("td",{className:"px-4 py-3 align-top",children:"Focus on IT workloads; not built for custom app creation or per-user customisation."})]})]})]})}),t("p",{className:"text-muted-foreground",children:"Use the pages below to explore each group in detail and see how ContractSpec compares."})]})]})}export{c as ComparisonOverviewPage};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";function a(){return t("div",{className:"space-y-8",children:[t("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"Windmill"}),t("p",{className:"text-muted-foreground",children:["Windmill is an open-source platform that turns"," ",e("strong",{children:"scripts"})," into endpoints, workflows and UIs. It seeks to remove boilerplate by generating interfaces and workflows around existing code"]})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Platform features"}),t("ul",{className:"space-y-3 text-muted-foreground",children:[t("li",{children:[e("strong",{children:"Script-driven model."})," Write scripts in TypeScript, Python, Go, PHP, Bash, C#, SQL or Rust; Windmill infers dependencies, creates lockfiles and JSON schemas, then serves minimal UIs automatically"]}),t("li",{children:[e("strong",{children:"Visual flow editor."})," Compose scripts into workflows with retries, error handling, loops, branching, suspending flows and approval steps"]}),t("li",{children:[e("strong",{children:"Low-code UI builder."})," Build dashboards and admin panels using inline scripts and trigger flows from the UI"]}),t("li",{children:[e("strong",{children:"Enterprise readiness."})," Features include RBAC permissions, secret management, OAuth handling, CLI/git sync, scheduling and webhooks"]}),t("li",{children:[e("strong",{children:"Use cases."})," Deploy scripts as webhooks or cron jobs; create “applicative workflows” combining external APIs; build ETLs and interactive dashboards"]}),t("li",{children:[e("strong",{children:"Open source & self-hosting."})," Windmill emphasises an open-source codebase and self-hosting options"]})]})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Comparison with ContractSpec"}),e("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:t("table",{className:"w-full text-left text-sm",children:[e("thead",{className:"bg-card/50",children:t("tr",{className:"border-border/50 border-b",children:[e("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),e("th",{className:"px-4 py-3 font-semibold",children:"Windmill"}),e("th",{className:"px-4 py-3 font-semibold",children:"ContractSpec"})]})}),t("tbody",{className:"divide-y divide-border/50",children:[t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Entry model"})}),e("td",{className:"px-4 py-3 align-top",children:"Write scripts; platform auto-generates UI and workflows"}),e("td",{className:"px-4 py-3 align-top",children:"Define typed specs (Capabilities, DataViews, Workflows, Policies); compiler outputs back-end, front-end and forms."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Language support"})}),e("td",{className:"px-4 py-3 align-top",children:"20+ languages via embedded runtimes"}),e("td",{className:"px-4 py-3 align-top",children:"Uses TypeScript/JavaScript for providers; supports other back-ends through capability providers."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"UI generation"})}),e("td",{className:"px-4 py-3 align-top",children:"Minimal UI forms from script parameters; low-code app builder"}),e("td",{className:"px-4 py-3 align-top",children:"Generates full web and mobile UIs from specs; user layouts can be customised via signed overlays."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Policy & personalization"})}),e("td",{className:"px-4 py-3 align-top",children:"RBAC and secret management; no per-user overlay concept"}),e("td",{className:"px-4 py-3 align-top",children:"Built-in policy engine enforcing ABAC/PII on every render/mutate; overlays allow safe per-user customisation."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Open source"})}),e("td",{className:"px-4 py-3 align-top",children:"Fully open source and self-hostable"}),e("td",{className:"px-4 py-3 align-top",children:"Closed-source core (SDK is open); offers hosted and on-prem modes."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Ideal for"})}),e("td",{className:"px-4 py-3 align-top",children:"Teams wanting to expose scripts as APIs, workflows or dashboards without heavy infrastructure."}),e("td",{className:"px-4 py-3 align-top",children:"Teams needing a spec-driven platform that generates code and UI, enforces policies and lets non-technical users tailor the experience."})]})]})]})}),t("p",{className:"text-muted-foreground",children:["Windmill excels at converting scripts into workflows and admin panels. ContractSpec takes a ",e("strong",{children:"spec-first"})," approach, generating the entire stack and enforcing policies, making it suitable for long-lived applications that must evolve safely."]})]})]})}export{a as ComparisonWindmillPage};
1
+ var r=Object.defineProperty;var s=(a)=>a;function i(a,o){this[a]=s.bind(null,o)}var l=(a,o)=>{for(var n in o)r(a,n,{get:o[n],enumerable:!0,configurable:!0,set:i.bind(o,n)})};var d=(a,o)=>()=>(a&&(o=a(a=0)),o);import{jsx as e,jsxs as t}from"react/jsx-runtime";function c(){return t("div",{className:"space-y-8",children:[t("div",{className:"space-y-4",children:[e("h1",{className:"font-bold text-4xl",children:"Windmill"}),t("p",{className:"text-muted-foreground",children:["Windmill is an open-source platform that turns"," ",e("strong",{children:"scripts"})," into endpoints, workflows and UIs. It seeks to remove boilerplate by generating interfaces and workflows around existing code"]})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Platform features"}),t("ul",{className:"space-y-3 text-muted-foreground",children:[t("li",{children:[e("strong",{children:"Script-driven model."})," Write scripts in TypeScript, Python, Go, PHP, Bash, C#, SQL or Rust; Windmill infers dependencies, creates lockfiles and JSON schemas, then serves minimal UIs automatically"]}),t("li",{children:[e("strong",{children:"Visual flow editor."})," Compose scripts into workflows with retries, error handling, loops, branching, suspending flows and approval steps"]}),t("li",{children:[e("strong",{children:"Low-code UI builder."})," Build dashboards and admin panels using inline scripts and trigger flows from the UI"]}),t("li",{children:[e("strong",{children:"Enterprise readiness."})," Features include RBAC permissions, secret management, OAuth handling, CLI/git sync, scheduling and webhooks"]}),t("li",{children:[e("strong",{children:"Use cases."})," Deploy scripts as webhooks or cron jobs; create “applicative workflows” combining external APIs; build ETLs and interactive dashboards"]}),t("li",{children:[e("strong",{children:"Open source & self-hosting."})," Windmill emphasises an open-source codebase and self-hosting options"]})]})]}),t("div",{className:"space-y-4",children:[e("h2",{className:"font-bold text-2xl",children:"Comparison with ContractSpec"}),e("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:t("table",{className:"w-full text-left text-sm",children:[e("thead",{className:"bg-card/50",children:t("tr",{className:"border-border/50 border-b",children:[e("th",{className:"px-4 py-3 font-semibold",children:"Feature"}),e("th",{className:"px-4 py-3 font-semibold",children:"Windmill"}),e("th",{className:"px-4 py-3 font-semibold",children:"ContractSpec"})]})}),t("tbody",{className:"divide-y divide-border/50",children:[t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Entry model"})}),e("td",{className:"px-4 py-3 align-top",children:"Write scripts; platform auto-generates UI and workflows"}),e("td",{className:"px-4 py-3 align-top",children:"Define typed specs (Capabilities, DataViews, Workflows, Policies); compiler outputs back-end, front-end and forms."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Language support"})}),e("td",{className:"px-4 py-3 align-top",children:"20+ languages via embedded runtimes"}),e("td",{className:"px-4 py-3 align-top",children:"Uses TypeScript/JavaScript for providers; supports other back-ends through capability providers."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"UI generation"})}),e("td",{className:"px-4 py-3 align-top",children:"Minimal UI forms from script parameters; low-code app builder"}),e("td",{className:"px-4 py-3 align-top",children:"Generates full web and mobile UIs from specs; user layouts can be customised via signed overlays."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Policy & personalization"})}),e("td",{className:"px-4 py-3 align-top",children:"RBAC and secret management; no per-user overlay concept"}),e("td",{className:"px-4 py-3 align-top",children:"Built-in policy engine enforcing ABAC/PII on every render/mutate; overlays allow safe per-user customisation."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Open source"})}),e("td",{className:"px-4 py-3 align-top",children:"Fully open source and self-hostable"}),e("td",{className:"px-4 py-3 align-top",children:"Closed-source core (SDK is open); offers hosted and on-prem modes."})]}),t("tr",{children:[e("td",{className:"px-4 py-3 align-top",children:e("strong",{children:"Ideal for"})}),e("td",{className:"px-4 py-3 align-top",children:"Teams wanting to expose scripts as APIs, workflows or dashboards without heavy infrastructure."}),e("td",{className:"px-4 py-3 align-top",children:"Teams needing a spec-driven platform that generates code and UI, enforces policies and lets non-technical users tailor the experience."})]})]})]})}),t("p",{className:"text-muted-foreground",children:["Windmill excels at converting scripts into workflows and admin panels. ContractSpec takes a ",e("strong",{children:"spec-first"})," approach, generating the entire stack and enforcing policies, making it suitable for long-lived applications that must evolve safely."]})]})]})}export{c as ComparisonWindmillPage};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e}from"react/jsx-runtime";function a(){return e("div",{className:"space-y-8",children:[e("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Workflow engines"}),t("p",{className:"text-muted-foreground",children:"Workflow engines orchestrate long-running tasks and data pipelines. They provide retries, scheduling and visibility, but most expect developers to write code and do not generate user interfaces. Here’s how the major engines compare to ContractSpec."})]}),e("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Key differences summary"}),t("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:e("table",{className:"w-full text-left text-sm",children:[t("thead",{className:"bg-card/50",children:e("tr",{className:"border-border/50 border-b",children:[t("th",{className:"px-4 py-3 font-semibold",children:"Engine"}),t("th",{className:"px-4 py-3 font-semibold",children:"Core strengths"}),t("th",{className:"px-4 py-3 font-semibold",children:"UI generation?"}),t("th",{className:"px-4 py-3 font-semibold",children:"Policy/PII enforcement?"}),t("th",{className:"px-4 py-3 font-semibold",children:"Self-host?"}),t("th",{className:"px-4 py-3 font-semibold",children:"Primary use"})]})}),e("tbody",{className:"divide-y divide-border/50",children:[e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Prefect"})}),t("td",{className:"px-4 py-3 align-top",children:"Python-native; dynamic DAGs adapt to change; annotate code without rewriting; strong observability and audit logs"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data pipelines and dynamic workflows."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Kestra"})}),t("td",{className:"px-4 py-3 align-top",children:"Declarative YAML; event-driven triggers; mix of code and no-code; write logic in Python/R/Java/Julia/Ruby; deploy anywhere"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data pipelines and hybrid orchestration."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Temporal"})}),t("td",{className:"px-4 py-3 align-top",children:"Durable execution; workflows never lose state; multi-language SDKs; automatic retries"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Durable microservice and business workflows."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Airflow"})}),t("td",{className:"px-4 py-3 align-top",children:"Open-source; define workflows as Python code; schedule and monitor via UI; extensible via custom operators"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data ETL pipelines."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Dagster"})}),t("td",{className:"px-4 py-3 align-top",children:"Data-asset model; local testing and reusable components; built-in data quality and catalog; orchestrates AI/data pipelines across multiple tools"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data/AI pipelines with strong observability."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Hatchet"})}),t("td",{className:"px-4 py-3 align-top",children:"Modern engine focused on performance and durability; tasks and workflows as code; durable functions with guardrails and retries"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"High-throughput background jobs and microservices."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Windmill"})}),t("td",{className:"px-4 py-3 align-top",children:"Multi-language scripts; auto-generates UI; integrated flow editor"}),t("td",{className:"px-4 py-3 align-top",children:"Yes (basic)"}),t("td",{className:"px-4 py-3 align-top",children:"RBAC & secrets only"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Scripts into workflows and dashboards."})]})]})]})})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Why ContractSpec differs"}),e("ul",{className:"space-y-2 text-muted-foreground",children:[e("li",{children:[t("strong",{children:"Spec-first generation"})," – Instead of writing code, you define typed specs for capabilities, data views and workflows; the compiler outputs both back-end and front-end."]}),e("li",{children:[t("strong",{children:"Policy engine"})," – Every render and mutate passes through an ABAC/PII policy decision point."]}),e("li",{children:[t("strong",{children:"Personalisation"})," – Signed OverlaySpecs allow tenant/user-specific UI changes without touching code."]}),e("li",{children:[t("strong",{children:"Unified runtime"})," – React/React-Native rendering ensures consistent experiences across web and mobile."]})]}),t("p",{className:"text-muted-foreground",children:"Workflow engines are excellent for orchestrating back-end tasks. ContractSpec builds on this by serving complete applications with runtime policy enforcement and user personalisation via TypeScript specs."})]})]})}export{a as ComparisonWorkflowEnginesPage};
1
+ var i=Object.defineProperty;var l=(a)=>a;function p(a,o){this[a]=l.bind(null,o)}var d=(a,o)=>{for(var n in o)i(a,n,{get:o[n],enumerable:!0,configurable:!0,set:p.bind(o,n)})};var s=(a,o)=>()=>(a&&(o=a(a=0)),o);import{jsx as t,jsxs as e}from"react/jsx-runtime";function c(){return e("div",{className:"space-y-8",children:[e("div",{className:"space-y-4",children:[t("h1",{className:"font-bold text-4xl",children:"Workflow engines"}),t("p",{className:"text-muted-foreground",children:"Workflow engines orchestrate long-running tasks and data pipelines. They provide retries, scheduling and visibility, but most expect developers to write code and do not generate user interfaces. Here’s how the major engines compare to ContractSpec."})]}),e("div",{className:"space-y-4",children:[t("h2",{className:"font-bold text-2xl",children:"Key differences summary"}),t("div",{className:"overflow-x-auto rounded-lg border border-border/50",children:e("table",{className:"w-full text-left text-sm",children:[t("thead",{className:"bg-card/50",children:e("tr",{className:"border-border/50 border-b",children:[t("th",{className:"px-4 py-3 font-semibold",children:"Engine"}),t("th",{className:"px-4 py-3 font-semibold",children:"Core strengths"}),t("th",{className:"px-4 py-3 font-semibold",children:"UI generation?"}),t("th",{className:"px-4 py-3 font-semibold",children:"Policy/PII enforcement?"}),t("th",{className:"px-4 py-3 font-semibold",children:"Self-host?"}),t("th",{className:"px-4 py-3 font-semibold",children:"Primary use"})]})}),e("tbody",{className:"divide-y divide-border/50",children:[e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Prefect"})}),t("td",{className:"px-4 py-3 align-top",children:"Python-native; dynamic DAGs adapt to change; annotate code without rewriting; strong observability and audit logs"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data pipelines and dynamic workflows."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Kestra"})}),t("td",{className:"px-4 py-3 align-top",children:"Declarative YAML; event-driven triggers; mix of code and no-code; write logic in Python/R/Java/Julia/Ruby; deploy anywhere"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data pipelines and hybrid orchestration."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Temporal"})}),t("td",{className:"px-4 py-3 align-top",children:"Durable execution; workflows never lose state; multi-language SDKs; automatic retries"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Durable microservice and business workflows."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Airflow"})}),t("td",{className:"px-4 py-3 align-top",children:"Open-source; define workflows as Python code; schedule and monitor via UI; extensible via custom operators"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data ETL pipelines."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Dagster"})}),t("td",{className:"px-4 py-3 align-top",children:"Data-asset model; local testing and reusable components; built-in data quality and catalog; orchestrates AI/data pipelines across multiple tools"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Data/AI pipelines with strong observability."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Hatchet"})}),t("td",{className:"px-4 py-3 align-top",children:"Modern engine focused on performance and durability; tasks and workflows as code; durable functions with guardrails and retries"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"No"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"High-throughput background jobs and microservices."})]}),e("tr",{children:[t("td",{className:"px-4 py-3 align-top",children:t("strong",{children:"Windmill"})}),t("td",{className:"px-4 py-3 align-top",children:"Multi-language scripts; auto-generates UI; integrated flow editor"}),t("td",{className:"px-4 py-3 align-top",children:"Yes (basic)"}),t("td",{className:"px-4 py-3 align-top",children:"RBAC & secrets only"}),t("td",{className:"px-4 py-3 align-top",children:"Yes"}),t("td",{className:"px-4 py-3 align-top",children:"Scripts into workflows and dashboards."})]})]})]})})]}),e("div",{className:"space-y-3",children:[t("h2",{className:"font-bold text-2xl",children:"Why ContractSpec differs"}),e("ul",{className:"space-y-2 text-muted-foreground",children:[e("li",{children:[t("strong",{children:"Spec-first generation"})," – Instead of writing code, you define typed specs for capabilities, data views and workflows; the compiler outputs both back-end and front-end."]}),e("li",{children:[t("strong",{children:"Policy engine"})," – Every render and mutate passes through an ABAC/PII policy decision point."]}),e("li",{children:[t("strong",{children:"Personalisation"})," – Signed OverlaySpecs allow tenant/user-specific UI changes without touching code."]}),e("li",{children:[t("strong",{children:"Unified runtime"})," – React/React-Native rendering ensures consistent experiences across web and mobile."]})]}),t("p",{className:"text-muted-foreground",children:"Workflow engines are excellent for orchestrating back-end tasks. ContractSpec builds on this by serving complete applications with runtime policy enforcement and user personalisation via TypeScript specs."})]})]})}export{c as ComparisonWorkflowEnginesPage};