@contractspec/bundle.library 3.9.0 → 3.9.3

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 (724) hide show
  1. package/.turbo/turbo-build.log +612 -608
  2. package/CHANGELOG.md +89 -0
  3. package/README.md +2 -1
  4. package/dist/__tests__/mocks/prisma.d.ts +5 -5
  5. package/dist/application/context-storage/index.js +1 -1
  6. package/dist/application/index.js +6 -6
  7. package/dist/application/mcp/cliMcp.js +2 -2
  8. package/dist/application/mcp/cliMcp.onboarding.js +1 -1
  9. package/dist/application/mcp/common.js +1 -1
  10. package/dist/application/mcp/contractsMcp.js +2 -2
  11. package/dist/application/mcp/contractsMcpAdoptionTools.js +1 -1
  12. package/dist/application/mcp/contractsMcpResources.js +2 -2
  13. package/dist/application/mcp/contractsMcpTools.js +1 -1
  14. package/dist/application/mcp/docsMcp.catalog.js +2 -2
  15. package/dist/application/mcp/docsMcp.data.js +1 -1
  16. package/dist/application/mcp/docsMcp.js +3 -3
  17. package/dist/application/mcp/docsMcp.prompts.js +3 -3
  18. package/dist/application/mcp/docsMcp.reference.js +2 -2
  19. package/dist/application/mcp/docsMcp.resources.js +2 -2
  20. package/dist/application/mcp/docsMcp.tools.js +2 -2
  21. package/dist/application/mcp/index.js +6 -6
  22. package/dist/application/mcp/internalMcp.js +2 -2
  23. package/dist/application/mcp/normalizeMcpRequest.js +1 -1
  24. package/dist/application/mcp/providerRankingMcp.js +1 -1
  25. package/dist/bundles/LibraryBundle.d.ts +19 -111
  26. package/dist/bundles/LibraryBundle.js +1 -1
  27. package/dist/bundles/index.js +1 -1
  28. package/dist/components/docs/DocsIndexPage.js +2 -2
  29. package/dist/components/docs/advanced/AdvancedMCPPage.js +3 -3
  30. package/dist/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
  31. package/dist/components/docs/advanced/AdvancedRenderersPage.js +2 -2
  32. package/dist/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
  33. package/dist/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
  34. package/dist/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
  35. package/dist/components/docs/advanced/index.js +9 -9
  36. package/dist/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
  37. package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
  38. package/dist/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
  39. package/dist/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
  40. package/dist/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
  41. package/dist/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
  42. package/dist/components/docs/architecture/index.js +20 -20
  43. package/dist/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
  44. package/dist/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
  45. package/dist/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
  46. package/dist/components/docs/comparison/ComparisonOverviewPage.js +1 -1
  47. package/dist/components/docs/comparison/ComparisonWindmillPage.js +1 -1
  48. package/dist/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
  49. package/dist/components/docs/comparison/index.js +1 -1
  50. package/dist/components/docs/docsManifest.js +1 -1
  51. package/dist/components/docs/ecosystem/IntegrationsPage.js +2 -2
  52. package/dist/components/docs/ecosystem/PluginsPage.js +4 -4
  53. package/dist/components/docs/ecosystem/RegistryPage.js +4 -4
  54. package/dist/components/docs/ecosystem/TemplatesPage.js +3 -3
  55. package/dist/components/docs/ecosystem/index.js +11 -11
  56. package/dist/components/docs/examples/DocsExamplesPage.js +1 -1
  57. package/dist/components/docs/examples/ExampleShowcasePage.js +2 -2
  58. package/dist/components/docs/examples/exampleShowcaseData.js +2 -2
  59. package/dist/components/docs/examples/index.js +2 -2
  60. package/dist/components/docs/generated/docs-index.generated.js +1 -1
  61. package/dist/components/docs/generated/index.d.ts +7 -1
  62. package/dist/components/docs/generated/index.js +1 -1
  63. package/dist/components/docs/generated/loader.js +1 -1
  64. package/dist/components/docs/getting-started/CLIPage.js +4 -4
  65. package/dist/components/docs/getting-started/CompatibilityPage.js +1 -1
  66. package/dist/components/docs/getting-started/DataViewTutorialPage.js +4 -4
  67. package/dist/components/docs/getting-started/DeveloperToolsPage.js +1 -1
  68. package/dist/components/docs/getting-started/HelloWorldPage.js +5 -5
  69. package/dist/components/docs/getting-started/InstallationPage.js +3 -3
  70. package/dist/components/docs/getting-started/StartHerePage.js +3 -3
  71. package/dist/components/docs/getting-started/TroubleshootingPage.js +2 -2
  72. package/dist/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
  73. package/dist/components/docs/getting-started/getting-started.docblocks.js +2 -2
  74. package/dist/components/docs/getting-started/index.js +17 -17
  75. package/dist/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
  76. package/dist/components/docs/guides/GuideConnectInRepoPage.js +6 -6
  77. package/dist/components/docs/guides/GuideContractTypesPage.js +6 -6
  78. package/dist/components/docs/guides/GuideDocsPipelinePage.js +3 -3
  79. package/dist/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
  80. package/dist/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
  81. package/dist/components/docs/guides/GuideHostBuilderWorkbenchPage.js +7 -7
  82. package/dist/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
  83. package/dist/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
  84. package/dist/components/docs/guides/GuideReleaseCapsulesPage.js +3 -3
  85. package/dist/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
  86. package/dist/components/docs/guides/GuidesIndexPage.js +2 -2
  87. package/dist/components/docs/guides/index.js +43 -43
  88. package/dist/components/docs/index.js +375 -255
  89. package/dist/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
  90. package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
  91. package/dist/components/docs/integrations/IntegrationsGithubPage.js +2 -2
  92. package/dist/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  93. package/dist/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
  94. package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
  95. package/dist/components/docs/integrations/IntegrationsMistralPage.js +2 -2
  96. package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  97. package/dist/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  98. package/dist/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
  99. package/dist/components/docs/integrations/IntegrationsPowensPage.js +2 -2
  100. package/dist/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
  101. package/dist/components/docs/integrations/IntegrationsResendPage.js +3 -3
  102. package/dist/components/docs/integrations/IntegrationsS3Page.js +4 -4
  103. package/dist/components/docs/integrations/IntegrationsSlackPage.js +2 -2
  104. package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
  105. package/dist/components/docs/integrations/IntegrationsStripePage.js +2 -2
  106. package/dist/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
  107. package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
  108. package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
  109. package/dist/components/docs/integrations/index.js +39 -39
  110. package/dist/components/docs/intent/ContractFirstApiPage.js +2 -2
  111. package/dist/components/docs/intent/DeterministicCodegenPage.js +2 -2
  112. package/dist/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
  113. package/dist/components/docs/intent/OpenapiAlternativePage.js +3 -3
  114. package/dist/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
  115. package/dist/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
  116. package/dist/components/docs/intent/index.js +15 -15
  117. package/dist/components/docs/intent/intent-pages.docblocks.js +1 -1
  118. package/dist/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
  119. package/dist/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
  120. package/dist/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  121. package/dist/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
  122. package/dist/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
  123. package/dist/components/docs/knowledge/index.js +5 -5
  124. package/dist/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
  125. package/dist/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
  126. package/dist/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
  127. package/dist/components/docs/libraries/LibrariesContentGenPage.js +2 -2
  128. package/dist/components/docs/libraries/LibrariesContractsPage.js +2 -2
  129. package/dist/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
  130. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.d.ts +67 -0
  131. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +86 -0
  132. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.d.ts +1 -0
  133. package/dist/components/docs/libraries/LibrariesCrossPlatformUIPage.js +86 -0
  134. package/dist/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
  135. package/dist/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
  136. package/dist/components/docs/libraries/LibrariesDesignSystemPage.js +38 -2
  137. package/dist/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
  138. package/dist/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
  139. package/dist/components/docs/libraries/LibrariesGrowthPage.js +3 -3
  140. package/dist/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
  141. package/dist/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
  142. package/dist/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
  143. package/dist/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  144. package/dist/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
  145. package/dist/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
  146. package/dist/components/docs/libraries/LibrariesResiliencePage.js +4 -4
  147. package/dist/components/docs/libraries/LibrariesRuntimePage.js +2 -2
  148. package/dist/components/docs/libraries/LibrariesSLOPage.js +3 -3
  149. package/dist/components/docs/libraries/LibrariesSchemaPage.js +3 -3
  150. package/dist/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
  151. package/dist/components/docs/libraries/LibrariesTestingPage.js +3 -3
  152. package/dist/components/docs/libraries/LibrariesUIKitPage.js +2 -2
  153. package/dist/components/docs/libraries/LibrariesUIKitWebPage.js +2 -2
  154. package/dist/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
  155. package/dist/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
  156. package/dist/components/docs/libraries/index.d.ts +1 -0
  157. package/dist/components/docs/libraries/index.js +173 -53
  158. package/dist/components/docs/manifesto/ManifestoPage.js +1 -1
  159. package/dist/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
  160. package/dist/components/docs/ops/DistributedTracingOpsPage.js +2 -2
  161. package/dist/components/docs/ops/index.js +3 -3
  162. package/dist/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
  163. package/dist/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
  164. package/dist/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
  165. package/dist/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
  166. package/dist/components/docs/ops/ops-top.docs.js +2 -2
  167. package/dist/components/docs/ops/ops.docs.js +6 -6
  168. package/dist/components/docs/product/product.docblocks.js +2 -2
  169. package/dist/components/docs/reference/DocsMarkdownContent.js +2 -2
  170. package/dist/components/docs/reference/DocsReferenceContent.js +3 -3
  171. package/dist/components/docs/reference/DocsReferenceIndexClient.js +2 -2
  172. package/dist/components/docs/reference/DocsReferenceIndexPage.js +2 -2
  173. package/dist/components/docs/reference/DocsReferencePage.js +3 -3
  174. package/dist/components/docs/reference/docsMarkdownParser.js +2 -2
  175. package/dist/components/docs/reference/index.js +4 -4
  176. package/dist/components/docs/safety/SafetyAuditingPage.js +2 -2
  177. package/dist/components/docs/safety/SafetyMigrationsPage.js +2 -2
  178. package/dist/components/docs/safety/SafetyOverviewPage.js +1 -1
  179. package/dist/components/docs/safety/SafetyPDPPage.js +2 -2
  180. package/dist/components/docs/safety/SafetySecurityTrustPage.js +1 -1
  181. package/dist/components/docs/safety/SafetySigningPage.js +3 -3
  182. package/dist/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
  183. package/dist/components/docs/safety/index.js +7 -7
  184. package/dist/components/docs/shared/StudioPrompt.js +1 -1
  185. package/dist/components/docs/specs/SpecsBuilderControlPlanePage.js +4 -4
  186. package/dist/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
  187. package/dist/components/docs/specs/SpecsConnectPage.js +2 -2
  188. package/dist/components/docs/specs/SpecsDataViewsPage.js +2 -2
  189. package/dist/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
  190. package/dist/components/docs/specs/SpecsOverlaysPage.js +2 -2
  191. package/dist/components/docs/specs/SpecsOverviewPage.js +1 -1
  192. package/dist/components/docs/specs/SpecsPolicyPage.js +3 -3
  193. package/dist/components/docs/specs/SpecsWorkflowsPage.js +2 -2
  194. package/dist/components/docs/specs/index.js +13 -13
  195. package/dist/components/docs/studio/StudioBYOKPage.js +1 -1
  196. package/dist/components/docs/studio/StudioDeploymentsPage.js +1 -1
  197. package/dist/components/docs/studio/StudioGettingStartedPage.js +1 -1
  198. package/dist/components/docs/studio/StudioIntegrationsPage.js +1 -1
  199. package/dist/components/docs/studio/StudioOverviewPage.js +1 -1
  200. package/dist/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  201. package/dist/components/docs/studio/index.js +1 -1
  202. package/dist/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
  203. package/dist/components/integrations/index.js +2 -2
  204. package/dist/components/integrations/molecules/IntegrationCard.js +1 -1
  205. package/dist/components/integrations/organisms/IntegrationMarketplace.js +1 -1
  206. package/dist/components/integrations/organisms/IntegrationSettings.js +2 -2
  207. package/dist/components/integrations/organisms/KnowledgeSourceList.js +1 -1
  208. package/dist/components/legal/PrivacyTemplate.js +1 -1
  209. package/dist/components/legal/TermsTemplate.js +1 -1
  210. package/dist/components/legal/index.js +1 -1
  211. package/dist/components/shared/FeatureGateNotice.js +1 -1
  212. package/dist/components/shared/index.js +1 -1
  213. package/dist/components/shell/WorkspaceHeader.js +1 -1
  214. package/dist/components/shell/WorkspaceProjectShellLayout.js +1 -1
  215. package/dist/components/shell/WorkspaceShellRenderer.js +1 -1
  216. package/dist/components/shell/WorkspaceSidebar.js +1 -1
  217. package/dist/components/shell/index.js +1 -1
  218. package/dist/components/templates/engine/index.js +1 -1
  219. package/dist/components/templates/index.js +11 -11
  220. package/dist/components/templates/messaging/ConversationList.js +2 -2
  221. package/dist/components/templates/messaging/MessageComposer.js +4 -4
  222. package/dist/components/templates/messaging/MessageThread.js +3 -3
  223. package/dist/components/templates/messaging/MessagingWorkspace.js +5 -5
  224. package/dist/components/templates/messaging/index.js +5 -5
  225. package/dist/components/templates/recipes/LanguageSwitcher.js +1 -1
  226. package/dist/components/templates/recipes/RecipeCard.js +1 -1
  227. package/dist/components/templates/recipes/RecipeDetail.js +1 -1
  228. package/dist/components/templates/recipes/RecipeList.js +3 -3
  229. package/dist/components/templates/recipes/index.js +3 -3
  230. package/dist/components/templates/todos/FilterBar.js +1 -1
  231. package/dist/components/templates/todos/TaskForm.js +2 -2
  232. package/dist/components/templates/todos/TaskItem.js +1 -1
  233. package/dist/components/templates/todos/TaskList.js +5 -5
  234. package/dist/components/templates/todos/index.js +5 -5
  235. package/dist/config/contractspec-blueprint.js +1 -1
  236. package/dist/config/contractspec-branding.js +1 -1
  237. package/dist/config/contractspec-routes.js +1 -1
  238. package/dist/config/index.js +1 -1
  239. package/dist/features/contracts-registry.js +1 -1
  240. package/dist/features/docs/docs.contracts.js +1 -1
  241. package/dist/features/docs/index.js +1 -1
  242. package/dist/features/docs.feature.js +1 -1
  243. package/dist/features/index.js +1 -1
  244. package/dist/features/mcp.feature.js +1 -1
  245. package/dist/features/presentations.feature.js +1 -1
  246. package/dist/features/registry.js +1 -1
  247. package/dist/index.d.ts +1 -0
  248. package/dist/index.js +382 -262
  249. package/dist/infrastructure/elysia/index.js +1 -1
  250. package/dist/infrastructure/elysia/logger.js +1 -1
  251. package/dist/infrastructure/index.js +1 -1
  252. package/dist/libs/email/client.js +1 -1
  253. package/dist/libs/email/contact.js +3 -3
  254. package/dist/libs/email/newsletter.js +3 -3
  255. package/dist/libs/email/utils.js +2 -2
  256. package/dist/libs/email/waitlist-application.js +3 -3
  257. package/dist/libs/email/waitlist.js +3 -3
  258. package/dist/libs/email.js +6 -6
  259. package/dist/libs/posthog/client.js +1 -1
  260. package/dist/libs/posthog/native.js +1 -1
  261. package/dist/libs/posthog/server.js +1 -1
  262. package/dist/libs/pricing-examples.js +1 -1
  263. package/dist/node/application/context-storage/index.js +1 -1
  264. package/dist/node/application/index.js +6 -6
  265. package/dist/node/application/mcp/cliMcp.js +2 -2
  266. package/dist/node/application/mcp/cliMcp.onboarding.js +1 -1
  267. package/dist/node/application/mcp/common.js +1 -1
  268. package/dist/node/application/mcp/contractsMcp.js +2 -2
  269. package/dist/node/application/mcp/contractsMcpAdoptionTools.js +1 -1
  270. package/dist/node/application/mcp/contractsMcpResources.js +2 -2
  271. package/dist/node/application/mcp/contractsMcpTools.js +1 -1
  272. package/dist/node/application/mcp/docsMcp.catalog.js +2 -2
  273. package/dist/node/application/mcp/docsMcp.data.js +1 -1
  274. package/dist/node/application/mcp/docsMcp.js +3 -3
  275. package/dist/node/application/mcp/docsMcp.prompts.js +3 -3
  276. package/dist/node/application/mcp/docsMcp.reference.js +2 -2
  277. package/dist/node/application/mcp/docsMcp.resources.js +2 -2
  278. package/dist/node/application/mcp/docsMcp.tools.js +2 -2
  279. package/dist/node/application/mcp/index.js +6 -6
  280. package/dist/node/application/mcp/internalMcp.js +2 -2
  281. package/dist/node/application/mcp/normalizeMcpRequest.js +1 -1
  282. package/dist/node/application/mcp/providerRankingMcp.js +1 -1
  283. package/dist/node/bundles/LibraryBundle.js +1 -1
  284. package/dist/node/bundles/index.js +1 -1
  285. package/dist/node/components/docs/DocsIndexPage.js +2 -2
  286. package/dist/node/components/docs/advanced/AdvancedMCPPage.js +3 -3
  287. package/dist/node/components/docs/advanced/AdvancedOverlayEditorPage.js +1 -1
  288. package/dist/node/components/docs/advanced/AdvancedRenderersPage.js +2 -2
  289. package/dist/node/components/docs/advanced/AdvancedSpecExperimentsPage.js +4 -4
  290. package/dist/node/components/docs/advanced/AdvancedTelemetryPage.js +2 -2
  291. package/dist/node/components/docs/advanced/AdvancedWorkflowMonitoringPage.js +2 -2
  292. package/dist/node/components/docs/advanced/index.js +9 -9
  293. package/dist/node/components/docs/architecture/ArchitectureAppConfigPage.js +6 -6
  294. package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +3 -3
  295. package/dist/node/components/docs/architecture/ArchitectureIntegrationBindingPage.js +7 -7
  296. package/dist/node/components/docs/architecture/ArchitectureKnowledgeBindingPage.js +6 -6
  297. package/dist/node/components/docs/architecture/ArchitectureMultiTenancyPage.js +2 -2
  298. package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +1 -1
  299. package/dist/node/components/docs/architecture/index.js +20 -20
  300. package/dist/node/components/docs/comparison/ComparisonAutomationPlatformsPage.js +1 -1
  301. package/dist/node/components/docs/comparison/ComparisonEnterprisePlatformsPage.js +1 -1
  302. package/dist/node/components/docs/comparison/ComparisonInternalToolBuildersPage.js +1 -1
  303. package/dist/node/components/docs/comparison/ComparisonOverviewPage.js +1 -1
  304. package/dist/node/components/docs/comparison/ComparisonWindmillPage.js +1 -1
  305. package/dist/node/components/docs/comparison/ComparisonWorkflowEnginesPage.js +1 -1
  306. package/dist/node/components/docs/comparison/index.js +1 -1
  307. package/dist/node/components/docs/docsManifest.js +1 -1
  308. package/dist/node/components/docs/ecosystem/IntegrationsPage.js +2 -2
  309. package/dist/node/components/docs/ecosystem/PluginsPage.js +4 -4
  310. package/dist/node/components/docs/ecosystem/RegistryPage.js +4 -4
  311. package/dist/node/components/docs/ecosystem/TemplatesPage.js +3 -3
  312. package/dist/node/components/docs/ecosystem/index.js +11 -11
  313. package/dist/node/components/docs/examples/DocsExamplesPage.js +1 -1
  314. package/dist/node/components/docs/examples/ExampleShowcasePage.js +2 -2
  315. package/dist/node/components/docs/examples/exampleShowcaseData.js +2 -2
  316. package/dist/node/components/docs/examples/index.js +2 -2
  317. package/dist/node/components/docs/generated/docs-index.generated.js +1 -1
  318. package/dist/node/components/docs/generated/index.js +1 -1
  319. package/dist/node/components/docs/generated/loader.js +1 -1
  320. package/dist/node/components/docs/getting-started/CLIPage.js +4 -4
  321. package/dist/node/components/docs/getting-started/CompatibilityPage.js +1 -1
  322. package/dist/node/components/docs/getting-started/DataViewTutorialPage.js +4 -4
  323. package/dist/node/components/docs/getting-started/DeveloperToolsPage.js +1 -1
  324. package/dist/node/components/docs/getting-started/HelloWorldPage.js +5 -5
  325. package/dist/node/components/docs/getting-started/InstallationPage.js +3 -3
  326. package/dist/node/components/docs/getting-started/StartHerePage.js +3 -3
  327. package/dist/node/components/docs/getting-started/TroubleshootingPage.js +2 -2
  328. package/dist/node/components/docs/getting-started/VSCodeExtensionPage.js +1 -1
  329. package/dist/node/components/docs/getting-started/getting-started.docblocks.js +2 -2
  330. package/dist/node/components/docs/getting-started/index.js +17 -17
  331. package/dist/node/components/docs/guides/GuideCIDiffGatingPage.js +2 -2
  332. package/dist/node/components/docs/guides/GuideConnectInRepoPage.js +6 -6
  333. package/dist/node/components/docs/guides/GuideContractTypesPage.js +6 -6
  334. package/dist/node/components/docs/guides/GuideDocsPipelinePage.js +3 -3
  335. package/dist/node/components/docs/guides/GuideFirstModuleBundlePage.js +4 -4
  336. package/dist/node/components/docs/guides/GuideGenerateDocsClientsSchemasPage.js +2 -2
  337. package/dist/node/components/docs/guides/GuideHostBuilderWorkbenchPage.js +7 -7
  338. package/dist/node/components/docs/guides/GuideImportExistingCodebasesPage.js +8 -8
  339. package/dist/node/components/docs/guides/GuideNextjsOneEndpointPage.js +6 -6
  340. package/dist/node/components/docs/guides/GuideReleaseCapsulesPage.js +3 -3
  341. package/dist/node/components/docs/guides/GuideSpecValidationTypingPage.js +4 -4
  342. package/dist/node/components/docs/guides/GuidesIndexPage.js +2 -2
  343. package/dist/node/components/docs/guides/index.js +43 -43
  344. package/dist/node/components/docs/index.js +375 -255
  345. package/dist/node/components/docs/integrations/IntegrationsCircuitBreakersPage.js +2 -2
  346. package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +3 -3
  347. package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +2 -2
  348. package/dist/node/components/docs/integrations/IntegrationsGmailPage.js +3 -3
  349. package/dist/node/components/docs/integrations/IntegrationsGoogleCalendarPage.js +3 -3
  350. package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +2 -2
  351. package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +2 -2
  352. package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
  353. package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +1 -1
  354. package/dist/node/components/docs/integrations/IntegrationsPostmarkPage.js +2 -2
  355. package/dist/node/components/docs/integrations/IntegrationsPowensPage.js +2 -2
  356. package/dist/node/components/docs/integrations/IntegrationsQdrantPage.js +5 -5
  357. package/dist/node/components/docs/integrations/IntegrationsResendPage.js +3 -3
  358. package/dist/node/components/docs/integrations/IntegrationsS3Page.js +4 -4
  359. package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +2 -2
  360. package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +2 -2
  361. package/dist/node/components/docs/integrations/IntegrationsStripePage.js +2 -2
  362. package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +3 -3
  363. package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +2 -2
  364. package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +2 -2
  365. package/dist/node/components/docs/integrations/index.js +39 -39
  366. package/dist/node/components/docs/intent/ContractFirstApiPage.js +2 -2
  367. package/dist/node/components/docs/intent/DeterministicCodegenPage.js +2 -2
  368. package/dist/node/components/docs/intent/GenerateClientFromSchemaPage.js +7 -7
  369. package/dist/node/components/docs/intent/OpenapiAlternativePage.js +3 -3
  370. package/dist/node/components/docs/intent/SchemaValidationTypescriptPage.js +4 -4
  371. package/dist/node/components/docs/intent/SpecDrivenDevelopmentPage.js +2 -2
  372. package/dist/node/components/docs/intent/index.js +15 -15
  373. package/dist/node/components/docs/intent/intent-pages.docblocks.js +1 -1
  374. package/dist/node/components/docs/knowledge/KnowledgeCategoriesPage.js +2 -2
  375. package/dist/node/components/docs/knowledge/KnowledgeExamplesPage.js +2 -2
  376. package/dist/node/components/docs/knowledge/KnowledgeOverviewPage.js +1 -1
  377. package/dist/node/components/docs/knowledge/KnowledgeSourcesPage.js +2 -2
  378. package/dist/node/components/docs/knowledge/KnowledgeSpacesPage.js +2 -2
  379. package/dist/node/components/docs/knowledge/index.js +5 -5
  380. package/dist/node/components/docs/libraries/LibrariesAccessibilityPage.js +3 -3
  381. package/dist/node/components/docs/libraries/LibrariesAiAgentPage.js +3 -3
  382. package/dist/node/components/docs/libraries/LibrariesAnalyticsPage.js +4 -4
  383. package/dist/node/components/docs/libraries/LibrariesContentGenPage.js +2 -2
  384. package/dist/node/components/docs/libraries/LibrariesContractsPage.js +2 -2
  385. package/dist/node/components/docs/libraries/LibrariesCostTrackingPage.js +3 -3
  386. package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.content.js +85 -0
  387. package/dist/node/components/docs/libraries/LibrariesCrossPlatformUIPage.js +85 -0
  388. package/dist/node/components/docs/libraries/LibrariesDataBackendPage.js +2 -2
  389. package/dist/node/components/docs/libraries/LibrariesDataViewsPage.js +3 -3
  390. package/dist/node/components/docs/libraries/LibrariesDesignSystemPage.js +38 -2
  391. package/dist/node/components/docs/libraries/LibrariesEvolutionPage.js +4 -4
  392. package/dist/node/components/docs/libraries/LibrariesGraphQLPage.js +2 -2
  393. package/dist/node/components/docs/libraries/LibrariesGrowthPage.js +3 -3
  394. package/dist/node/components/docs/libraries/LibrariesMultiTenancyPage.js +3 -3
  395. package/dist/node/components/docs/libraries/LibrariesObservabilityPage.js +5 -5
  396. package/dist/node/components/docs/libraries/LibrariesOverlayEnginePage.js +4 -4
  397. package/dist/node/components/docs/libraries/LibrariesOverviewPage.js +1 -1
  398. package/dist/node/components/docs/libraries/LibrariesPersonalizationPage.js +4 -4
  399. package/dist/node/components/docs/libraries/LibrariesProgressiveDeliveryPage.js +3 -3
  400. package/dist/node/components/docs/libraries/LibrariesResiliencePage.js +4 -4
  401. package/dist/node/components/docs/libraries/LibrariesRuntimePage.js +2 -2
  402. package/dist/node/components/docs/libraries/LibrariesSLOPage.js +3 -3
  403. package/dist/node/components/docs/libraries/LibrariesSchemaPage.js +3 -3
  404. package/dist/node/components/docs/libraries/LibrariesSupportBotPage.js +3 -3
  405. package/dist/node/components/docs/libraries/LibrariesTestingPage.js +3 -3
  406. package/dist/node/components/docs/libraries/LibrariesUIKitPage.js +2 -2
  407. package/dist/node/components/docs/libraries/LibrariesUIKitWebPage.js +2 -2
  408. package/dist/node/components/docs/libraries/LibrariesWorkflowComposerPage.js +3 -3
  409. package/dist/node/components/docs/libraries/LibrariesWorkflowsPage.js +2 -2
  410. package/dist/node/components/docs/libraries/index.js +173 -53
  411. package/dist/node/components/docs/manifesto/ManifestoPage.js +1 -1
  412. package/dist/node/components/docs/ops/AutoEvolutionOpsPage.js +2 -2
  413. package/dist/node/components/docs/ops/DistributedTracingOpsPage.js +2 -2
  414. package/dist/node/components/docs/ops/index.js +3 -3
  415. package/dist/node/components/docs/ops/ops-lifecycle.docblocks.js +2 -2
  416. package/dist/node/components/docs/ops/ops-runbooks-a.docblocks.js +2 -2
  417. package/dist/node/components/docs/ops/ops-runbooks-b.docblocks.js +2 -2
  418. package/dist/node/components/docs/ops/ops-slo-tenant.docblocks.js +2 -2
  419. package/dist/node/components/docs/ops/ops-top.docs.js +2 -2
  420. package/dist/node/components/docs/ops/ops.docs.js +6 -6
  421. package/dist/node/components/docs/product/product.docblocks.js +2 -2
  422. package/dist/node/components/docs/reference/DocsMarkdownContent.js +2 -2
  423. package/dist/node/components/docs/reference/DocsReferenceContent.js +3 -3
  424. package/dist/node/components/docs/reference/DocsReferenceIndexClient.js +2 -2
  425. package/dist/node/components/docs/reference/DocsReferenceIndexPage.js +2 -2
  426. package/dist/node/components/docs/reference/DocsReferencePage.js +3 -3
  427. package/dist/node/components/docs/reference/docsMarkdownParser.js +2 -2
  428. package/dist/node/components/docs/reference/index.js +4 -4
  429. package/dist/node/components/docs/safety/SafetyAuditingPage.js +2 -2
  430. package/dist/node/components/docs/safety/SafetyMigrationsPage.js +2 -2
  431. package/dist/node/components/docs/safety/SafetyOverviewPage.js +1 -1
  432. package/dist/node/components/docs/safety/SafetyPDPPage.js +2 -2
  433. package/dist/node/components/docs/safety/SafetySecurityTrustPage.js +1 -1
  434. package/dist/node/components/docs/safety/SafetySigningPage.js +3 -3
  435. package/dist/node/components/docs/safety/SafetyTenantIsolationPage.js +2 -2
  436. package/dist/node/components/docs/safety/index.js +7 -7
  437. package/dist/node/components/docs/shared/StudioPrompt.js +1 -1
  438. package/dist/node/components/docs/specs/SpecsBuilderControlPlanePage.js +4 -4
  439. package/dist/node/components/docs/specs/SpecsCapabilitiesPage.js +2 -2
  440. package/dist/node/components/docs/specs/SpecsConnectPage.js +2 -2
  441. package/dist/node/components/docs/specs/SpecsDataViewsPage.js +2 -2
  442. package/dist/node/components/docs/specs/SpecsModuleBundlesPage.js +3 -3
  443. package/dist/node/components/docs/specs/SpecsOverlaysPage.js +2 -2
  444. package/dist/node/components/docs/specs/SpecsOverviewPage.js +1 -1
  445. package/dist/node/components/docs/specs/SpecsPolicyPage.js +3 -3
  446. package/dist/node/components/docs/specs/SpecsWorkflowsPage.js +2 -2
  447. package/dist/node/components/docs/specs/index.js +13 -13
  448. package/dist/node/components/docs/studio/StudioBYOKPage.js +1 -1
  449. package/dist/node/components/docs/studio/StudioDeploymentsPage.js +1 -1
  450. package/dist/node/components/docs/studio/StudioGettingStartedPage.js +1 -1
  451. package/dist/node/components/docs/studio/StudioIntegrationsPage.js +1 -1
  452. package/dist/node/components/docs/studio/StudioOverviewPage.js +1 -1
  453. package/dist/node/components/docs/studio/StudioVisualBuilderPage.js +1 -1
  454. package/dist/node/components/docs/studio/index.js +1 -1
  455. package/dist/node/components/docs/tech/contracts/tech-docs.docblocks.js +2 -2
  456. package/dist/node/components/integrations/index.js +2 -2
  457. package/dist/node/components/integrations/molecules/IntegrationCard.js +1 -1
  458. package/dist/node/components/integrations/organisms/IntegrationMarketplace.js +1 -1
  459. package/dist/node/components/integrations/organisms/IntegrationSettings.js +2 -2
  460. package/dist/node/components/integrations/organisms/KnowledgeSourceList.js +1 -1
  461. package/dist/node/components/legal/PrivacyTemplate.js +1 -1
  462. package/dist/node/components/legal/TermsTemplate.js +1 -1
  463. package/dist/node/components/legal/index.js +1 -1
  464. package/dist/node/components/shared/FeatureGateNotice.js +1 -1
  465. package/dist/node/components/shared/index.js +1 -1
  466. package/dist/node/components/shell/WorkspaceHeader.js +1 -1
  467. package/dist/node/components/shell/WorkspaceProjectShellLayout.js +1 -1
  468. package/dist/node/components/shell/WorkspaceShellRenderer.js +1 -1
  469. package/dist/node/components/shell/WorkspaceSidebar.js +1 -1
  470. package/dist/node/components/shell/index.js +1 -1
  471. package/dist/node/components/templates/engine/index.js +1 -1
  472. package/dist/node/components/templates/index.js +11 -11
  473. package/dist/node/components/templates/messaging/ConversationList.js +2 -2
  474. package/dist/node/components/templates/messaging/MessageComposer.js +4 -4
  475. package/dist/node/components/templates/messaging/MessageThread.js +3 -3
  476. package/dist/node/components/templates/messaging/MessagingWorkspace.js +5 -5
  477. package/dist/node/components/templates/messaging/index.js +5 -5
  478. package/dist/node/components/templates/recipes/LanguageSwitcher.js +1 -1
  479. package/dist/node/components/templates/recipes/RecipeCard.js +1 -1
  480. package/dist/node/components/templates/recipes/RecipeDetail.js +1 -1
  481. package/dist/node/components/templates/recipes/RecipeList.js +3 -3
  482. package/dist/node/components/templates/recipes/index.js +3 -3
  483. package/dist/node/components/templates/todos/FilterBar.js +1 -1
  484. package/dist/node/components/templates/todos/TaskForm.js +2 -2
  485. package/dist/node/components/templates/todos/TaskItem.js +1 -1
  486. package/dist/node/components/templates/todos/TaskList.js +5 -5
  487. package/dist/node/components/templates/todos/index.js +5 -5
  488. package/dist/node/config/contractspec-blueprint.js +1 -1
  489. package/dist/node/config/contractspec-branding.js +1 -1
  490. package/dist/node/config/contractspec-routes.js +1 -1
  491. package/dist/node/config/index.js +1 -1
  492. package/dist/node/features/contracts-registry.js +1 -1
  493. package/dist/node/features/docs/docs.contracts.js +1 -1
  494. package/dist/node/features/docs/index.js +1 -1
  495. package/dist/node/features/docs.feature.js +1 -1
  496. package/dist/node/features/index.js +1 -1
  497. package/dist/node/features/mcp.feature.js +1 -1
  498. package/dist/node/features/presentations.feature.js +1 -1
  499. package/dist/node/features/registry.js +1 -1
  500. package/dist/node/index.js +382 -262
  501. package/dist/node/infrastructure/elysia/index.js +1 -1
  502. package/dist/node/infrastructure/elysia/logger.js +1 -1
  503. package/dist/node/infrastructure/index.js +1 -1
  504. package/dist/node/libs/email/client.js +1 -1
  505. package/dist/node/libs/email/contact.js +3 -3
  506. package/dist/node/libs/email/newsletter.js +3 -3
  507. package/dist/node/libs/email/utils.js +2 -2
  508. package/dist/node/libs/email/waitlist-application.js +3 -3
  509. package/dist/node/libs/email/waitlist.js +3 -3
  510. package/dist/node/libs/email.js +6 -6
  511. package/dist/node/libs/posthog/client.js +1 -1
  512. package/dist/node/libs/posthog/native.js +1 -1
  513. package/dist/node/libs/posthog/server.js +1 -1
  514. package/dist/node/libs/pricing-examples.js +1 -1
  515. package/dist/node/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
  516. package/dist/node/presentation/features/atoms/FeatureIcon/index.js +1 -1
  517. package/dist/node/presentation/features/atoms/index.js +1 -1
  518. package/dist/node/presentation/features/hooks/index.js +1 -1
  519. package/dist/node/presentation/features/hooks/useContractsRegistry.js +1 -1
  520. package/dist/node/presentation/features/hooks/useFeatureFilters.js +1 -1
  521. package/dist/node/presentation/features/hooks/useFeatureRegistry.js +1 -1
  522. package/dist/node/presentation/features/hooks/useRelatedDocs.js +1 -1
  523. package/dist/node/presentation/features/index.js +1 -1
  524. package/dist/node/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
  525. package/dist/node/presentation/features/molecules/FeatureCard/index.js +1 -1
  526. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
  527. package/dist/node/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
  528. package/dist/node/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  529. package/dist/node/presentation/features/molecules/FeatureFilters/index.js +1 -1
  530. package/dist/node/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
  531. package/dist/node/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
  532. package/dist/node/presentation/features/molecules/index.js +1 -1
  533. package/dist/node/presentation/features/organisms/FeatureDataViewsList.js +1 -1
  534. package/dist/node/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
  535. package/dist/node/presentation/features/organisms/FeatureDetail/index.js +1 -1
  536. package/dist/node/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
  537. package/dist/node/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
  538. package/dist/node/presentation/features/organisms/FeatureEventsList.js +1 -1
  539. package/dist/node/presentation/features/organisms/FeatureFormsList.js +1 -1
  540. package/dist/node/presentation/features/organisms/FeatureOperationsList.js +1 -1
  541. package/dist/node/presentation/features/organisms/FeaturePresentationsList.js +1 -1
  542. package/dist/node/presentation/features/organisms/index.js +1 -1
  543. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
  544. package/dist/node/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
  545. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
  546. package/dist/node/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
  547. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
  548. package/dist/node/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
  549. package/dist/node/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
  550. package/dist/node/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
  551. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
  552. package/dist/node/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
  553. package/dist/node/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
  554. package/dist/node/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
  555. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
  556. package/dist/node/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
  557. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
  558. package/dist/node/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
  559. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
  560. package/dist/node/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
  561. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
  562. package/dist/node/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
  563. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
  564. package/dist/node/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
  565. package/dist/presentation/features/atoms/FeatureIcon/FeatureIcon.js +1 -1
  566. package/dist/presentation/features/atoms/FeatureIcon/index.js +1 -1
  567. package/dist/presentation/features/atoms/index.js +1 -1
  568. package/dist/presentation/features/hooks/index.js +1 -1
  569. package/dist/presentation/features/hooks/useContractsRegistry.js +1 -1
  570. package/dist/presentation/features/hooks/useFeatureFilters.js +1 -1
  571. package/dist/presentation/features/hooks/useFeatureRegistry.js +1 -1
  572. package/dist/presentation/features/hooks/useRelatedDocs.js +1 -1
  573. package/dist/presentation/features/index.js +1 -1
  574. package/dist/presentation/features/molecules/FeatureCard/FeatureCard.js +1 -1
  575. package/dist/presentation/features/molecules/FeatureCard/index.js +1 -1
  576. package/dist/presentation/features/molecules/FeatureCategoryHeader/FeatureCategoryHeader.js +1 -1
  577. package/dist/presentation/features/molecules/FeatureCategoryHeader/index.js +1 -1
  578. package/dist/presentation/features/molecules/FeatureFilters/FeatureFilters.js +1 -1
  579. package/dist/presentation/features/molecules/FeatureFilters/index.js +1 -1
  580. package/dist/presentation/features/molecules/FeatureHoverPreview/FeatureHoverPreview.js +1 -1
  581. package/dist/presentation/features/molecules/FeatureHoverPreview/index.js +1 -1
  582. package/dist/presentation/features/molecules/index.js +1 -1
  583. package/dist/presentation/features/organisms/FeatureDataViewsList.js +1 -1
  584. package/dist/presentation/features/organisms/FeatureDetail/FeatureDetail.js +1 -1
  585. package/dist/presentation/features/organisms/FeatureDetail/index.js +1 -1
  586. package/dist/presentation/features/organisms/FeatureDiscovery/FeatureDiscovery.js +1 -1
  587. package/dist/presentation/features/organisms/FeatureDiscovery/index.js +1 -1
  588. package/dist/presentation/features/organisms/FeatureEventsList.js +1 -1
  589. package/dist/presentation/features/organisms/FeatureFormsList.js +1 -1
  590. package/dist/presentation/features/organisms/FeatureOperationsList.js +1 -1
  591. package/dist/presentation/features/organisms/FeaturePresentationsList.js +1 -1
  592. package/dist/presentation/features/organisms/index.js +1 -1
  593. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/FeatureDataViewDetailTemplate.js +1 -1
  594. package/dist/presentation/features/templates/FeatureDataViewDetailTemplate/index.js +1 -1
  595. package/dist/presentation/features/templates/FeatureDataViewsTemplate/FeatureDataViewsTemplate.js +1 -1
  596. package/dist/presentation/features/templates/FeatureDataViewsTemplate/index.js +1 -1
  597. package/dist/presentation/features/templates/FeatureEventDetailTemplate/FeatureEventDetailTemplate.js +1 -1
  598. package/dist/presentation/features/templates/FeatureEventDetailTemplate/index.js +1 -1
  599. package/dist/presentation/features/templates/FeatureEventsTemplate/FeatureEventsTemplate.js +1 -1
  600. package/dist/presentation/features/templates/FeatureEventsTemplate/index.js +1 -1
  601. package/dist/presentation/features/templates/FeatureFormDetailTemplate/FeatureFormDetailTemplate.js +1 -1
  602. package/dist/presentation/features/templates/FeatureFormDetailTemplate/index.js +1 -1
  603. package/dist/presentation/features/templates/FeatureFormsTemplate/FeatureFormsTemplate.js +1 -1
  604. package/dist/presentation/features/templates/FeatureFormsTemplate/index.js +1 -1
  605. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/FeatureOperationDetailTemplate.js +1 -1
  606. package/dist/presentation/features/templates/FeatureOperationDetailTemplate/index.js +1 -1
  607. package/dist/presentation/features/templates/FeatureOperationsTemplate/FeatureOperationsTemplate.js +1 -1
  608. package/dist/presentation/features/templates/FeatureOperationsTemplate/index.js +1 -1
  609. package/dist/presentation/features/templates/FeatureOverviewTemplate/FeatureOverviewTemplate.js +1 -1
  610. package/dist/presentation/features/templates/FeatureOverviewTemplate/index.js +1 -1
  611. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/FeaturePresentationDetailTemplate.js +1 -1
  612. package/dist/presentation/features/templates/FeaturePresentationDetailTemplate/index.js +1 -1
  613. package/dist/presentation/features/templates/FeaturePresentationsTemplate/FeaturePresentationsTemplate.js +1 -1
  614. package/dist/presentation/features/templates/FeaturePresentationsTemplate/index.js +1 -1
  615. package/package.json +49 -24
  616. package/src/application/mcp/internalMcp.ts +1 -1
  617. package/src/bundles/LibraryBundle.ts +19 -130
  618. package/src/components/docs/docsManifest.test.ts +14 -0
  619. package/src/components/docs/docsManifest.ts +10 -0
  620. package/src/components/docs/examples/DocsExamplesPage.tsx +3 -3
  621. package/src/components/docs/examples/ExampleShowcasePage.tsx +1 -1
  622. package/src/components/docs/examples/exampleShowcaseData.test.ts +5 -3
  623. package/src/components/docs/examples/exampleShowcaseData.ts +3 -3
  624. package/src/components/docs/generated/docs-index._common.json +1699 -2008
  625. package/src/components/docs/generated/docs-index.agent-console.json +377 -377
  626. package/src/components/docs/generated/docs-index.ai-chat-assistant.json +17 -17
  627. package/src/components/docs/generated/docs-index.ai-chat.json +105 -105
  628. package/src/components/docs/generated/docs-index.ai-support-bot.json +9 -9
  629. package/src/components/docs/generated/docs-index.analytics-dashboard.json +169 -169
  630. package/src/components/docs/generated/docs-index.app-config.json +137 -137
  631. package/src/components/docs/generated/docs-index.artisan-knowledge-product.json +17 -17
  632. package/src/components/docs/generated/docs-index.artisan-payments-stripe.json +33 -33
  633. package/src/components/docs/generated/docs-index.audit-trail.json +49 -49
  634. package/src/components/docs/generated/docs-index.calendar-google.json +9 -9
  635. package/src/components/docs/generated/docs-index.content-generation.json +9 -9
  636. package/src/components/docs/generated/docs-index.control-plane.json +17 -17
  637. package/src/components/docs/generated/docs-index.crm-pipeline.json +161 -161
  638. package/src/components/docs/generated/docs-index.data-grid-showcase.json +25 -25
  639. package/src/components/docs/generated/docs-index.defineExample.json +9 -9
  640. package/src/components/docs/generated/docs-index.email-gmail.json +9 -9
  641. package/src/components/docs/generated/docs-index.feature-flags.json +217 -217
  642. package/src/components/docs/generated/docs-index.files.json +177 -177
  643. package/src/components/docs/generated/docs-index.generated.ts +20 -20
  644. package/src/components/docs/generated/docs-index.harness-lab.json +9 -9
  645. package/src/components/docs/generated/docs-index.health.json +97 -97
  646. package/src/components/docs/generated/docs-index.identity-rbac.json +313 -313
  647. package/src/components/docs/generated/docs-index.in-app-docs.json +9 -9
  648. package/src/components/docs/generated/docs-index.integration-hub.json +265 -265
  649. package/src/components/docs/generated/docs-index.integration-posthog.json +9 -9
  650. package/src/components/docs/generated/docs-index.integration-stripe.json +9 -9
  651. package/src/components/docs/generated/docs-index.integration-supabase.json +9 -9
  652. package/src/components/docs/generated/docs-index.jobs.json +137 -137
  653. package/src/components/docs/generated/docs-index.kb-update-pipeline.json +129 -129
  654. package/src/components/docs/generated/docs-index.knowledge-canon.json +9 -9
  655. package/src/components/docs/generated/docs-index.learning-journey-ambient-coach.json +9 -9
  656. package/src/components/docs/generated/docs-index.learning-journey-crm-onboarding.json +49 -49
  657. package/src/components/docs/generated/docs-index.learning-journey-duo-drills.json +9 -9
  658. package/src/components/docs/generated/docs-index.learning-journey-platform-tour.json +49 -49
  659. package/src/components/docs/generated/docs-index.learning-journey-quest-challenges.json +9 -9
  660. package/src/components/docs/generated/docs-index.learning-journey-registry.json +33 -33
  661. package/src/components/docs/generated/docs-index.learning-journey-studio-onboarding.json +49 -49
  662. package/src/components/docs/generated/docs-index.learning-journey-ui-coaching.json +9 -9
  663. package/src/components/docs/generated/docs-index.learning-journey-ui-gamified.json +9 -9
  664. package/src/components/docs/generated/docs-index.learning-journey-ui-onboarding.json +9 -9
  665. package/src/components/docs/generated/docs-index.learning-journey-ui-shared.json +9 -9
  666. package/src/components/docs/generated/docs-index.learning-journey.json +241 -241
  667. package/src/components/docs/generated/docs-index.learning-patterns.json +9 -9
  668. package/src/components/docs/generated/docs-index.lifecycle-cli.json +9 -9
  669. package/src/components/docs/generated/docs-index.lifecycle-dashboard.json +9 -9
  670. package/src/components/docs/generated/docs-index.locale-jurisdiction-gate.json +65 -65
  671. package/src/components/docs/generated/docs-index.manifest.json +432 -432
  672. package/src/components/docs/generated/docs-index.marketplace.json +337 -337
  673. package/src/components/docs/generated/docs-index.meeting-recorder-providers.json +9 -9
  674. package/src/components/docs/generated/docs-index.meeting-recorder.json +49 -49
  675. package/src/components/docs/generated/docs-index.messaging-agent-actions.json +17 -17
  676. package/src/components/docs/generated/docs-index.metrics.json +201 -201
  677. package/src/components/docs/generated/docs-index.minimal.json +17 -17
  678. package/src/components/docs/generated/docs-index.mobile-demo-landing.json +42 -0
  679. package/src/components/docs/generated/docs-index.notifications.json +65 -65
  680. package/src/components/docs/generated/docs-index.openbanking-powens.json +9 -9
  681. package/src/components/docs/generated/docs-index.openbanking.json +65 -65
  682. package/src/components/docs/generated/docs-index.opencode-cli.json +17 -17
  683. package/src/components/docs/generated/docs-index.personalization.json +9 -9
  684. package/src/components/docs/generated/docs-index.platform-acp.json +137 -137
  685. package/src/components/docs/generated/docs-index.platform-agent.json +201 -201
  686. package/src/components/docs/generated/docs-index.platform-context.json +121 -121
  687. package/src/components/docs/generated/docs-index.platform-control-plane.json +321 -321
  688. package/src/components/docs/generated/docs-index.platform-database.json +89 -89
  689. package/src/components/docs/generated/docs-index.platform-docs.json +161 -161
  690. package/src/components/docs/generated/docs-index.platform-harness.json +177 -177
  691. package/src/components/docs/generated/docs-index.platform-integrations.json +329 -329
  692. package/src/components/docs/generated/docs-index.platform-knowledge.json +57 -57
  693. package/src/components/docs/generated/docs-index.platform-provider-ranking.json +217 -217
  694. package/src/components/docs/generated/docs-index.pocket-family-office.json +129 -129
  695. package/src/components/docs/generated/docs-index.policy-safe-knowledge-assistant.json +9 -9
  696. package/src/components/docs/generated/docs-index.product-intent.json +9 -9
  697. package/src/components/docs/generated/docs-index.project-management-sync.json +9 -9
  698. package/src/components/docs/generated/docs-index.saas-boilerplate.json +209 -209
  699. package/src/components/docs/generated/docs-index.service-business-os.json +193 -193
  700. package/src/components/docs/generated/docs-index.team-hub.json +185 -185
  701. package/src/components/docs/generated/docs-index.unknown.json +521 -521
  702. package/src/components/docs/generated/docs-index.versioned-knowledge-base.json +81 -81
  703. package/src/components/docs/generated/docs-index.video-api-showcase.json +33 -33
  704. package/src/components/docs/generated/docs-index.video-docs-terminal.json +9 -9
  705. package/src/components/docs/generated/docs-index.video-marketing-clip.json +9 -9
  706. package/src/components/docs/generated/docs-index.visualization-showcase.json +17 -17
  707. package/src/components/docs/generated/docs-index.voice-providers.json +9 -9
  708. package/src/components/docs/generated/docs-index.wealth-snapshot.json +153 -153
  709. package/src/components/docs/generated/docs-index.workflow-system.json +433 -433
  710. package/src/components/docs/generated/docs-index.workspace-cli.json +9 -9
  711. package/src/components/docs/generated/index.ts +20 -5
  712. package/src/components/docs/generated/loader.ts +15 -8
  713. package/src/components/docs/getting-started/CompatibilityPage.tsx +14 -0
  714. package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.content.ts +252 -0
  715. package/src/components/docs/libraries/LibrariesCrossPlatformUIPage.tsx +232 -0
  716. package/src/components/docs/libraries/LibrariesDesignSystemPage.tsx +79 -0
  717. package/src/components/docs/libraries/LibrariesOverviewPage.tsx +6 -0
  718. package/src/components/docs/libraries/LibrariesRuntimePage.tsx +15 -0
  719. package/src/components/docs/libraries/LibrariesUIKitPage.tsx +15 -0
  720. package/src/components/docs/libraries/LibrariesUIKitWebPage.tsx +14 -0
  721. package/src/components/docs/libraries/index.ts +1 -0
  722. package/src/components/docs/reference/DocsReferenceIndexPage.tsx +1 -1
  723. package/src/index.ts +1 -1
  724. package/src/components/docs/generated/docs-index.mobile-demo-tasks.json +0 -34
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Logger as x,LogLevel as f}from"@contractspec/lib.logger";function j(){return"production"}var k=()=>new x({level:f.INFO,environment:j(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),z=k(),B=new x({level:f.WARN,environment:j(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),C=new x({level:f.INFO,environment:j(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});export{B as dbLogger,k as createAppLogger,C as authLogger,z as appLogger,x as Logger,f as LogLevel};
2
+ var B=Object.defineProperty;var C=(x)=>x;function D(x,f){this[x]=C.bind(null,f)}var G=(x,f)=>{for(var j in f)B(x,j,{get:f[j],enumerable:!0,configurable:!0,set:D.bind(f,j)})};var H=(x,f)=>()=>(x&&(f=x(x=0)),f);import{Logger as k,LogLevel as q}from"@contractspec/lib.logger";function z(){return"production"}var F=()=>new k({level:q.INFO,environment:z(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),K=F(),M=new k({level:q.WARN,environment:z(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),O=new k({level:q.INFO,environment:z(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});export{M as dbLogger,F as createAppLogger,O as authLogger,K as appLogger,k as Logger,q as LogLevel};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Logger as j,LogLevel as k}from"@contractspec/lib.logger";function q(){return"production"}var x=()=>new j({level:k.INFO,environment:q(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),B=x(),C=new j({level:k.WARN,environment:q(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),D=new j({level:k.INFO,environment:q(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});export{C as dbLogger,x as createAppLogger,D as authLogger,B as appLogger,j as Logger,k as LogLevel};
2
+ var C=Object.defineProperty;var D=(j)=>j;function F(j,k){this[j]=D.bind(null,k)}var H=(j,k)=>{for(var q in k)C(j,q,{get:k[q],enumerable:!0,configurable:!0,set:F.bind(k,q)})};var I=(j,k)=>()=>(j&&(k=j(j=0)),k);import{Logger as x,LogLevel as z}from"@contractspec/lib.logger";function B(){return"production"}var G=()=>new x({level:z.INFO,environment:B(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),M=G(),O=new x({level:z.WARN,environment:B(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),P=new x({level:z.INFO,environment:B(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});export{O as dbLogger,G as createAppLogger,P as authLogger,M as appLogger,x as Logger,z as LogLevel};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Logger as x,LogLevel as f}from"@contractspec/lib.logger";function j(){return"production"}var k=()=>new x({level:f.INFO,environment:j(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),z=k(),B=new x({level:f.WARN,environment:j(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),C=new x({level:f.INFO,environment:j(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});export{B as dbLogger,k as createAppLogger,C as authLogger,z as appLogger,x as Logger,f as LogLevel};
2
+ var B=Object.defineProperty;var C=(x)=>x;function D(x,f){this[x]=C.bind(null,f)}var G=(x,f)=>{for(var j in f)B(x,j,{get:f[j],enumerable:!0,configurable:!0,set:D.bind(f,j)})};var H=(x,f)=>()=>(x&&(f=x(x=0)),f);import{Logger as k,LogLevel as q}from"@contractspec/lib.logger";function z(){return"production"}var F=()=>new k({level:q.INFO,environment:z(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),K=F(),M=new k({level:q.WARN,environment:z(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),O=new k({level:q.INFO,environment:z(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});export{M as dbLogger,F as createAppLogger,O as authLogger,K as appLogger,k as Logger,q as LogLevel};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Logger as m}from"@contractspec/lib.logger";import{createClient as E,Temv1alpha1 as s}from"@scaleway/sdk";var c={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},l={email:"contact@contractspec.io",name:"ContractSpec Team"},p="fr-par",a=null,n=null,o=(e)=>new s.API(e),A=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return p},_=()=>{if(a)return{ok:!0,config:a};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,r=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!r)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let i=A(process.env.SCALEWAY_REGION);return a={accessKey:e,secretKey:t,projectId:r,region:i,defaultZone:`${i}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??c.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??c.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??l.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??l.name}},{ok:!0,config:a}},d=(e)=>{if(n)return n;let t=E({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return n=o(t),n},f=async(e,t)=>{try{return await d(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(r){return new m().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:r instanceof Error?r.message:r}),{success:!1,error:r,errorMessage:"Failed to send email via Scaleway."}}},y={resetCaches(){n=null,a=null,o=(e)=>new s.API(e)},setApiFactory(e){o=e},setClient(e){n=e}};export{f as sendEmail,_ as getEmailConfig,y as __internal};
2
+ var m=Object.defineProperty;var E=(e)=>e;function p(e,t){this[e]=E.bind(null,t)}var f=(e,t)=>{for(var r in t)m(e,r,{get:t[r],enumerable:!0,configurable:!0,set:p.bind(t,r)})};var y=(e,t)=>()=>(e&&(t=e(e=0)),t);import{Logger as A}from"@contractspec/lib.logger";import{createClient as d,Temv1alpha1 as s}from"@scaleway/sdk";var c={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},l={email:"contact@contractspec.io",name:"ContractSpec Team"},u="fr-par",a=null,n=null,o=(e)=>new s.API(e),C=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return u},R=()=>{if(a)return{ok:!0,config:a};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,r=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!r)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let i=C(process.env.SCALEWAY_REGION);return a={accessKey:e,secretKey:t,projectId:r,region:i,defaultZone:`${i}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??c.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??c.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??l.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??l.name}},{ok:!0,config:a}},_=(e)=>{if(n)return n;let t=d({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return n=o(t),n},v=async(e,t)=>{try{return await _(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(r){return new A().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:r instanceof Error?r.message:r}),{success:!1,error:r,errorMessage:"Failed to send email via Scaleway."}}},I={resetCaches(){n=null,a=null,o=(e)=>new s.API(e)},setApiFactory(e){o=e},setClient(e){n=e}};export{v as sendEmail,R as getEmailConfig,I as __internal};
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{Logger as C}from"@contractspec/lib.logger";import{createClient as y,Temv1alpha1 as u}from"@scaleway/sdk";var m={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},p={email:"contact@contractspec.io",name:"ContractSpec Team"},S="fr-par",s=null,n=null,l=(e)=>new u.API(e),_=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return S},E=()=>{if(s)return{ok:!0,config:s};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,o=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!o)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let r=_(process.env.SCALEWAY_REGION);return s={accessKey:e,secretKey:t,projectId:o,region:r,defaultZone:`${r}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??m.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??m.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??p.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??p.name}},{ok:!0,config:s}},x=(e)=>{if(n)return n;let t=y({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return n=l(t),n},d=async(e,t)=>{try{return await x(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(o){return new C().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:o instanceof Error?o.message:o}),{success:!1,error:o,errorMessage:"Failed to send email via Scaleway."}}},b={resetCaches(){n=null,s=null,l=(e)=>new u.API(e)},setApiFactory(e){l=e},setClient(e){n=e}};var i=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),f=(e)=>i(e).replaceAll(`
3
- `,"<br />");var v="Email service is not configured. Please contact us directly at contact@contractspec.io.",R="Failed to send message. Please contact us directly at contact@contractspec.io.",F=async(e)=>{let t=(e.get("name")??"").toString().trim(),o=(e.get("email")??"").toString().trim(),r=(e.get("message")??"").toString().trim();if(!o)return{success:!1,text:"Please fill in all required fields."};let a=E();if(!a.ok||!a.config)return{success:!1,text:a.errorMessage??v};let c=t||o,g=`
2
+ var C=Object.defineProperty;var y=(e)=>e;function S(e,t){this[e]=y.bind(null,t)}var h=(e,t)=>{for(var o in t)C(e,o,{get:t[o],enumerable:!0,configurable:!0,set:S.bind(t,o)})};var w=(e,t)=>()=>(e&&(t=e(e=0)),t);import{Logger as _}from"@contractspec/lib.logger";import{createClient as x,Temv1alpha1 as u}from"@scaleway/sdk";var m={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},p={email:"contact@contractspec.io",name:"ContractSpec Team"},v="fr-par",s=null,n=null,l=(e)=>new u.API(e),R=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return v},E=()=>{if(s)return{ok:!0,config:s};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,o=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!o)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let r=R(process.env.SCALEWAY_REGION);return s={accessKey:e,secretKey:t,projectId:o,region:r,defaultZone:`${r}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??m.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??m.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??p.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??p.name}},{ok:!0,config:s}},I=(e)=>{if(n)return n;let t=x({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return n=l(t),n},d=async(e,t)=>{try{return await I(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(o){return new _().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:o instanceof Error?o.message:o}),{success:!1,error:o,errorMessage:"Failed to send email via Scaleway."}}},Y={resetCaches(){n=null,s=null,l=(e)=>new u.API(e)},setApiFactory(e){l=e},setClient(e){n=e}};var i=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),f=(e)=>i(e).replaceAll(`
3
+ `,"<br />");var T="Email service is not configured. Please contact us directly at contact@contractspec.io.",M="Failed to send message. Please contact us directly at contact@contractspec.io.",$=async(e)=>{let t=(e.get("name")??"").toString().trim(),o=(e.get("email")??"").toString().trim(),r=(e.get("message")??"").toString().trim();if(!o)return{success:!1,text:"Please fill in all required fields."};let a=E();if(!a.ok||!a.config)return{success:!1,text:a.errorMessage??T};let c=t||o,g=`
4
4
  New contact form submission from ${c}
5
5
 
6
6
  Contact Information:
@@ -27,4 +27,4 @@ Submitted via ContractSpec contact form
27
27
  </div>
28
28
  <p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec contact form</p>
29
29
  </div>
30
- `;if(!(await d(a.config,{to:[a.config.teamInbox],subject:`New Contact Form Message from ${c}`,text:g,html:A,replyTo:o,context:"contact-form"})).success)return{success:!1,text:R};return{success:!0,text:"Message sent successfully!"}};export{F as submitContactForm};
30
+ `;if(!(await d(a.config,{to:[a.config.teamInbox],subject:`New Contact Form Message from ${c}`,text:g,html:A,replyTo:o,context:"contact-form"})).success)return{success:!1,text:M};return{success:!0,text:"Message sent successfully!"}};export{$ as submitContactForm};
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{Logger as g}from"@contractspec/lib.logger";import{createClient as y,Temv1alpha1 as m}from"@scaleway/sdk";var c={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},l={email:"contact@contractspec.io",name:"ContractSpec Team"},S="fr-par",n=null,s=null,o=(e)=>new m.API(e),C=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return S},p=()=>{if(n)return{ok:!0,config:n};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,r=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!r)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let i=C(process.env.SCALEWAY_REGION);return n={accessKey:e,secretKey:t,projectId:r,region:i,defaultZone:`${i}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??c.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??c.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??l.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??l.name}},{ok:!0,config:n}},w=(e)=>{if(s)return s;let t=y({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return s=o(t),s},a=async(e,t)=>{try{return await w(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(r){return new g().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:r instanceof Error?r.message:r}),{success:!1,error:r,errorMessage:"Failed to send email via Scaleway."}}},R={resetCaches(){s=null,n=null,o=(e)=>new m.API(e)},setApiFactory(e){o=e},setClient(e){s=e}};var b=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),u=(e)=>b(e).replaceAll(`
3
- `,"<br />");var _="Newsletter service is not configured. Please try again later.",d="Failed to subscribe. Please try again later or contact us directly.",Y=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let r=p();if(!r.ok||!r.config)return{success:!1,text:r.errorMessage??_};let i=`
2
+ var g=Object.defineProperty;var y=(e)=>e;function S(e,t){this[e]=y.bind(null,t)}var I=(e,t)=>{for(var r in t)g(e,r,{get:t[r],enumerable:!0,configurable:!0,set:S.bind(t,r)})};var N=(e,t)=>()=>(e&&(t=e(e=0)),t);import{Logger as C}from"@contractspec/lib.logger";import{createClient as w,Temv1alpha1 as m}from"@scaleway/sdk";var c={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},l={email:"contact@contractspec.io",name:"ContractSpec Team"},b="fr-par",n=null,s=null,o=(e)=>new m.API(e),_=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return b},p=()=>{if(n)return{ok:!0,config:n};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,r=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!r)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let i=_(process.env.SCALEWAY_REGION);return n={accessKey:e,secretKey:t,projectId:r,region:i,defaultZone:`${i}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??c.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??c.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??l.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??l.name}},{ok:!0,config:n}},x=(e)=>{if(s)return s;let t=w({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return s=o(t),s},a=async(e,t)=>{try{return await x(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(r){return new C().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:r instanceof Error?r.message:r}),{success:!1,error:r,errorMessage:"Failed to send email via Scaleway."}}},W={resetCaches(){s=null,n=null,o=(e)=>new m.API(e)},setApiFactory(e){o=e},setClient(e){s=e}};var T=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),u=(e)=>T(e).replaceAll(`
3
+ `,"<br />");var h="Newsletter service is not configured. Please try again later.",d="Failed to subscribe. Please try again later or contact us directly.",j=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let r=p();if(!r.ok||!r.config)return{success:!1,text:r.errorMessage??h};let i=`
4
4
  Welcome to ContractSpec!
5
5
 
6
6
  Thanks for subscribing to our newsletter. You'll receive updates on:
@@ -44,4 +44,4 @@ Unsubscribe: Reply to this email with "unsubscribe"
44
44
  <p style="margin: 0 0 8px;">New newsletter subscription</p>
45
45
  <p style="margin: 0;"><strong>Email:</strong> ${u(t)}</p>
46
46
  </div>
47
- `;if(!(await a(r.config,{to:[r.config.teamInbox],subject:`New Newsletter Subscription: ${t}`,text:f,html:A,context:"newsletter-team-notification"})).success)return{success:!1,text:d};return{success:!0,text:"Successfully subscribed!"}};export{Y as subscribeToNewsletter};
47
+ `;if(!(await a(r.config,{to:[r.config.teamInbox],subject:`New Newsletter Subscription: ${t}`,text:f,html:A,context:"newsletter-team-notification"})).success)return{success:!1,text:d};return{success:!0,text:"Successfully subscribed!"}};export{j as subscribeToNewsletter};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- var t=(l)=>l.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),e=(l)=>t(l).replaceAll(`
3
- `,"<br />");export{e as formatMultilineHtml,t as escapeHtml};
2
+ var r=Object.defineProperty;var n=(l)=>l;function p(l,t){this[l]=n.bind(null,t)}var c=(l,t)=>{for(var e in t)r(l,e,{get:t[e],enumerable:!0,configurable:!0,set:p.bind(t,e)})};var s=(l,t)=>()=>(l&&(t=l(l=0)),t);var a=(l)=>l.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),g=(l)=>a(l).replaceAll(`
3
+ `,"<br />");export{g as formatMultilineHtml,a as escapeHtml};
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{Logger as T}from"@contractspec/lib.logger";import{createClient as W,Temv1alpha1 as S}from"@scaleway/sdk";var E={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},A={email:"contact@contractspec.io",name:"ContractSpec Team"},R="fr-par",r=null,l=null,d=(e)=>new S.API(e),$=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return R},x=()=>{if(r)return{ok:!0,config:r};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,i=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!i)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let a=$(process.env.SCALEWAY_REGION);return r={accessKey:e,secretKey:t,projectId:i,region:a,defaultZone:`${a}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??E.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??E.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??A.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??A.name}},{ok:!0,config:r}},k=(e)=>{if(l)return l;let t=W({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return l=d(t),l},u=async(e,t)=>{try{return await k(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(i){return new T().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:i instanceof Error?i.message:i}),{success:!1,error:i,errorMessage:"Failed to send email via Scaleway."}}},O={resetCaches(){l=null,r=null,d=(e)=>new S.API(e)},setApiFactory(e){d=e},setClient(e){l=e}};var o=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),c=(e)=>o(e).replaceAll(`
3
- `,"<br />");var P="Waitlist application service is not configured. Please try again later.",w="Failed to submit application. Please try again later or contact us directly.",H=async(e)=>{let t=(e.get("email")??"").toString().trim(),i=(e.get("name")??"").toString().trim(),a=(e.get("company")??"").toString().trim(),s=(e.get("role")??"").toString().trim(),p=(e.get("whatBuilding")??"").toString().trim(),m=(e.get("whatSolving")??"").toString().trim(),g=(e.get("teamSize")??"").toString().trim(),f=(e.get("timeline")??"").toString().trim(),h=e.get("openToSessions")==="on",y=e.get("okayWithCaseStudies")==="on";if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};if(!i||!p||!m)return{success:!1,text:"Please fill in all required fields."};let n=x();if(!n.ok||!n.config)return{success:!1,text:n.errorMessage??P};let C=`
2
+ var T=Object.defineProperty;var W=(e)=>e;function R(e,t){this[e]=W.bind(null,t)}var F=(e,t)=>{for(var i in t)T(e,i,{get:t[i],enumerable:!0,configurable:!0,set:R.bind(t,i)})};var j=(e,t)=>()=>(e&&(t=e(e=0)),t);import{Logger as $}from"@contractspec/lib.logger";import{createClient as k,Temv1alpha1 as S}from"@scaleway/sdk";var E={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},A={email:"contact@contractspec.io",name:"ContractSpec Team"},P="fr-par",r=null,l=null,d=(e)=>new S.API(e),L=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return P},x=()=>{if(r)return{ok:!0,config:r};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,i=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!i)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let a=L(process.env.SCALEWAY_REGION);return r={accessKey:e,secretKey:t,projectId:i,region:a,defaultZone:`${a}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??E.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??E.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??A.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??A.name}},{ok:!0,config:r}},N=(e)=>{if(l)return l;let t=k({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return l=d(t),l},u=async(e,t)=>{try{return await N(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(i){return new $().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:i instanceof Error?i.message:i}),{success:!1,error:i,errorMessage:"Failed to send email via Scaleway."}}},U={resetCaches(){l=null,r=null,d=(e)=>new S.API(e)},setApiFactory(e){d=e},setClient(e){l=e}};var o=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),c=(e)=>o(e).replaceAll(`
3
+ `,"<br />");var Y="Waitlist application service is not configured. Please try again later.",w="Failed to submit application. Please try again later or contact us directly.",Q=async(e)=>{let t=(e.get("email")??"").toString().trim(),i=(e.get("name")??"").toString().trim(),a=(e.get("company")??"").toString().trim(),s=(e.get("role")??"").toString().trim(),p=(e.get("whatBuilding")??"").toString().trim(),m=(e.get("whatSolving")??"").toString().trim(),g=(e.get("teamSize")??"").toString().trim(),f=(e.get("timeline")??"").toString().trim(),h=e.get("openToSessions")==="on",y=e.get("okayWithCaseStudies")==="on";if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};if(!i||!p||!m)return{success:!1,text:"Please fill in all required fields."};let n=x();if(!n.ok||!n.config)return{success:!1,text:n.errorMessage??Y};let C=`
4
4
  You're on the list.
5
5
 
6
6
  Thanks for applying to the ContractSpec design partner program. We're slowly onboarding design partners in waves. If your use case is a good fit, we'll reach out personally.
@@ -98,4 +98,4 @@ Submitted via ContractSpec waitlist application form
98
98
  </div>
99
99
  <p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec waitlist application form</p>
100
100
  </div>
101
- `;if(!(await u(n.config,{to:[n.config.teamInbox],subject:`New Design Partner Application: ${i} (${t})`,text:_,html:I,replyTo:t,context:"waitlist-application-team-notification"})).success)return{success:!1,text:w};return{success:!0,text:"Application submitted successfully!"}};export{H as submitWaitlistApplication};
101
+ `;if(!(await u(n.config,{to:[n.config.teamInbox],subject:`New Design Partner Application: ${i} (${t})`,text:_,html:I,replyTo:t,context:"waitlist-application-team-notification"})).success)return{success:!1,text:w};return{success:!0,text:"Application submitted successfully!"}};export{Q as submitWaitlistApplication};
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{Logger as g}from"@contractspec/lib.logger";import{createClient as A,Temv1alpha1 as m}from"@scaleway/sdk";var l={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},c={email:"contact@contractspec.io",name:"ContractSpec Team"},S="fr-par",a=null,i=null,r=(e)=>new m.API(e),h=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return S},p=()=>{if(a)return{ok:!0,config:a};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,o=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!o)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let n=h(process.env.SCALEWAY_REGION);return a={accessKey:e,secretKey:t,projectId:o,region:n,defaultZone:`${n}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??l.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??l.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??c.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??c.name}},{ok:!0,config:a}},C=(e)=>{if(i)return i;let t=A({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return i=r(t),i},s=async(e,t)=>{try{return await C(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(o){return new g().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:o instanceof Error?o.message:o}),{success:!1,error:o,errorMessage:"Failed to send email via Scaleway."}}},b={resetCaches(){i=null,a=null,r=(e)=>new m.API(e)},setApiFactory(e){r=e},setClient(e){i=e}};var w=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),u=(e)=>w(e).replaceAll(`
3
- `,"<br />");var _="Waitlist service is not configured. Please try again later.",f="Failed to join waitlist. Please try again later or contact us directly.",Y=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let o=p();if(!o.ok||!o.config)return{success:!1,text:o.errorMessage??_};let n=`
2
+ var g=Object.defineProperty;var A=(e)=>e;function S(e,t){this[e]=A.bind(null,t)}var R=(e,t)=>{for(var o in t)g(e,o,{get:t[o],enumerable:!0,configurable:!0,set:S.bind(t,o)})};var L=(e,t)=>()=>(e&&(t=e(e=0)),t);import{Logger as h}from"@contractspec/lib.logger";import{createClient as C,Temv1alpha1 as m}from"@scaleway/sdk";var l={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},c={email:"contact@contractspec.io",name:"ContractSpec Team"},w="fr-par",a=null,i=null,r=(e)=>new m.API(e),_=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return w},p=()=>{if(a)return{ok:!0,config:a};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,o=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!o)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let n=_(process.env.SCALEWAY_REGION);return a={accessKey:e,secretKey:t,projectId:o,region:n,defaultZone:`${n}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??l.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??l.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??c.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??c.name}},{ok:!0,config:a}},v=(e)=>{if(i)return i;let t=C({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return i=r(t),i},s=async(e,t)=>{try{return await v(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(o){return new h().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:o instanceof Error?o.message:o}),{success:!1,error:o,errorMessage:"Failed to send email via Scaleway."}}},k={resetCaches(){i=null,a=null,r=(e)=>new m.API(e)},setApiFactory(e){r=e},setClient(e){i=e}};var I=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),u=(e)=>I(e).replaceAll(`
3
+ `,"<br />");var x="Waitlist service is not configured. Please try again later.",f="Failed to join waitlist. Please try again later or contact us directly.",O=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let o=p();if(!o.ok||!o.config)return{success:!1,text:o.errorMessage??x};let n=`
4
4
  You're on the waitlist!
5
5
 
6
6
  Thanks for joining the ContractSpec waitlist. You're now in line for early access to:
@@ -54,4 +54,4 @@ To remove yourself from the waitlist, reply to this email with "remove"
54
54
  <p style="margin: 0 0 8px;">New waitlist signup</p>
55
55
  <p style="margin: 0;"><strong>Email:</strong> ${u(t)}</p>
56
56
  </div>
57
- `;if(!(await s(o.config,{to:[o.config.teamInbox],subject:`New Waitlist Signup: ${t}`,text:E,html:y,context:"waitlist-team-notification"})).success)return{success:!1,text:f};return{success:!0,text:"Successfully joined waitlist!"}};export{Y as joinWaitlist};
57
+ `;if(!(await s(o.config,{to:[o.config.teamInbox],subject:`New Waitlist Signup: ${t}`,text:E,html:y,context:"waitlist-team-notification"})).success)return{success:!1,text:f};return{success:!0,text:"Successfully joined waitlist!"}};export{O as joinWaitlist};
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{Logger as _}from"@contractspec/lib.logger";import{createClient as W,Temv1alpha1 as w}from"@scaleway/sdk";var b={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},S={email:"contact@contractspec.io",name:"ContractSpec Team"},$="fr-par",g=null,d=null,y=(e)=>new w.API(e),P=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return $},m=()=>{if(g)return{ok:!0,config:g};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,i=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!i)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let o=P(process.env.SCALEWAY_REGION);return g={accessKey:e,secretKey:t,projectId:i,region:o,defaultZone:`${o}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??b.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??b.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??S.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??S.name}},{ok:!0,config:g}},k=(e)=>{if(d)return d;let t=W({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return d=y(t),d},n=async(e,t)=>{try{return await k(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(i){return new _().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:i instanceof Error?i.message:i}),{success:!1,error:i,errorMessage:"Failed to send email via Scaleway."}}},Q={resetCaches(){d=null,g=null,y=(e)=>new w.API(e)},setApiFactory(e){y=e},setClient(e){d=e}};var a=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),r=(e)=>a(e).replaceAll(`
3
- `,"<br />");var M="Email service is not configured. Please contact us directly at contact@contractspec.io.",F="Failed to send message. Please contact us directly at contact@contractspec.io.",O=async(e)=>{let t=(e.get("name")??"").toString().trim(),i=(e.get("email")??"").toString().trim(),o=(e.get("message")??"").toString().trim();if(!i)return{success:!1,text:"Please fill in all required fields."};let s=m();if(!s.ok||!s.config)return{success:!1,text:s.errorMessage??M};let l=t||i,c=`
2
+ var _=Object.defineProperty;var W=(e)=>e;function $(e,t){this[e]=W.bind(null,t)}var Z=(e,t)=>{for(var i in t)_(e,i,{get:t[i],enumerable:!0,configurable:!0,set:$.bind(t,i)})};var J=(e,t)=>()=>(e&&(t=e(e=0)),t);import{Logger as P}from"@contractspec/lib.logger";import{createClient as k,Temv1alpha1 as w}from"@scaleway/sdk";var b={email:"noreply@transactional.contractspec.io",name:"ContractSpec"},S={email:"contact@contractspec.io",name:"ContractSpec Team"},M="fr-par",g=null,d=null,y=(e)=>new w.API(e),F=(e)=>{let t=e?.trim().toLowerCase();if(t==="par"||t==="fr-par")return"fr-par";if(t==="ams"||t==="nl-ams")return"nl-ams";if(t==="waw"||t==="pl-waw")return"pl-waw";return M},m=()=>{if(g)return{ok:!0,config:g};let e=process.env.SCALEWAY_ACCESS_KEY||process.env.SCALEWAY_ACCESS_KEY_QUEUE,t=process.env.SCALEWAY_SECRET_KEY||process.env.SCALEWAY_SECRET_KEY_QUEUE,i=process.env.SCALEWAY_PROJECT_ID;if(!e||!t||!i)return{ok:!1,errorMessage:"Email service is not configured. Please contact us directly at contact@contractspec.io."};let o=F(process.env.SCALEWAY_REGION);return g={accessKey:e,secretKey:t,projectId:i,region:o,defaultZone:`${o}-1`,from:{email:process.env.SCALEWAY_EMAIL_FROM_EMAIL??b.email,name:process.env.SCALEWAY_EMAIL_FROM_NAME??b.name},teamInbox:{email:process.env.SCALEWAY_EMAIL_TEAM_EMAIL??S.email,name:process.env.SCALEWAY_EMAIL_TEAM_NAME??S.name}},{ok:!0,config:g}},O=(e)=>{if(d)return d;let t=k({accessKey:e.accessKey,secretKey:e.secretKey,defaultProjectId:e.projectId,defaultRegion:e.region,defaultZone:e.defaultZone});return d=y(t),d},n=async(e,t)=>{try{return await O(e).createEmail({region:e.region,projectId:e.projectId,from:e.from,to:t.to,subject:t.subject,text:t.text,html:t.html||t.text,additionalHeaders:t.replyTo?[{key:"Reply-To",value:t.replyTo}]:void 0}),{success:!0}}catch(i){return new P().error("scaleway_tem_email_send_failed",{context:t.context??"email",error:i instanceof Error?i.message:i}),{success:!1,error:i,errorMessage:"Failed to send email via Scaleway."}}},ee={resetCaches(){d=null,g=null,y=(e)=>new w.API(e)},setApiFactory(e){y=e},setClient(e){d=e}};var a=(e)=>e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;"),r=(e)=>a(e).replaceAll(`
3
+ `,"<br />");var Y="Email service is not configured. Please contact us directly at contact@contractspec.io.",L="Failed to send message. Please contact us directly at contact@contractspec.io.",j=async(e)=>{let t=(e.get("name")??"").toString().trim(),i=(e.get("email")??"").toString().trim(),o=(e.get("message")??"").toString().trim();if(!i)return{success:!1,text:"Please fill in all required fields."};let s=m();if(!s.ok||!s.config)return{success:!1,text:s.errorMessage??Y};let l=t||i,c=`
4
4
  New contact form submission from ${l}
5
5
 
6
6
  Contact Information:
@@ -27,7 +27,7 @@ Submitted via ContractSpec contact form
27
27
  </div>
28
28
  <p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec contact form</p>
29
29
  </div>
30
- `;if(!(await n(s.config,{to:[s.config.teamInbox],subject:`New Contact Form Message from ${l}`,text:c,html:p,replyTo:i,context:"contact-form"})).success)return{success:!1,text:F};return{success:!0,text:"Message sent successfully!"}};var Y="Newsletter service is not configured. Please try again later.",E="Failed to subscribe. Please try again later or contact us directly.",L=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let i=m();if(!i.ok||!i.config)return{success:!1,text:i.errorMessage??Y};let o=`
30
+ `;if(!(await n(s.config,{to:[s.config.teamInbox],subject:`New Contact Form Message from ${l}`,text:c,html:p,replyTo:i,context:"contact-form"})).success)return{success:!1,text:L};return{success:!0,text:"Message sent successfully!"}};var H="Newsletter service is not configured. Please try again later.",E="Failed to subscribe. Please try again later or contact us directly.",z=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let i=m();if(!i.ok||!i.config)return{success:!1,text:i.errorMessage??H};let o=`
31
31
  Welcome to ContractSpec!
32
32
 
33
33
  Thanks for subscribing to our newsletter. You'll receive updates on:
@@ -71,7 +71,7 @@ Unsubscribe: Reply to this email with "unsubscribe"
71
71
  <p style="margin: 0 0 8px;">New newsletter subscription</p>
72
72
  <p style="margin: 0;"><strong>Email:</strong> ${r(t)}</p>
73
73
  </div>
74
- `;if(!(await n(i.config,{to:[i.config.teamInbox],subject:`New Newsletter Subscription: ${t}`,text:c,html:p,context:"newsletter-team-notification"})).success)return{success:!1,text:E};return{success:!0,text:"Successfully subscribed!"}};var j="Waitlist service is not configured. Please try again later.",C="Failed to join waitlist. Please try again later or contact us directly.",H=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let i=m();if(!i.ok||!i.config)return{success:!1,text:i.errorMessage??j};let o=`
74
+ `;if(!(await n(i.config,{to:[i.config.teamInbox],subject:`New Newsletter Subscription: ${t}`,text:c,html:p,context:"newsletter-team-notification"})).success)return{success:!1,text:E};return{success:!0,text:"Successfully subscribed!"}};var D="Waitlist service is not configured. Please try again later.",C="Failed to join waitlist. Please try again later or contact us directly.",G=async(e)=>{let t=(e.get("email")??"").toString().trim();if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};let i=m();if(!i.ok||!i.config)return{success:!1,text:i.errorMessage??D};let o=`
75
75
  You're on the waitlist!
76
76
 
77
77
  Thanks for joining the ContractSpec waitlist. You're now in line for early access to:
@@ -125,7 +125,7 @@ To remove yourself from the waitlist, reply to this email with "remove"
125
125
  <p style="margin: 0 0 8px;">New waitlist signup</p>
126
126
  <p style="margin: 0;"><strong>Email:</strong> ${r(t)}</p>
127
127
  </div>
128
- `;if(!(await n(i.config,{to:[i.config.teamInbox],subject:`New Waitlist Signup: ${t}`,text:c,html:p,context:"waitlist-team-notification"})).success)return{success:!1,text:C};return{success:!0,text:"Successfully joined waitlist!"}};var z="Waitlist application service is not configured. Please try again later.",v="Failed to submit application. Please try again later or contact us directly.",D=async(e)=>{let t=(e.get("email")??"").toString().trim(),i=(e.get("name")??"").toString().trim(),o=(e.get("company")??"").toString().trim(),s=(e.get("role")??"").toString().trim(),l=(e.get("whatBuilding")??"").toString().trim(),c=(e.get("whatSolving")??"").toString().trim(),p=(e.get("teamSize")??"").toString().trim(),f=(e.get("timeline")??"").toString().trim(),h=e.get("openToSessions")==="on",x=e.get("okayWithCaseStudies")==="on";if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};if(!i||!l||!c)return{success:!1,text:"Please fill in all required fields."};let u=m();if(!u.ok||!u.config)return{success:!1,text:u.errorMessage??z};let A=`
128
+ `;if(!(await n(i.config,{to:[i.config.teamInbox],subject:`New Waitlist Signup: ${t}`,text:c,html:p,context:"waitlist-team-notification"})).success)return{success:!1,text:C};return{success:!0,text:"Successfully joined waitlist!"}};var K="Waitlist application service is not configured. Please try again later.",v="Failed to submit application. Please try again later or contact us directly.",U=async(e)=>{let t=(e.get("email")??"").toString().trim(),i=(e.get("name")??"").toString().trim(),o=(e.get("company")??"").toString().trim(),s=(e.get("role")??"").toString().trim(),l=(e.get("whatBuilding")??"").toString().trim(),c=(e.get("whatSolving")??"").toString().trim(),p=(e.get("teamSize")??"").toString().trim(),f=(e.get("timeline")??"").toString().trim(),h=e.get("openToSessions")==="on",x=e.get("okayWithCaseStudies")==="on";if(!t||!t.includes("@"))return{success:!1,text:"Please enter a valid email address."};if(!i||!l||!c)return{success:!1,text:"Please fill in all required fields."};let u=m();if(!u.ok||!u.config)return{success:!1,text:u.errorMessage??K};let A=`
129
129
  You're on the list.
130
130
 
131
131
  Thanks for applying to the ContractSpec design partner program. We're slowly onboarding design partners in waves. If your use case is a good fit, we'll reach out personally.
@@ -223,4 +223,4 @@ Submitted via ContractSpec waitlist application form
223
223
  </div>
224
224
  <p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec waitlist application form</p>
225
225
  </div>
226
- `;if(!(await n(u.config,{to:[u.config.teamInbox],subject:`New Design Partner Application: ${i} (${t})`,text:T,html:R,replyTo:t,context:"waitlist-application-team-notification"})).success)return{success:!1,text:v};return{success:!0,text:"Application submitted successfully!"}};export{L as subscribeToNewsletter,D as submitWaitlistApplication,O as submitContactForm,H as joinWaitlist};
226
+ `;if(!(await n(u.config,{to:[u.config.teamInbox],subject:`New Design Partner Application: ${i} (${t})`,text:T,html:R,replyTo:t,context:"waitlist-application-team-notification"})).success)return{success:!1,text:v};return{success:!0,text:"Application submitted successfully!"}};export{z as subscribeToNewsletter,U as submitWaitlistApplication,j as submitContactForm,G as joinWaitlist};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import s from"posthog-js";var p={CTA_INSTALL_CLICK:"cta_install_click",CTA_STUDIO_CLICK:"cta_studio_click",DOCS_QUICKSTART_VIEW:"docs_quickstart_view",COPY_COMMAND_CLICK:"copy_command_click",EXAMPLE_REPO_OPEN:"example_repo_open"},n=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,c=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com",a=()=>{if(typeof window>"u")return!1;let t=window.navigator,o=window,e=t.doNotTrack??t.msDoNotTrack??o.doNotTrack;return e!=="1"&&e!=="yes"};function _(){if(typeof window>"u")return;if(!n){console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");return}if(!a())return;let t=!1;s.init(n,{api_host:c,autocapture:!t,capture_dead_clicks:!t,capture_performance:!t,capture_pageview:!t,capture_heatmaps:!t,capture_exceptions:!t,debug:!1})}function u(t,o){if(!n)return;if(!a())return;try{(globalThis.posthog??s)?.capture?.(t,o)}catch{return}}var l=s;export{n as posthogKey,c as posthogHost,s as posthog,_ as initPosthog,l as default,u as captureAnalyticsEvent,p as analyticsEventNames};
2
+ var c=Object.defineProperty;var r=(t)=>t;function i(t,o){this[t]=r.bind(null,o)}var u=(t,o)=>{for(var e in o)c(t,e,{get:o[e],enumerable:!0,configurable:!0,set:i.bind(o,e)})};var d=(t,o)=>()=>(t&&(o=t(t=0)),o);import s from"posthog-js";var N={CTA_INSTALL_CLICK:"cta_install_click",CTA_STUDIO_CLICK:"cta_studio_click",DOCS_QUICKSTART_VIEW:"docs_quickstart_view",COPY_COMMAND_CLICK:"copy_command_click",EXAMPLE_REPO_OPEN:"example_repo_open"},n=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,p=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com",a=()=>{if(typeof window>"u")return!1;let t=window.navigator,o=window,e=t.doNotTrack??t.msDoNotTrack??o.doNotTrack;return e!=="1"&&e!=="yes"};function T(){if(typeof window>"u")return;if(!n){console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");return}if(!a())return;let t=!1;s.init(n,{api_host:p,autocapture:!t,capture_dead_clicks:!t,capture_performance:!t,capture_pageview:!t,capture_heatmaps:!t,capture_exceptions:!t,debug:!1})}function C(t,o){if(!n)return;if(!a())return;try{(globalThis.posthog??s)?.capture?.(t,o)}catch{return}}var f=s;export{n as posthogKey,p as posthogHost,s as posthog,T as initPosthog,f as default,C as captureAnalyticsEvent,N as analyticsEventNames};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{PostHog as k}from"posthog-react-native";var z=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,A=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com";function q(){let f=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,j=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com";if(!f)throw console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing"),Error("NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");return new k(f,{host:j})}var B=q();export{z as posthogKey,A as posthogHost,B as posthog,q as initPosthog};
2
+ var q=Object.defineProperty;var w=(f)=>f;function x(f,j){this[f]=w.bind(null,j)}var B=(f,j)=>{for(var k in j)q(f,k,{get:j[k],enumerable:!0,configurable:!0,set:x.bind(j,k)})};var C=(f,j)=>()=>(f&&(j=f(f=0)),j);import{PostHog as z}from"posthog-react-native";var I=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,J=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com";function A(){let f=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,j=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com";if(!f)throw console.warn("[PostHog] NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing"),Error("NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY is missing");return new z(f,{host:j})}var L=A();export{I as posthogKey,J as posthogHost,L as posthog,A as initPosthog};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{PostHog as t}from"posthog-node";var o=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,s=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com",e=o?new t(o,{host:s,flushAt:1,flushInterval:0}):null,n=e;export{n as default};
2
+ var p=Object.defineProperty;var r=(o)=>o;function n(o,t){this[o]=r.bind(null,t)}var g=(o,t)=>{for(var s in t)p(o,s,{get:t[s],enumerable:!0,configurable:!0,set:n.bind(t,s)})};var H=(o,t)=>()=>(o&&(t=o(o=0)),t);import{PostHog as h}from"posthog-node";var e=process.env.NEXT_PUBLIC_CONTRACTSPEC_POSTHOG_KEY,P=process.env.NEXT_PUBLIC_POSTHOG_HOST||"https://eu.posthog.com",c=e?new h(e,{host:P,flushAt:1,flushInterval:0}):null,O=c;export{O as default};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var e={free:{regenerationsPerMonth:200,aiActionsPerMonth:100,projects:1},builder:{regenerationsPerMonthHint:"1,000\u20132,000+",aiActionsPerMonthHint:"1,000+"},team:{description:"Higher limits + cheaper per-regen at scale"}};export{e as PRICING_EXAMPLES};
2
+ var t=Object.defineProperty;var a=(e)=>e;function i(e,n){this[e]=a.bind(null,n)}var s=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0,configurable:!0,set:i.bind(n,r)})};var o=(e,n)=>()=>(e&&(n=e(e=0)),n);var p={free:{regenerationsPerMonth:200,aiActionsPerMonth:100,projects:1},builder:{regenerationsPerMonthHint:"1,000\u20132,000+",aiActionsPerMonthHint:"1,000+"},team:{description:"Higher limits + cheaper per-regen at scale"}};export{p as PRICING_EXAMPLES};
@@ -1 +1 @@
1
- import{EmbeddingService as y,VectorIndexer as z}from"@contractspec/lib.knowledge/ingestion";import{ContextSnapshotPipeline as A,PostgresContextStorage as B}from"@contractspec/module.context-storage";function H(f){let j=new B({database:f.database,schema:f.schema,createTablesIfMissing:f.createTablesIfMissing}),k=f.embeddingProvider?new y(f.embeddingProvider,f.embeddingBatchSize):void 0,q=f.vectorStoreProvider&&f.vectorIndex?new z(f.vectorStoreProvider,f.vectorIndex):void 0,w=new A({store:j,documentProcessor:f.documentProcessor,embeddingService:k,vectorIndexer:q});return{store:j,pipeline:w}}export{H as createContextStorageService};
1
+ var y=Object.defineProperty;var z=(f)=>f;function A(f,j){this[f]=z.bind(null,j)}var H=(f,j)=>{for(var k in j)y(f,k,{get:j[k],enumerable:!0,configurable:!0,set:A.bind(j,k)})};var J=(f,j)=>()=>(f&&(j=f(f=0)),j);import{EmbeddingService as B,VectorIndexer as D}from"@contractspec/lib.knowledge/ingestion";import{ContextSnapshotPipeline as F,PostgresContextStorage as G}from"@contractspec/module.context-storage";function O(f){let j=new G({database:f.database,schema:f.schema,createTablesIfMissing:f.createTablesIfMissing}),k=f.embeddingProvider?new B(f.embeddingProvider,f.embeddingBatchSize):void 0,q=f.vectorStoreProvider&&f.vectorIndex?new D(f.vectorStoreProvider,f.vectorIndex):void 0,w=new F({store:j,documentProcessor:f.documentProcessor,embeddingService:k,vectorIndexer:q});return{store:j,pipeline:w}}export{O as createContextStorageService};
@@ -1,4 +1,4 @@
1
- import{EmbeddingService as LY,VectorIndexer as qY}from"@contractspec/lib.knowledge/ingestion";import{ContextSnapshotPipeline as _Y,PostgresContextStorage as MY}from"@contractspec/module.context-storage";function yJ(j){let Y=new MY({database:j.database,schema:j.schema,createTablesIfMissing:j.createTablesIfMissing}),J=j.embeddingProvider?new LY(j.embeddingProvider,j.embeddingBatchSize):void 0,Q=j.vectorStoreProvider&&j.vectorIndex?new qY(j.vectorStoreProvider,j.vectorIndex):void 0,$=new _Y({store:Y,documentProcessor:j.documentProcessor,embeddingService:J,vectorIndexer:Q});return{store:Y,pipeline:$}}import{Logger as Dj,LogLevel as Cj}from"@contractspec/lib.logger";function Aj(){return"production"}var bY=()=>new Dj({level:Cj.INFO,environment:Aj(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),D=bY(),uJ=new Dj({level:Cj.WARN,environment:Aj(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),dJ=new Dj({level:Cj.INFO,environment:Aj(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});import{createNodeAdapters as GY,onboarding as Ej}from"@contractspec/bundle.workspace";import{defineCommand as Nj,definePrompt as DY,defineResourceTemplate as Ij,installOp as zj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as o,ScalarTypeEnum as q}from"@contractspec/lib.schema";import C from"zod";var E=["cli","mcp","onboarding"],Zj=["@contractspec"];function CY(j){return j?.split(",").map((Y)=>Y.trim()).filter(Boolean)}async function $j(j={}){let Y=GY({cwd:process.cwd(),silent:!0});return Ej.buildOnboardingPlan(Y,{forcedExampleKey:j.example,selectedTracks:CY(j.tracks)})}function pj(j){j.register(Ij({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:E},input:C.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(Ej.listOnboardingTracks(),null,2)})})),j.register(Ij({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:E},input:C.object({id:C.string()}),resolve:async({id:Y})=>({uri:`onboarding://track/${Y}`,mimeType:"application/json",data:JSON.stringify(Ej.getOnboardingTrack(Y)??null,null,2)})})),j.register(Ij({meta:{uriTemplate:"onboarding://artifacts/{id}{?tracks,example}",title:"Rendered onboarding artifact",description:"Render AGENTS.md or USAGE.md content for the current repo.",mimeType:"text/markdown",tags:E},input:C.object({example:C.string().optional(),id:C.enum(["agent-guide","human-guide"]),tracks:C.string().optional()}),resolve:async({example:Y,id:J,tracks:Q})=>{let $=await $j({example:Y,tracks:Q});return{uri:`onboarding://artifacts/${J}`,mimeType:"text/markdown",data:J==="agent-guide"?$.guides.agentGuide:$.guides.humanGuide}}}))}function lj(j){j.register(DY({meta:{key:"cli.onboarding",version:"1.0.0",title:"Plan a ContractSpec onboarding flow",description:"Suggest the right onboarding track and artifacts for a repo.",tags:E,stability:"beta",owners:Zj},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:C.string().optional()}],input:C.object({goal:C.string().optional()}),render:async({goal:Y})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${Y?` Goal: ${Y}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function nj(j){let Y=o({name:"OnboardingSuggestTracksInput",fields:{example:{type:q.String_unsecure(),isOptional:!0},tracks:{type:q.String_unsecure(),isOptional:!0}}}),J=o({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:q.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:q.String_unsecure(),isOptional:!1},reason:{type:q.String_unsecure(),isOptional:!1},tracks:{type:q.String_unsecure(),isArray:!0,isOptional:!1}}}),Q=o({name:"OnboardingRenderArtifactOutput",fields:{content:{type:q.String_unsecure(),isOptional:!1},primaryTrack:{type:q.String_unsecure(),isOptional:!1}}}),$=o({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:q.String_unsecure(),isOptional:!1},primaryTrack:{type:q.String_unsecure(),isOptional:!1}}});zj(j,Nj({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:Zj,tags:E,description:"Suggest the recommended ContractSpec onboarding tracks.",goal:"Help agents choose the right onboarding track before editing repo-local guides.",context:"Used inside the CLI MCP server."},io:{input:Y,output:J},policy:{auth:"anonymous"}}),async({example:Z,tracks:X})=>{let U=await $j({example:Z,tracks:X});return{nextCommands:U.nextCommands,primaryTrack:U.primaryTrack.id,reason:U.recommendations[0]?.reason??U.primaryTrack.summary,tracks:U.recommendations.map((V)=>V.track.id)}}),zj(j,Nj({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:Zj,tags:E,description:"Render onboarding artifacts for the current repo.",goal:"Provide AGENTS.md or USAGE.md content without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:o({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:q.String_unsecure(),isOptional:!1},example:{type:q.String_unsecure(),isOptional:!0},tracks:{type:q.String_unsecure(),isOptional:!0}}}),output:Q},policy:{auth:"anonymous"}}),async({artifact:Z,example:X,tracks:U})=>{let V=await $j({example:X,tracks:U});return{content:Z==="agent-guide"?V.guides.agentGuide:V.guides.humanGuide,primaryTrack:V.primaryTrack.id}}),zj(j,Nj({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:Zj,tags:E,description:"Return the next recommended CLI command for onboarding.",goal:"Help agents choose the next onboarding command without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:Y,output:$},policy:{auth:"anonymous"}}),async({example:Z,tracks:X})=>{let U=await $j({example:Z,tracks:X});return{nextCommand:U.nextCommands[0]??"contractspec onboard",primaryTrack:U.primaryTrack.id}})}var cj=["application/json","text/event-stream"];function AY(j){return!j||j.includes("*/*")||j.includes("application/*")||cj.some((Y)=>j.includes(Y))}function kj(j){if(j.method!=="POST")return j;let Y=j.headers.get("accept");if(!AY(Y))return j;let J=cj.filter(($)=>!Y?.includes($));if(J.length===0)return j;let Q=new Headers(j.headers);return Q.set("accept",[Y,...J].filter(Boolean).join(", ")),new Request(j,{headers:Q})}import{createMcpServer as NY}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as IY}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as zY}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as EY}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as kY}from"crypto";import{Elysia as vY}from"elysia";var OY={actor:"anonymous",decide:async()=>({effect:"allow"})};function vj(j,Y,J,Q){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:Y,message:J,...Q?{data:Q}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function ij({logger:j,serverName:Y,ops:J,resources:Q,prompts:$,presentations:Z,stateful:X}){let U=new zY({name:Y,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),NY(U,J,Q,$,{logger:j,toolCtx:()=>OY,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new IY(Z)});let V=new EY({sessionIdGenerator:X?()=>kY():void 0,enableJsonResponse:!0});return U.connect(V).then(()=>({server:U,transport:V}))}async function Xj(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function RY(j){return j instanceof Error?j.stack??j.message:String(j)}function A({logger:j,path:Y,serverName:J,ops:Q,resources:$,prompts:Z,presentations:X,validateAuth:U,requiredAuthMethods:V}){j.info("Setting up MCP handler...",{requiredAuthMethods:V??[]});let B=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",H=new Map;async function K(W){let x=await ij({logger:j,path:Y,serverName:J,ops:Q,resources:$,prompts:Z,presentations:X,stateful:!1});try{return await x.transport.handleRequest(kj(W))}finally{await Xj(x)}}async function P(W){let x=H.get(W);if(!x)return;H.delete(W),await Xj(x)}async function Gj(W){let x=W.headers.get("mcp-session-id"),I,i=!1;if(x){let z=H.get(x);if(!z)return vj(404,-32001,"Session not found");I=z}else I=await ij({logger:j,path:Y,serverName:J,ops:Q,resources:$,prompts:Z,presentations:X,stateful:!0}),i=!0;try{let z=await I.transport.handleRequest(kj(W)),h=I.transport.sessionId;if(h&&!H.has(h))H.set(h,I);if(W.method==="DELETE"&&h)await P(h);else if(!h&&i)await Xj(I);return z}catch(z){if(i)await Xj(I);throw z}}return new vY({name:`mcp-${J}`}).all(Y,async({request:W})=>{try{if(U){let x=await U(W);if(!x.valid)return vj(401,-32002,"Authentication failed",x.reason)}if(B)return await Gj(W);return await K(W)}catch(x){return j.error("Error handling MCP request",{path:Y,method:W.method,error:RY(x)}),vj(500,-32000,"Internal error")}})}import hY from"node:fs/promises";import{defineCommand as TY,definePrompt as fY,defineResourceTemplate as oj,installOp as SY,OperationSpecRegistry as yY,PromptRegistry as mY,ResourceRegistry as gY}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as aj,ScalarTypeEnum as a}from"@contractspec/lib.schema";import t from"path";import T from"zod";var __dirname="/home/runner/work/contractspec/contractspec/packages/bundles/library/src/application/mcp",uY={quickstart:"packages/apps/cli-contractspec/QUICK_START.md",reference:"packages/apps/cli-contractspec/QUICK_REFERENCE.md",readme:"packages/apps/cli-contractspec/README.md"},dY={quickstart:`# ContractSpec CLI quickstart
1
+ var LY=Object.defineProperty;var qY=(j)=>j;function _Y(j,Y){this[j]=qY.bind(null,Y)}var yJ=(j,Y)=>{for(var J in Y)LY(j,J,{get:Y[J],enumerable:!0,configurable:!0,set:_Y.bind(Y,J)})};var mJ=(j,Y)=>()=>(j&&(Y=j(j=0)),Y);import{EmbeddingService as MY,VectorIndexer as bY}from"@contractspec/lib.knowledge/ingestion";import{ContextSnapshotPipeline as GY,PostgresContextStorage as DY}from"@contractspec/module.context-storage";function lJ(j){let Y=new DY({database:j.database,schema:j.schema,createTablesIfMissing:j.createTablesIfMissing}),J=j.embeddingProvider?new MY(j.embeddingProvider,j.embeddingBatchSize):void 0,Q=j.vectorStoreProvider&&j.vectorIndex?new bY(j.vectorStoreProvider,j.vectorIndex):void 0,$=new GY({store:Y,documentProcessor:j.documentProcessor,embeddingService:J,vectorIndexer:Q});return{store:Y,pipeline:$}}import{Logger as Dj,LogLevel as Cj}from"@contractspec/lib.logger";function Aj(){return"production"}var CY=()=>new Dj({level:Cj.INFO,environment:Aj(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),D=CY(),iJ=new Dj({level:Cj.WARN,environment:Aj(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),oJ=new Dj({level:Cj.INFO,environment:Aj(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});import{createNodeAdapters as AY,onboarding as Ej}from"@contractspec/bundle.workspace";import{defineCommand as Nj,definePrompt as NY,defineResourceTemplate as Ij,installOp as zj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as o,ScalarTypeEnum as q}from"@contractspec/lib.schema";import C from"zod";var E=["cli","mcp","onboarding"],Zj=["@contractspec"];function IY(j){return j?.split(",").map((Y)=>Y.trim()).filter(Boolean)}async function $j(j={}){let Y=AY({cwd:process.cwd(),silent:!0});return Ej.buildOnboardingPlan(Y,{forcedExampleKey:j.example,selectedTracks:IY(j.tracks)})}function pj(j){j.register(Ij({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:E},input:C.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(Ej.listOnboardingTracks(),null,2)})})),j.register(Ij({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:E},input:C.object({id:C.string()}),resolve:async({id:Y})=>({uri:`onboarding://track/${Y}`,mimeType:"application/json",data:JSON.stringify(Ej.getOnboardingTrack(Y)??null,null,2)})})),j.register(Ij({meta:{uriTemplate:"onboarding://artifacts/{id}{?tracks,example}",title:"Rendered onboarding artifact",description:"Render AGENTS.md or USAGE.md content for the current repo.",mimeType:"text/markdown",tags:E},input:C.object({example:C.string().optional(),id:C.enum(["agent-guide","human-guide"]),tracks:C.string().optional()}),resolve:async({example:Y,id:J,tracks:Q})=>{let $=await $j({example:Y,tracks:Q});return{uri:`onboarding://artifacts/${J}`,mimeType:"text/markdown",data:J==="agent-guide"?$.guides.agentGuide:$.guides.humanGuide}}}))}function lj(j){j.register(NY({meta:{key:"cli.onboarding",version:"1.0.0",title:"Plan a ContractSpec onboarding flow",description:"Suggest the right onboarding track and artifacts for a repo.",tags:E,stability:"beta",owners:Zj},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:C.string().optional()}],input:C.object({goal:C.string().optional()}),render:async({goal:Y})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${Y?` Goal: ${Y}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function nj(j){let Y=o({name:"OnboardingSuggestTracksInput",fields:{example:{type:q.String_unsecure(),isOptional:!0},tracks:{type:q.String_unsecure(),isOptional:!0}}}),J=o({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:q.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:q.String_unsecure(),isOptional:!1},reason:{type:q.String_unsecure(),isOptional:!1},tracks:{type:q.String_unsecure(),isArray:!0,isOptional:!1}}}),Q=o({name:"OnboardingRenderArtifactOutput",fields:{content:{type:q.String_unsecure(),isOptional:!1},primaryTrack:{type:q.String_unsecure(),isOptional:!1}}}),$=o({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:q.String_unsecure(),isOptional:!1},primaryTrack:{type:q.String_unsecure(),isOptional:!1}}});zj(j,Nj({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:Zj,tags:E,description:"Suggest the recommended ContractSpec onboarding tracks.",goal:"Help agents choose the right onboarding track before editing repo-local guides.",context:"Used inside the CLI MCP server."},io:{input:Y,output:J},policy:{auth:"anonymous"}}),async({example:Z,tracks:X})=>{let U=await $j({example:Z,tracks:X});return{nextCommands:U.nextCommands,primaryTrack:U.primaryTrack.id,reason:U.recommendations[0]?.reason??U.primaryTrack.summary,tracks:U.recommendations.map((V)=>V.track.id)}}),zj(j,Nj({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:Zj,tags:E,description:"Render onboarding artifacts for the current repo.",goal:"Provide AGENTS.md or USAGE.md content without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:o({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:q.String_unsecure(),isOptional:!1},example:{type:q.String_unsecure(),isOptional:!0},tracks:{type:q.String_unsecure(),isOptional:!0}}}),output:Q},policy:{auth:"anonymous"}}),async({artifact:Z,example:X,tracks:U})=>{let V=await $j({example:X,tracks:U});return{content:Z==="agent-guide"?V.guides.agentGuide:V.guides.humanGuide,primaryTrack:V.primaryTrack.id}}),zj(j,Nj({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:Zj,tags:E,description:"Return the next recommended CLI command for onboarding.",goal:"Help agents choose the next onboarding command without mutating the repo.",context:"Used inside the CLI MCP server."},io:{input:Y,output:$},policy:{auth:"anonymous"}}),async({example:Z,tracks:X})=>{let U=await $j({example:Z,tracks:X});return{nextCommand:U.nextCommands[0]??"contractspec onboard",primaryTrack:U.primaryTrack.id}})}var cj=["application/json","text/event-stream"];function zY(j){return!j||j.includes("*/*")||j.includes("application/*")||cj.some((Y)=>j.includes(Y))}function kj(j){if(j.method!=="POST")return j;let Y=j.headers.get("accept");if(!zY(Y))return j;let J=cj.filter(($)=>!Y?.includes($));if(J.length===0)return j;let Q=new Headers(j.headers);return Q.set("accept",[Y,...J].filter(Boolean).join(", ")),new Request(j,{headers:Q})}import{createMcpServer as EY}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as kY}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as vY}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as OY}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as RY}from"crypto";import{Elysia as hY}from"elysia";var TY={actor:"anonymous",decide:async()=>({effect:"allow"})};function vj(j,Y,J,Q){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:Y,message:J,...Q?{data:Q}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function ij({logger:j,serverName:Y,ops:J,resources:Q,prompts:$,presentations:Z,stateful:X}){let U=new vY({name:Y,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),EY(U,J,Q,$,{logger:j,toolCtx:()=>TY,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new kY(Z)});let V=new OY({sessionIdGenerator:X?()=>RY():void 0,enableJsonResponse:!0});return U.connect(V).then(()=>({server:U,transport:V}))}async function Xj(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function fY(j){return j instanceof Error?j.stack??j.message:String(j)}function A({logger:j,path:Y,serverName:J,ops:Q,resources:$,prompts:Z,presentations:X,validateAuth:U,requiredAuthMethods:V}){j.info("Setting up MCP handler...",{requiredAuthMethods:V??[]});let B=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",H=new Map;async function K(W){let x=await ij({logger:j,path:Y,serverName:J,ops:Q,resources:$,prompts:Z,presentations:X,stateful:!1});try{return await x.transport.handleRequest(kj(W))}finally{await Xj(x)}}async function P(W){let x=H.get(W);if(!x)return;H.delete(W),await Xj(x)}async function Gj(W){let x=W.headers.get("mcp-session-id"),I,i=!1;if(x){let z=H.get(x);if(!z)return vj(404,-32001,"Session not found");I=z}else I=await ij({logger:j,path:Y,serverName:J,ops:Q,resources:$,prompts:Z,presentations:X,stateful:!0}),i=!0;try{let z=await I.transport.handleRequest(kj(W)),h=I.transport.sessionId;if(h&&!H.has(h))H.set(h,I);if(W.method==="DELETE"&&h)await P(h);else if(!h&&i)await Xj(I);return z}catch(z){if(i)await Xj(I);throw z}}return new hY({name:`mcp-${J}`}).all(Y,async({request:W})=>{try{if(U){let x=await U(W);if(!x.valid)return vj(401,-32002,"Authentication failed",x.reason)}if(B)return await Gj(W);return await K(W)}catch(x){return j.error("Error handling MCP request",{path:Y,method:W.method,error:fY(x)}),vj(500,-32000,"Internal error")}})}import SY from"node:fs/promises";import{defineCommand as yY,definePrompt as mY,defineResourceTemplate as oj,installOp as gY,OperationSpecRegistry as uY,PromptRegistry as dY,ResourceRegistry as pY}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as aj,ScalarTypeEnum as a}from"@contractspec/lib.schema";import t from"path";import T from"zod";var __dirname="/home/runner/work/contractspec/contractspec/packages/bundles/library/src/application/mcp",lY={quickstart:"packages/apps/cli-contractspec/QUICK_START.md",reference:"packages/apps/cli-contractspec/QUICK_REFERENCE.md",readme:"packages/apps/cli-contractspec/README.md"},nY={quickstart:`# ContractSpec CLI quickstart
2
2
 
3
3
  contractspec quickstart
4
4
  contractspec onboard
@@ -6,11 +6,11 @@ contractspec validate`,reference:`# ContractSpec CLI reference
6
6
 
7
7
  Key commands: onboard, create, generate, validate. See README for full options.`,readme:`# ContractSpec CLI
8
8
 
9
- Stabilize AI-generated code across API, DB, UI, events. Use onboard/create/generate/validate commands.`},Vj=["cli","mcp"],tj=["@contractspec"],pY=(()=>{let j=new Set([process.cwd(),t.resolve(process.cwd(),".."),t.resolve(process.cwd(),"../.."),t.resolve(process.cwd(),"../../..")]);if(typeof __dirname==="string")j.add(t.resolve(__dirname,"../../../../.."));return[...j]})(),Uj=new Map;async function lY(j){if(Uj.has(j))return Uj.get(j);let Y=uY[j];for(let Q of pY){let $=t.resolve(Q,Y);try{let Z=await hY.readFile($,"utf8");return Uj.set(j,Z),Z}catch{}}let J=dY[j];return Uj.set(j,J),J}function nY(){let j=new gY;return j.register(oj({meta:{uriTemplate:"cli://doc/{slug}",title:"CLI documentation",description:"Quickstart, reference, and README for the CLI.",mimeType:"text/markdown",tags:Vj},input:T.object({slug:T.enum(["quickstart","reference","readme"])}),resolve:async({slug:Y})=>{let J=await lY(Y);return{uri:`cli://doc/${Y}`,mimeType:"text/markdown",data:J}}})),j.register(oj({meta:{uriTemplate:"cli://commands",title:"CLI commands summary",description:"Key ContractSpec CLI commands and when to use them.",mimeType:"application/json",tags:Vj},input:T.object({}),resolve:async()=>{return{uri:"cli://commands",mimeType:"application/json",data:JSON.stringify([{command:"contractspec onboard",summary:"Generate repo-local AGENTS.md and USAGE.md guidance plus recommended tracks.",doc:"cli://doc/quickstart"},{command:"contractspec create",summary:"Interactive wizard to author specs (with optional AI).",doc:"cli://doc/quickstart"},{command:"contractspec build <specPath>",summary:"Generate implementation code from a ContractSpec (agents + templates).",doc:"cli://doc/reference"},{command:"contractspec validate <specPath>",summary:"Validate specs and optionally check implementations against them.",doc:"cli://doc/reference"}],null,2)}}})),pj(j),j}function cY(){let j=new mY;return j.register(fY({meta:{key:"cli.usage",version:"1.0.0",title:"Use ContractSpec CLI safely",description:"Remind agents to read CLI docs and pick commands from the canonical list.",tags:Vj,stability:"beta",owners:tj},args:[{name:"goal",description:"Task the user wants to achieve.",required:!1,schema:T.string().optional()}],input:T.object({goal:T.string().optional()}),render:async({goal:Y})=>[{type:"text",text:`Use CLI commands only from cli://commands. Prefer quickstart for newcomers and reference for options.${Y?` Goal: ${Y}.`:""}`},{type:"resource",uri:"cli://commands",title:"Commands"},{type:"resource",uri:"cli://doc/quickstart",title:"Quickstart"}]})),lj(j),j}function iY(){let j=new yY,Y=aj({name:"CliSuggestInput",fields:{goal:{type:a.String_unsecure(),isOptional:!1},prefersAi:{type:a.Boolean(),isOptional:!0}}}),J=aj({name:"CliSuggestOutput",fields:{command:{type:a.String_unsecure(),isOptional:!1},docUri:{type:a.String_unsecure(),isOptional:!1},reason:{type:a.String_unsecure(),isOptional:!1}}}),Q=TY({meta:{key:"cli_suggestCommand",version:"1.0.0",stability:"stable",owners:tj,tags:Vj,description:"Recommend a CLI command for the requested goal.",goal:"Help AI agents choose the correct CLI entrypoint quickly.",context:"Used inside the CLI MCP server."},io:{input:Y,output:J},policy:{auth:"anonymous"}});return SY(j,Q,async({goal:$,prefersAi:Z})=>{let X=$.toLowerCase();if(X.includes("onboard")||X.includes("start")||X.includes("guide")||X.includes("install"))return{command:"contractspec onboard",docUri:"cli://doc/quickstart",reason:"Starts the CLI-first onboarding flow for the current repo."};if(X.includes("create")||X.includes("new"))return{command:Z?"contractspec create --ai":"contractspec create",docUri:"cli://doc/quickstart",reason:"Creates a new ContractSpec interactively (optionally with AI)."};if(X.includes("build")||X.includes("generate"))return{command:"contractspec build <path-to-spec>",docUri:"cli://doc/reference",reason:"Builds implementation code from a spec using agents + templates."};if(X.includes("validate")||X.includes("check"))return{command:"contractspec validate <path-to-spec>",docUri:"cli://doc/reference",reason:"Validates a spec and optionally checks its implementation for drift."};return{command:"contractspec --help",docUri:"cli://doc/readme",reason:"Fallback when the goal is unclear; read README for options."}}),nj(j),j}function FQ(j="/api/mcp/cli"){return A({logger:D,path:j,serverName:"contractspec-cli-mcp",ops:iY(),resources:nY(),prompts:cY()})}import{definePrompt as oY,defineResourceTemplate as s,PromptRegistry as aY,ResourceRegistry as tY}from"@contractspec/lib.contracts-spec";import N from"zod";var sY=["@contractspec"],f=["contracts","mcp"];function sj(j){let Y=new tY;return Y.register(s({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:f},input:N.object({}),resolve:async()=>{let J=await j.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),Y.register(s({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:f},input:N.object({path:N.string()}),resolve:async({path:J})=>{let Q=await j.getSpec(J);if(!Q)return{uri:`contracts://spec/${encodeURIComponent(J)}`,mimeType:"text/plain",data:`Spec not found: ${J}`};return{uri:`contracts://spec/${encodeURIComponent(J)}`,mimeType:"text/plain",data:Q.content}}})),Y.register(s({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:f},input:N.object({}),resolve:async()=>{let J=await j.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),Y.register(s({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:f},input:N.object({}),resolve:async()=>{let J=await j.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),Y.register(s({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:f},input:N.object({family:N.string()}),resolve:async({family:J})=>{let Q=await j.resolveAdoption({family:J,query:J});return{uri:`adoption://policy/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(Q,null,2)}}})),Y}function rj(){let j=new aY;return j.register(oY({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:f,stability:"beta",owners:sY},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:N.string().optional()}],input:N.object({goal:N.string().optional()}),render:async({goal:Y})=>[{type:"text",text:["Contract editing workflow:","1. Use contracts.list to discover specs","2. Use contracts.get to read a spec","3. Edit content and call contracts.update","4. Run contracts.validate to verify changes","5. Run contracts.build to regenerate artifacts","6. Use adoption.resolve to prefer existing workspace or ContractSpec surfaces before inventing new ones",Y?`Agent goal: ${Y}`:""].filter(Boolean).join(`
10
- `)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}import{defineCommand as Oj,installOp as Rj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as S,ScalarTypeEnum as b}from"@contractspec/lib.schema";var hj=["@contractspec"],Tj=["contracts","mcp","adoption"];function ej(j,Y){let J=S({name:"AdoptionCatalogSearchInput",fields:{query:{type:b.String_unsecure(),isOptional:!1},family:{type:b.String_unsecure(),isOptional:!0},platform:{type:b.String_unsecure(),isOptional:!0}}}),Q=S({name:"AdoptionCatalogSearchOutput",fields:{results:{type:b.JSON(),isOptional:!1}}});Rj(j,Oj({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:hj,tags:Tj,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:J,output:Q},policy:{auth:"anonymous"}}),async({family:V,platform:B,query:H})=>({results:await Y.searchAdoptionCatalog({family:V,platform:B,query:H})}));let $=S({name:"AdoptionResolveInput",fields:{family:{type:b.String_unsecure(),isOptional:!1},query:{type:b.String_unsecure(),isOptional:!1},paths:{type:b.JSON(),isOptional:!0},platform:{type:b.String_unsecure(),isOptional:!0},runtime:{type:b.String_unsecure(),isOptional:!0}}}),Z=S({name:"AdoptionResolveOutput",fields:{resolution:{type:b.JSON(),isOptional:!1}}});Rj(j,Oj({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:hj,tags:Tj,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:$,output:Z},policy:{auth:"anonymous"}}),async({family:V,paths:B,platform:H,query:K,runtime:P})=>({resolution:await Y.resolveAdoption({family:V,paths:Array.isArray(B)?B:void 0,platform:H,query:K,runtime:P})}));let X=S({name:"AdoptionSyncInput",fields:{}}),U=S({name:"AdoptionSyncOutput",fields:{catalogPath:{type:b.String_unsecure(),isOptional:!1},total:{type:b.Int_unsecure(),isOptional:!1}}});Rj(j,Oj({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:hj,tags:Tj,description:"Mirror the bundled ContractSpec adoption catalog locally.",goal:"Refresh the local adoption catalog used by Connect and MCP.",context:"Contracts MCP server."},io:{input:X,output:U},policy:{auth:"user"}}),async()=>Y.syncAdoptionCatalog())}import{defineCommand as y,installOp as m,OperationSpecRegistry as rY}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as G,ScalarTypeEnum as w}from"@contractspec/lib.schema";var g=["@contractspec"],u=["contracts","mcp"];function jY(j){let Y=new rY,J=G({name:"ContractsListInput",fields:{pattern:{type:w.String_unsecure(),isOptional:!0},type:{type:w.String_unsecure(),isOptional:!0}}}),Q=G({name:"ContractsListOutput",fields:{specs:{type:w.JSON(),isOptional:!1},total:{type:w.Int_unsecure(),isOptional:!1}}});m(Y,y({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:J,output:Q},policy:{auth:"anonymous"}}),async({pattern:H,type:K})=>{let P=await j.listSpecs({pattern:H,type:K});return{specs:P,total:P.length}});let $=G({name:"ContractsGetInput",fields:{path:{type:w.String_unsecure(),isOptional:!1}}}),Z=G({name:"ContractsGetOutput",fields:{content:{type:w.String_unsecure(),isOptional:!1},info:{type:w.JSON(),isOptional:!1}}});m(Y,y({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:$,output:Z},policy:{auth:"anonymous"}}),async({path:H})=>{let K=await j.getSpec(H);if(!K)throw Error(`Spec not found: ${H}`);return K});let X=G({name:"ContractsValidateInput",fields:{path:{type:w.String_unsecure(),isOptional:!1}}}),U=G({name:"ContractsValidateOutput",fields:{valid:{type:w.Boolean(),isOptional:!1},errors:{type:w.JSON(),isOptional:!1},warnings:{type:w.JSON(),isOptional:!1}}});m(Y,y({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:X,output:U},policy:{auth:"anonymous"}}),async({path:H})=>j.validateSpec(H));let V=G({name:"ContractsBuildInput",fields:{path:{type:w.String_unsecure(),isOptional:!1},dryRun:{type:w.Boolean(),isOptional:!0}}}),B=G({name:"ContractsBuildOutput",fields:{results:{type:w.JSON(),isOptional:!1}}});return m(Y,y({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:V,output:B},policy:{auth:"user"}}),async({path:H,dryRun:K})=>j.buildSpec(H,{dryRun:K})),eY(Y,j),ej(Y,j),Y}function eY(j,Y){let J=G({name:"ContractsUpdateInput",fields:{path:{type:w.String_unsecure(),isOptional:!1},content:{type:w.String_unsecure(),isOptional:!0},fields:{type:w.JSON(),isOptional:!0}}}),Q=G({name:"ContractsUpdateOutput",fields:{updated:{type:w.Boolean(),isOptional:!1},errors:{type:w.JSON(),isOptional:!1},warnings:{type:w.JSON(),isOptional:!1}}});m(j,y({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:J,output:Q},policy:{auth:"user"}}),async({path:X,content:U,fields:V})=>Y.updateSpec(X,{content:U,fields:Array.isArray(V)?V:void 0}));let $=G({name:"ContractsDeleteInput",fields:{path:{type:w.String_unsecure(),isOptional:!1},clean:{type:w.Boolean(),isOptional:!0}}}),Z=G({name:"ContractsDeleteOutput",fields:{deleted:{type:w.Boolean(),isOptional:!1},cleanedFiles:{type:w.JSON(),isOptional:!1},errors:{type:w.JSON(),isOptional:!1}}});m(j,y({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Delete a contract spec and optionally its artifacts.",goal:"Remove a spec file and clean generated handlers/tests.",context:"Contracts MCP server."},io:{input:$,output:Z},policy:{auth:"user"}}),async({path:X,clean:U})=>Y.deleteSpec(X,{clean:U}))}function zQ(j="/api/mcp/contracts",Y){return A({logger:D,path:j,serverName:"contractspec-contracts-mcp",ops:jY(Y),resources:sj(Y),prompts:rj()})}import{defaultDocRegistry as j0}from"@contractspec/lib.contracts-spec/docs";var Y0=20,J0=100;function _(j){return j?.trim().toLowerCase()??""}function YY(j){let Y=decodeURIComponent(j).trim();if(!Y)return"/";return Y.startsWith("/")?Y:`/${Y}`}function Q0(j){return(Array.isArray(j)?j:j?[j]:[]).map((J)=>_(J)).filter(Boolean)}function Z0(j){if(!j||Number.isNaN(j))return Y0;return Math.min(Math.max(j,1),J0)}function $0(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function fj({block:j,route:Y}){return{id:j.id,title:j.title,summary:j.summary??"",route:Y,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function X0(j,Y){if(!Y)return 1;let J=Y.split(/\s+/).filter(Boolean),Q=_(j.block.title),$=_(j.block.id),Z=_(j.block.summary),X=_(j.block.body),U=_(j.route),V=(j.block.tags??[]).map((K)=>_(K)),B=[Q,$,Z,X,U,...V].join(" ");if(J.some((K)=>!B.includes(K)))return 0;let H=0;for(let K of J){if($.includes(K))H+=8;if(Q.includes(K))H+=7;if(V.some((P)=>P.includes(K)))H+=5;if(Z.includes(K))H+=4;if(U.includes(K))H+=3;if(X.includes(K))H+=2}return H}function d(j,Y){let J=_(typeof Y.query==="string"?Y.query:void 0),Q=Q0(Y.tag),$=_(typeof Y.visibility==="string"?Y.visibility:void 0),Z=_(typeof Y.kind==="string"?Y.kind:void 0),X=Z0(typeof Y.limit==="number"?Y.limit:void 0),U=$0(typeof Y.offset==="number"?Y.offset:void 0),V=j.map((K)=>({doc:fj(K),score:X0(K,J)})).filter(({doc:K,score:P})=>{let Gj=J?P>0:!0,W=Q.length?Q.every((i)=>K.tags.some((z)=>_(z).includes(i))):!0,x=$?_(K.visibility)===$:!0,I=Z?_(K.kind)===Z:!0;return Gj&&W&&x&&I}).sort((K,P)=>{if(P.score!==K.score)return P.score-K.score;return K.doc.title.localeCompare(P.doc.title)}),B=V.slice(U,U+X).map(({doc:K})=>K),H=U+B.length<V.length?U+B.length:void 0;return{docs:B,items:B,total:V.length,...H!=null?{nextOffset:H}:{}}}function Hj(j){let Y=decodeURIComponent(j),J=j0.get(Y);if(!J)return;return{doc:fj(J),content:String(J.block.body??"")}}function Kj(j,Y){let J=YY(Y),Q=j.find(($)=>YY($.route)===J);if(!Q)return;return{doc:fj(Q),content:String(Q.block.body??"")}}function wj(j){let Y=new Map,J=new Map,Q=new Map;for(let Z of j){let X=Z.block.kind??"reference",U=Z.block.visibility??"public";J.set(X,(J.get(X)??0)+1),Q.set(U,(Q.get(U)??0)+1);for(let V of Z.block.tags??[])Y.set(V,(Y.get(V)??0)+1)}let $=(Z,X)=>[...Z.entries()].sort((U,V)=>V[1]-U[1]||U[0].localeCompare(V[0])).map(([U,V])=>({[X]:U,count:V}));return{totalDocs:j.length,tags:$(Y,"tag"),kinds:$(J,"kind"),visibilities:$(Q,"visibility")}}import{EventRegistry as U0,OperationSpecRegistry as V0}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as H0}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as K0,ContractReferenceQuery as w0,DocsGenerateCommand as F0,DocsGeneratedEvent as B0,DocsIndexDataView as W0,DocsIndexQuery as x0,DocsLayoutPresentation as P0,DocsPublishCommand as L0,DocsPublishedEvent as q0,DocsReferencePagePresentation as _0,DocsSearchForm as M0,ExampleCatalogDataView as b0}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as G0}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as D0}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as C0,serializeEventSpec as A0,serializeFormSpec as N0,serializeOperationSpec as I0,serializePresentationSpec as z0}from"@contractspec/lib.contracts-spec/serialization";var Fj=null;function E0(){let j=new V0;return j.register(x0).register(w0).register(F0).register(L0),j}function k0(){if(!Fj)Fj=E0();return Fj}function Sj(j,Y){return k0().get(j,Y)}var Bj=null;function v0(){let j=new U0;return j.register(B0).register(q0),j}function O0(){if(!Bj)Bj=v0();return Bj}function yj(j,Y){return O0().get(j,Y)}var Wj=null;function R0(){let j=new D0;return j.register(P0).register(_0),j}function h0(){if(!Wj)Wj=R0();return Wj}function mj(j,Y){return h0().get(j,Y)}var xj=null;function T0(){let j=new H0;return j.register(W0).register(K0).register(b0),j}function f0(){if(!xj)xj=T0();return xj}function gj(j,Y){return f0().get(j,Y)}var Pj=null;function S0(){let j=new G0;return j.register(M0),j}function y0(){if(!Pj)Pj=S0();return Pj}function uj(j,Y){return y0().get(j)}function JY(j,Y){let J=Sj(j,Y);return I0(J)??void 0}function QY(j,Y){let J=yj(j,Y);return A0(J)??void 0}function ZY(j,Y){let J=mj(j,Y);return z0(J)??void 0}function $Y(j,Y){let J=gj(j,Y);return C0(J)??void 0}function XY(j,Y){let J=uj(j,Y);return N0(J)??void 0}function m0(){Fj=null}function g0(){Bj=null}function u0(){Wj=null}function d0(){xj=null}function p0(){Pj=null}function yQ(){m0(),g0(),u0(),d0(),p0()}import{defaultDocRegistry as l0}from"@contractspec/lib.contracts-spec/docs";function n0(j){return j?.trim().toLowerCase()??""}function c0(j){for(let Y of j??[]){let J=l0.get(Y);if(J)return J.route}return}function UY(j,Y,J,Q){let $=j.meta.title??j.meta.key,Z=c0(j.meta.docId),X=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:Y,title:$,description:X,markdown:[`# ${$}`,`- Key: ${j.meta.key}`,`- Type: ${Y}`,`- Version: ${j.meta.version}`,Z?`- Docs route: ${Z}`:"",X?`
9
+ Stabilize AI-generated code across API, DB, UI, events. Use onboard/create/generate/validate commands.`},Vj=["cli","mcp"],tj=["@contractspec"],cY=(()=>{let j=new Set([process.cwd(),t.resolve(process.cwd(),".."),t.resolve(process.cwd(),"../.."),t.resolve(process.cwd(),"../../..")]);if(typeof __dirname==="string")j.add(t.resolve(__dirname,"../../../../.."));return[...j]})(),Uj=new Map;async function iY(j){if(Uj.has(j))return Uj.get(j);let Y=lY[j];for(let Q of cY){let $=t.resolve(Q,Y);try{let Z=await SY.readFile($,"utf8");return Uj.set(j,Z),Z}catch{}}let J=nY[j];return Uj.set(j,J),J}function oY(){let j=new pY;return j.register(oj({meta:{uriTemplate:"cli://doc/{slug}",title:"CLI documentation",description:"Quickstart, reference, and README for the CLI.",mimeType:"text/markdown",tags:Vj},input:T.object({slug:T.enum(["quickstart","reference","readme"])}),resolve:async({slug:Y})=>{let J=await iY(Y);return{uri:`cli://doc/${Y}`,mimeType:"text/markdown",data:J}}})),j.register(oj({meta:{uriTemplate:"cli://commands",title:"CLI commands summary",description:"Key ContractSpec CLI commands and when to use them.",mimeType:"application/json",tags:Vj},input:T.object({}),resolve:async()=>{return{uri:"cli://commands",mimeType:"application/json",data:JSON.stringify([{command:"contractspec onboard",summary:"Generate repo-local AGENTS.md and USAGE.md guidance plus recommended tracks.",doc:"cli://doc/quickstart"},{command:"contractspec create",summary:"Interactive wizard to author specs (with optional AI).",doc:"cli://doc/quickstart"},{command:"contractspec build <specPath>",summary:"Generate implementation code from a ContractSpec (agents + templates).",doc:"cli://doc/reference"},{command:"contractspec validate <specPath>",summary:"Validate specs and optionally check implementations against them.",doc:"cli://doc/reference"}],null,2)}}})),pj(j),j}function aY(){let j=new dY;return j.register(mY({meta:{key:"cli.usage",version:"1.0.0",title:"Use ContractSpec CLI safely",description:"Remind agents to read CLI docs and pick commands from the canonical list.",tags:Vj,stability:"beta",owners:tj},args:[{name:"goal",description:"Task the user wants to achieve.",required:!1,schema:T.string().optional()}],input:T.object({goal:T.string().optional()}),render:async({goal:Y})=>[{type:"text",text:`Use CLI commands only from cli://commands. Prefer quickstart for newcomers and reference for options.${Y?` Goal: ${Y}.`:""}`},{type:"resource",uri:"cli://commands",title:"Commands"},{type:"resource",uri:"cli://doc/quickstart",title:"Quickstart"}]})),lj(j),j}function tY(){let j=new uY,Y=aj({name:"CliSuggestInput",fields:{goal:{type:a.String_unsecure(),isOptional:!1},prefersAi:{type:a.Boolean(),isOptional:!0}}}),J=aj({name:"CliSuggestOutput",fields:{command:{type:a.String_unsecure(),isOptional:!1},docUri:{type:a.String_unsecure(),isOptional:!1},reason:{type:a.String_unsecure(),isOptional:!1}}}),Q=yY({meta:{key:"cli_suggestCommand",version:"1.0.0",stability:"stable",owners:tj,tags:Vj,description:"Recommend a CLI command for the requested goal.",goal:"Help AI agents choose the correct CLI entrypoint quickly.",context:"Used inside the CLI MCP server."},io:{input:Y,output:J},policy:{auth:"anonymous"}});return gY(j,Q,async({goal:$,prefersAi:Z})=>{let X=$.toLowerCase();if(X.includes("onboard")||X.includes("start")||X.includes("guide")||X.includes("install"))return{command:"contractspec onboard",docUri:"cli://doc/quickstart",reason:"Starts the CLI-first onboarding flow for the current repo."};if(X.includes("create")||X.includes("new"))return{command:Z?"contractspec create --ai":"contractspec create",docUri:"cli://doc/quickstart",reason:"Creates a new ContractSpec interactively (optionally with AI)."};if(X.includes("build")||X.includes("generate"))return{command:"contractspec build <path-to-spec>",docUri:"cli://doc/reference",reason:"Builds implementation code from a spec using agents + templates."};if(X.includes("validate")||X.includes("check"))return{command:"contractspec validate <path-to-spec>",docUri:"cli://doc/reference",reason:"Validates a spec and optionally checks its implementation for drift."};return{command:"contractspec --help",docUri:"cli://doc/readme",reason:"Fallback when the goal is unclear; read README for options."}}),nj(j),j}function qQ(j="/api/mcp/cli"){return A({logger:D,path:j,serverName:"contractspec-cli-mcp",ops:tY(),resources:oY(),prompts:aY()})}import{definePrompt as sY,defineResourceTemplate as s,PromptRegistry as rY,ResourceRegistry as eY}from"@contractspec/lib.contracts-spec";import N from"zod";var j0=["@contractspec"],f=["contracts","mcp"];function sj(j){let Y=new eY;return Y.register(s({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:f},input:N.object({}),resolve:async()=>{let J=await j.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),Y.register(s({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:f},input:N.object({path:N.string()}),resolve:async({path:J})=>{let Q=await j.getSpec(J);if(!Q)return{uri:`contracts://spec/${encodeURIComponent(J)}`,mimeType:"text/plain",data:`Spec not found: ${J}`};return{uri:`contracts://spec/${encodeURIComponent(J)}`,mimeType:"text/plain",data:Q.content}}})),Y.register(s({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:f},input:N.object({}),resolve:async()=>{let J=await j.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),Y.register(s({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:f},input:N.object({}),resolve:async()=>{let J=await j.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),Y.register(s({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:f},input:N.object({family:N.string()}),resolve:async({family:J})=>{let Q=await j.resolveAdoption({family:J,query:J});return{uri:`adoption://policy/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(Q,null,2)}}})),Y}function rj(){let j=new rY;return j.register(sY({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:f,stability:"beta",owners:j0},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:N.string().optional()}],input:N.object({goal:N.string().optional()}),render:async({goal:Y})=>[{type:"text",text:["Contract editing workflow:","1. Use contracts.list to discover specs","2. Use contracts.get to read a spec","3. Edit content and call contracts.update","4. Run contracts.validate to verify changes","5. Run contracts.build to regenerate artifacts","6. Use adoption.resolve to prefer existing workspace or ContractSpec surfaces before inventing new ones",Y?`Agent goal: ${Y}`:""].filter(Boolean).join(`
10
+ `)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}import{defineCommand as Oj,installOp as Rj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as S,ScalarTypeEnum as b}from"@contractspec/lib.schema";var hj=["@contractspec"],Tj=["contracts","mcp","adoption"];function ej(j,Y){let J=S({name:"AdoptionCatalogSearchInput",fields:{query:{type:b.String_unsecure(),isOptional:!1},family:{type:b.String_unsecure(),isOptional:!0},platform:{type:b.String_unsecure(),isOptional:!0}}}),Q=S({name:"AdoptionCatalogSearchOutput",fields:{results:{type:b.JSON(),isOptional:!1}}});Rj(j,Oj({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:hj,tags:Tj,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:J,output:Q},policy:{auth:"anonymous"}}),async({family:V,platform:B,query:H})=>({results:await Y.searchAdoptionCatalog({family:V,platform:B,query:H})}));let $=S({name:"AdoptionResolveInput",fields:{family:{type:b.String_unsecure(),isOptional:!1},query:{type:b.String_unsecure(),isOptional:!1},paths:{type:b.JSON(),isOptional:!0},platform:{type:b.String_unsecure(),isOptional:!0},runtime:{type:b.String_unsecure(),isOptional:!0}}}),Z=S({name:"AdoptionResolveOutput",fields:{resolution:{type:b.JSON(),isOptional:!1}}});Rj(j,Oj({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:hj,tags:Tj,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:$,output:Z},policy:{auth:"anonymous"}}),async({family:V,paths:B,platform:H,query:K,runtime:P})=>({resolution:await Y.resolveAdoption({family:V,paths:Array.isArray(B)?B:void 0,platform:H,query:K,runtime:P})}));let X=S({name:"AdoptionSyncInput",fields:{}}),U=S({name:"AdoptionSyncOutput",fields:{catalogPath:{type:b.String_unsecure(),isOptional:!1},total:{type:b.Int_unsecure(),isOptional:!1}}});Rj(j,Oj({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:hj,tags:Tj,description:"Mirror the bundled ContractSpec adoption catalog locally.",goal:"Refresh the local adoption catalog used by Connect and MCP.",context:"Contracts MCP server."},io:{input:X,output:U},policy:{auth:"user"}}),async()=>Y.syncAdoptionCatalog())}import{defineCommand as y,installOp as m,OperationSpecRegistry as Y0}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as G,ScalarTypeEnum as w}from"@contractspec/lib.schema";var g=["@contractspec"],u=["contracts","mcp"];function jY(j){let Y=new Y0,J=G({name:"ContractsListInput",fields:{pattern:{type:w.String_unsecure(),isOptional:!0},type:{type:w.String_unsecure(),isOptional:!0}}}),Q=G({name:"ContractsListOutput",fields:{specs:{type:w.JSON(),isOptional:!1},total:{type:w.Int_unsecure(),isOptional:!1}}});m(Y,y({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:J,output:Q},policy:{auth:"anonymous"}}),async({pattern:H,type:K})=>{let P=await j.listSpecs({pattern:H,type:K});return{specs:P,total:P.length}});let $=G({name:"ContractsGetInput",fields:{path:{type:w.String_unsecure(),isOptional:!1}}}),Z=G({name:"ContractsGetOutput",fields:{content:{type:w.String_unsecure(),isOptional:!1},info:{type:w.JSON(),isOptional:!1}}});m(Y,y({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:$,output:Z},policy:{auth:"anonymous"}}),async({path:H})=>{let K=await j.getSpec(H);if(!K)throw Error(`Spec not found: ${H}`);return K});let X=G({name:"ContractsValidateInput",fields:{path:{type:w.String_unsecure(),isOptional:!1}}}),U=G({name:"ContractsValidateOutput",fields:{valid:{type:w.Boolean(),isOptional:!1},errors:{type:w.JSON(),isOptional:!1},warnings:{type:w.JSON(),isOptional:!1}}});m(Y,y({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:X,output:U},policy:{auth:"anonymous"}}),async({path:H})=>j.validateSpec(H));let V=G({name:"ContractsBuildInput",fields:{path:{type:w.String_unsecure(),isOptional:!1},dryRun:{type:w.Boolean(),isOptional:!0}}}),B=G({name:"ContractsBuildOutput",fields:{results:{type:w.JSON(),isOptional:!1}}});return m(Y,y({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:V,output:B},policy:{auth:"user"}}),async({path:H,dryRun:K})=>j.buildSpec(H,{dryRun:K})),J0(Y,j),ej(Y,j),Y}function J0(j,Y){let J=G({name:"ContractsUpdateInput",fields:{path:{type:w.String_unsecure(),isOptional:!1},content:{type:w.String_unsecure(),isOptional:!0},fields:{type:w.JSON(),isOptional:!0}}}),Q=G({name:"ContractsUpdateOutput",fields:{updated:{type:w.Boolean(),isOptional:!1},errors:{type:w.JSON(),isOptional:!1},warnings:{type:w.JSON(),isOptional:!1}}});m(j,y({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:J,output:Q},policy:{auth:"user"}}),async({path:X,content:U,fields:V})=>Y.updateSpec(X,{content:U,fields:Array.isArray(V)?V:void 0}));let $=G({name:"ContractsDeleteInput",fields:{path:{type:w.String_unsecure(),isOptional:!1},clean:{type:w.Boolean(),isOptional:!0}}}),Z=G({name:"ContractsDeleteOutput",fields:{deleted:{type:w.Boolean(),isOptional:!1},cleanedFiles:{type:w.JSON(),isOptional:!1},errors:{type:w.JSON(),isOptional:!1}}});m(j,y({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:g,tags:u,description:"Delete a contract spec and optionally its artifacts.",goal:"Remove a spec file and clean generated handlers/tests.",context:"Contracts MCP server."},io:{input:$,output:Z},policy:{auth:"user"}}),async({path:X,clean:U})=>Y.deleteSpec(X,{clean:U}))}function hQ(j="/api/mcp/contracts",Y){return A({logger:D,path:j,serverName:"contractspec-contracts-mcp",ops:jY(Y),resources:sj(Y),prompts:rj()})}import{defaultDocRegistry as Q0}from"@contractspec/lib.contracts-spec/docs";var Z0=20,$0=100;function _(j){return j?.trim().toLowerCase()??""}function YY(j){let Y=decodeURIComponent(j).trim();if(!Y)return"/";return Y.startsWith("/")?Y:`/${Y}`}function X0(j){return(Array.isArray(j)?j:j?[j]:[]).map((J)=>_(J)).filter(Boolean)}function U0(j){if(!j||Number.isNaN(j))return Z0;return Math.min(Math.max(j,1),$0)}function V0(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function fj({block:j,route:Y}){return{id:j.id,title:j.title,summary:j.summary??"",route:Y,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function H0(j,Y){if(!Y)return 1;let J=Y.split(/\s+/).filter(Boolean),Q=_(j.block.title),$=_(j.block.id),Z=_(j.block.summary),X=_(j.block.body),U=_(j.route),V=(j.block.tags??[]).map((K)=>_(K)),B=[Q,$,Z,X,U,...V].join(" ");if(J.some((K)=>!B.includes(K)))return 0;let H=0;for(let K of J){if($.includes(K))H+=8;if(Q.includes(K))H+=7;if(V.some((P)=>P.includes(K)))H+=5;if(Z.includes(K))H+=4;if(U.includes(K))H+=3;if(X.includes(K))H+=2}return H}function d(j,Y){let J=_(typeof Y.query==="string"?Y.query:void 0),Q=X0(Y.tag),$=_(typeof Y.visibility==="string"?Y.visibility:void 0),Z=_(typeof Y.kind==="string"?Y.kind:void 0),X=U0(typeof Y.limit==="number"?Y.limit:void 0),U=V0(typeof Y.offset==="number"?Y.offset:void 0),V=j.map((K)=>({doc:fj(K),score:H0(K,J)})).filter(({doc:K,score:P})=>{let Gj=J?P>0:!0,W=Q.length?Q.every((i)=>K.tags.some((z)=>_(z).includes(i))):!0,x=$?_(K.visibility)===$:!0,I=Z?_(K.kind)===Z:!0;return Gj&&W&&x&&I}).sort((K,P)=>{if(P.score!==K.score)return P.score-K.score;return K.doc.title.localeCompare(P.doc.title)}),B=V.slice(U,U+X).map(({doc:K})=>K),H=U+B.length<V.length?U+B.length:void 0;return{docs:B,items:B,total:V.length,...H!=null?{nextOffset:H}:{}}}function Hj(j){let Y=decodeURIComponent(j),J=Q0.get(Y);if(!J)return;return{doc:fj(J),content:String(J.block.body??"")}}function Kj(j,Y){let J=YY(Y),Q=j.find(($)=>YY($.route)===J);if(!Q)return;return{doc:fj(Q),content:String(Q.block.body??"")}}function wj(j){let Y=new Map,J=new Map,Q=new Map;for(let Z of j){let X=Z.block.kind??"reference",U=Z.block.visibility??"public";J.set(X,(J.get(X)??0)+1),Q.set(U,(Q.get(U)??0)+1);for(let V of Z.block.tags??[])Y.set(V,(Y.get(V)??0)+1)}let $=(Z,X)=>[...Z.entries()].sort((U,V)=>V[1]-U[1]||U[0].localeCompare(V[0])).map(([U,V])=>({[X]:U,count:V}));return{totalDocs:j.length,tags:$(Y,"tag"),kinds:$(J,"kind"),visibilities:$(Q,"visibility")}}import{EventRegistry as K0,OperationSpecRegistry as w0}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as F0}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as B0,ContractReferenceQuery as W0,DocsGenerateCommand as x0,DocsGeneratedEvent as P0,DocsIndexDataView as L0,DocsIndexQuery as q0,DocsLayoutPresentation as _0,DocsPublishCommand as M0,DocsPublishedEvent as b0,DocsReferencePagePresentation as G0,DocsSearchForm as D0,ExampleCatalogDataView as C0}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as A0}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as N0}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as I0,serializeEventSpec as z0,serializeFormSpec as E0,serializeOperationSpec as k0,serializePresentationSpec as v0}from"@contractspec/lib.contracts-spec/serialization";var Fj=null;function O0(){let j=new w0;return j.register(q0).register(W0).register(x0).register(M0),j}function R0(){if(!Fj)Fj=O0();return Fj}function Sj(j,Y){return R0().get(j,Y)}var Bj=null;function h0(){let j=new K0;return j.register(P0).register(b0),j}function T0(){if(!Bj)Bj=h0();return Bj}function yj(j,Y){return T0().get(j,Y)}var Wj=null;function f0(){let j=new N0;return j.register(_0).register(G0),j}function S0(){if(!Wj)Wj=f0();return Wj}function mj(j,Y){return S0().get(j,Y)}var xj=null;function y0(){let j=new F0;return j.register(L0).register(B0).register(C0),j}function m0(){if(!xj)xj=y0();return xj}function gj(j,Y){return m0().get(j,Y)}var Pj=null;function g0(){let j=new A0;return j.register(D0),j}function u0(){if(!Pj)Pj=g0();return Pj}function uj(j,Y){return u0().get(j)}function JY(j,Y){let J=Sj(j,Y);return k0(J)??void 0}function QY(j,Y){let J=yj(j,Y);return z0(J)??void 0}function ZY(j,Y){let J=mj(j,Y);return v0(J)??void 0}function $Y(j,Y){let J=gj(j,Y);return I0(J)??void 0}function XY(j,Y){let J=uj(j,Y);return E0(J)??void 0}function d0(){Fj=null}function p0(){Bj=null}function l0(){Wj=null}function n0(){xj=null}function c0(){Pj=null}function lQ(){d0(),p0(),l0(),n0(),c0()}import{defaultDocRegistry as i0}from"@contractspec/lib.contracts-spec/docs";function o0(j){return j?.trim().toLowerCase()??""}function a0(j){for(let Y of j??[]){let J=i0.get(Y);if(J)return J.route}return}function UY(j,Y,J,Q){let $=j.meta.title??j.meta.key,Z=a0(j.meta.docId),X=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:Y,title:$,description:X,markdown:[`# ${$}`,`- Key: ${j.meta.key}`,`- Type: ${Y}`,`- Version: ${j.meta.version}`,Z?`- Docs route: ${Z}`:"",X?`
11
11
  ${X}`:""].filter(Boolean).join(`
12
- `),...Z?{route:Z}:{},...J?{schema:J}:{},...Q?{policy:Q}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function p(j){let Y=j.includeSchema??!1,J=n0(j.type),Q=Sj(j.key,j.version);if(Q&&(!J||J==="operation"||J===Q.meta.kind))return{reference:UY(Q,Q.meta.kind,Y?JY(j.key,j.version):void 0,Q.policy)};let $=[{type:"data-view",spec:gj(j.key,j.version),schema:Y?$Y(j.key,j.version):void 0},{type:"form",spec:uj(j.key,j.version),schema:Y?XY(j.key,j.version):void 0},{type:"presentation",spec:mj(j.key,j.version),schema:Y?ZY(j.key,j.version):void 0},{type:"event",spec:yj(j.key,j.version),schema:Y?QY(j.key,j.version):void 0}];for(let Z of $)if(Z.spec&&(!J||J===Z.type))return{reference:UY(Z.spec,Z.type,Z.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as VY,PromptRegistry as i0}from"@contractspec/lib.contracts-spec";import L from"zod";var HY=["@contractspec"],KY=["docs","mcp"];function wY(j){let Y=new i0;return Y.register(VY({meta:{key:"docs.navigator",version:"1.0.0",title:"Find relevant ContractSpec docs",description:"Guide agents to search, filter, and open the right ContractSpec docs.",tags:KY,stability:"beta",owners:HY},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:L.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:L.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:L.string().optional()}],input:L.object({topic:L.string().optional(),kind:L.string().optional(),tag:L.string().optional()}),render:async({topic:J,kind:Q,tag:$})=>{let Z=d(j,{query:J,kind:Q,tag:$,limit:3}),X=Z.docs.length?Z.docs.map((U)=>`- ${U.title} (${U.id}) -> ${U.route}`).join(`
12
+ `),...Z?{route:Z}:{},...J?{schema:J}:{},...Q?{policy:Q}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function p(j){let Y=j.includeSchema??!1,J=o0(j.type),Q=Sj(j.key,j.version);if(Q&&(!J||J==="operation"||J===Q.meta.kind))return{reference:UY(Q,Q.meta.kind,Y?JY(j.key,j.version):void 0,Q.policy)};let $=[{type:"data-view",spec:gj(j.key,j.version),schema:Y?$Y(j.key,j.version):void 0},{type:"form",spec:uj(j.key,j.version),schema:Y?XY(j.key,j.version):void 0},{type:"presentation",spec:mj(j.key,j.version),schema:Y?ZY(j.key,j.version):void 0},{type:"event",spec:yj(j.key,j.version),schema:Y?QY(j.key,j.version):void 0}];for(let Z of $)if(Z.spec&&(!J||J===Z.type))return{reference:UY(Z.spec,Z.type,Z.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as VY,PromptRegistry as t0}from"@contractspec/lib.contracts-spec";import L from"zod";var HY=["@contractspec"],KY=["docs","mcp"];function wY(j){let Y=new t0;return Y.register(VY({meta:{key:"docs.navigator",version:"1.0.0",title:"Find relevant ContractSpec docs",description:"Guide agents to search, filter, and open the right ContractSpec docs.",tags:KY,stability:"beta",owners:HY},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:L.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:L.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:L.string().optional()}],input:L.object({topic:L.string().optional(),kind:L.string().optional(),tag:L.string().optional()}),render:async({topic:J,kind:Q,tag:$})=>{let Z=d(j,{query:J,kind:Q,tag:$,limit:3}),X=Z.docs.length?Z.docs.map((U)=>`- ${U.title} (${U.id}) -> ${U.route}`).join(`
13
13
  `):"- No direct pre-match. Use docs_list_facets-v1_0_0 to browse tags and kinds.";return[{type:"text",text:["Use docs_search-v1_0_0 first, then read docs://doc/{id} for the strongest matches.","Use docs_resolve_route-v1_0_0 when the user already gives you a docs URL or route.","Use docs_list_facets-v1_0_0 or docs://facets to browse the docs taxonomy before guessing.",J?`Topic: ${J}`:"",Q?`Kind: ${Q}`:"",$?`Tag: ${$}`:"","Suggested starting docs:",X].filter(Boolean).join(`
14
14
  `)},{type:"resource",uri:"docs://index",title:"DocBlocks index"},{type:"resource",uri:"docs://facets",title:"Docs facets"}]}})),Y.register(VY({meta:{key:"docs.reference.guide",version:"1.0.0",title:"Resolve a ContractSpec reference",description:"Guide agents to fetch the canonical reference payload for a ContractSpec surface.",tags:KY,stability:"beta",owners:HY},args:[{name:"key",description:"ContractSpec key to resolve.",required:!0,schema:L.string()},{name:"version",description:"Optional version override.",required:!1,schema:L.string().optional()},{name:"type",description:"Optional surface type: command, query, form, data-view, presentation, event.",required:!1,schema:L.string().optional()}],input:L.object({key:L.string(),version:L.string().optional(),type:L.string().optional()}),render:async({key:J,version:Q,type:$})=>{let Z=p({key:J,version:Q,type:$,includeSchema:!0}).reference;return[{type:"text",text:["Use docs_contract_reference-v1_0_0 when you need the canonical docs payload for a ContractSpec surface.","Use docs_get-v1_0_0 only when you already know the exact DocBlock id and need raw markdown.",`Resolved key: ${Z.key}`,`Resolved type: ${Z.type}`,Z.route?`Docs route: ${Z.route}`:"",`Resource URI: docs://contract-reference/${encodeURIComponent(J)}`].filter(Boolean).join(`
15
- `)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(J)}`,title:"Contract reference"}]}})),Y}import{defineResourceTemplate as k,ResourceRegistry as o0}from"@contractspec/lib.contracts-spec";import F from"zod";var v=["docs","mcp"];function FY(j){let Y=new o0,J=(Q)=>d(j,Q);return Y.register(k({meta:{uriTemplate:"docs://index",title:"DocBlocks index",description:"Default ContractSpec docs index resource.",mimeType:"application/json",tags:v},input:F.object({}),resolve:async()=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(J({}),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://index{?query,tag,kind,visibility,limit,offset}",title:"DocBlocks index",description:"Search and paginate ContractSpec docs by query, tag, kind, or visibility.",mimeType:"application/json",tags:v},input:F.object({query:F.string().optional(),tag:F.string().optional(),kind:F.string().optional(),visibility:F.string().optional(),limit:F.coerce.number().optional(),offset:F.coerce.number().optional()}),resolve:async(Q)=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(J(Q),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://list",title:"DocBlocks index (legacy alias)",description:"Compatibility alias for the docs index resource.",mimeType:"application/json",tags:v},input:F.object({}),resolve:async()=>({uri:"docs://list",mimeType:"application/json",data:JSON.stringify(J({}),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://doc/{id}",title:"Doc markdown",description:"Fetch a single DocBlock body by id as markdown.",mimeType:"text/markdown",tags:v},input:F.object({id:F.string()}),resolve:async({id:Q})=>{let $=Hj(Q);if(!$)return{uri:`docs://doc/${encodeURIComponent(Q)}`,mimeType:"text/plain",data:`DocBlock not found: ${Q}`};return{uri:`docs://doc/${encodeURIComponent(Q)}`,mimeType:"text/markdown",data:$.content}}})),Y.register(k({meta:{uriTemplate:"docs://route/{routePath}",title:"Doc by route",description:"Resolve a docs route to the matching DocBlock summary and body.",mimeType:"application/json",tags:v},input:F.object({routePath:F.string()}),resolve:async({routePath:Q})=>({uri:`docs://route/${encodeURIComponent(Q)}`,mimeType:"application/json",data:JSON.stringify(Kj(j,Q)??{error:"not_found",route:Q},null,2)})})),Y.register(k({meta:{uriTemplate:"docs://facets",title:"Docs facets",description:"Counts of available tags, kinds, and visibilities across docs.",mimeType:"application/json",tags:v},input:F.object({}),resolve:async()=>({uri:"docs://facets",mimeType:"application/json",data:JSON.stringify(wj(j),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://contract-reference/{key}{?version,type,includeSchema}",title:"Contract reference",description:"Resolve a ContractSpec surface into a docs-ready reference payload.",mimeType:"application/json",tags:v},input:F.object({key:F.string(),version:F.string().optional(),type:F.string().optional(),includeSchema:F.coerce.boolean().optional()}),resolve:async({key:Q,version:$,type:Z,includeSchema:X})=>({uri:`docs://contract-reference/${encodeURIComponent(Q)}`,mimeType:"application/json",data:JSON.stringify(p({key:Q,version:$,type:Z,includeSchema:X}),null,2)})})),Y}import{defineCommand as r,defineSchemaModel as l,installOp as e,OperationSpecRegistry as a0}from"@contractspec/lib.contracts-spec";import{ContractReferenceInput as t0,ContractReferenceOutput as s0,DocsIndexInput as r0,DocsIndexOutput as e0}from"@contractspec/lib.contracts-spec/docs";import{ScalarTypeEnum as O}from"@contractspec/lib.schema";var jj=["@contractspec"],Yj=["docs","mcp"],jJ=l({name:"DocsGetInput",fields:{id:{type:O.String_unsecure(),isOptional:!1}}}),YJ=l({name:"DocsGetOutput",fields:{doc:{type:O.JSON(),isOptional:!1},content:{type:O.String_unsecure(),isOptional:!1}}}),JJ=l({name:"DocsResolveRouteInput",fields:{route:{type:O.String_unsecure(),isOptional:!1}}}),QJ=l({name:"DocsResolveRouteOutput",fields:{doc:{type:O.JSON(),isOptional:!1},content:{type:O.String_unsecure(),isOptional:!1}}}),ZJ=l({name:"DocsFacetsInput",fields:{}}),$J=l({name:"DocsFacetsOutput",fields:{facets:{type:O.JSON(),isOptional:!1}}});function BY(j){let Y=new a0;return e(Y,r({meta:{key:"docs.search",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Search ContractSpec docs by query, tag, kind, or visibility.",goal:"Find the most relevant DocBlocks without browsing the full corpus.",context:"Read-only docs MCP search surface."},io:{input:r0,output:e0},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_search-v1_0_0"}}}),async(J)=>d(j,J)),e(Y,r({meta:{key:"docs.get",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Read a single DocBlock by id.",goal:"Fetch the exact markdown content and metadata for a known doc id.",context:"Read-only docs MCP surface."},io:{input:jJ,output:YJ},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_get-v1_0_0"}}}),async({id:J})=>{let Q=Hj(J);if(!Q)throw Error(`DocBlock not found: ${J}`);return Q}),e(Y,r({meta:{key:"docs.resolveRoute",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Resolve a docs route to the matching DocBlock.",goal:"Turn a route or URL path into a canonical doc id and markdown body.",context:"Read-only docs MCP surface."},io:{input:JJ,output:QJ},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_resolve_route-v1_0_0"}}}),async({route:J})=>{let Q=Kj(j,J);if(!Q)throw Error(`Doc route not found: ${J}`);return Q}),e(Y,r({meta:{key:"docs.contract.lookup",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Resolve a ContractSpec surface into a docs-ready reference payload.",goal:"Get canonical docs metadata, route, and optional schema for a spec key.",context:"Read-only docs MCP surface."},io:{input:t0,output:s0},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_contract_reference-v1_0_0"}}}),async(J)=>p(J)),e(Y,r({meta:{key:"docs.list.facets",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"List docs taxonomy facets such as tags, kinds, and visibilities.",goal:"Help agents browse the docs corpus before making targeted reads.",context:"Read-only docs MCP surface."},io:{input:ZJ,output:$J},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_list_facets-v1_0_0"}}}),async()=>({facets:wj(j)})),Y}import{defaultDocRegistry as XJ}from"@contractspec/lib.contracts-spec/docs";function wZ(j="/api/mcp/docs",Y={}){let J=XJ.list();return A({logger:D,path:j,serverName:"contractspec-docs-mcp",ops:BY(J),resources:FY(J),prompts:wY(J),presentations:Y.includePresentations?J.map(({descriptor:Q})=>Q):void 0})}import{defineCommand as UJ,definePrompt as VJ,defineResourceTemplate as Lj,installOp as HJ,OperationSpecRegistry as KJ,PromptRegistry as wJ,ResourceRegistry as FJ}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as WY,ScalarTypeEnum as xY}from"@contractspec/lib.schema";import{getExample as BJ,listExamples as WJ,searchExamples as xJ}from"@contractspec/module.examples";import R from"zod";var n=["internal","mcp"],PY=["@contractspec"],Jj={docs:"/api/mcp/docs",cli:"/api/mcp/cli",internal:"/api/mcp/internal",graphql:"/graphql",health:"/health"};function PJ(){let j=new FJ;return j.register(Lj({meta:{uriTemplate:"examples://list{?q}",title:"ContractSpec examples registry",description:"List available examples (templates, integrations, knowledge, scripts). Optional query `q` filters results.",mimeType:"application/json",tags:["examples",...n]},input:R.object({q:R.string().optional()}),resolve:async({q:Y})=>{let J=Y?xJ(Y):[...WJ()];return{uri:Y?`examples://list?q=${encodeURIComponent(Y)}`:"examples://list",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),j.register(Lj({meta:{uriTemplate:"examples://example/{id}",title:"ContractSpec example (by id)",description:"Fetch a single example manifest by id.",mimeType:"application/json",tags:["examples",...n]},input:R.object({id:R.string().min(1)}),resolve:async({id:Y})=>{let J=BJ(Y);if(!J)return{uri:`examples://example/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify({error:"not_found",id:Y,message:`Unknown example id: ${Y}`},null,2)};return{uri:`examples://example/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),j.register(Lj({meta:{uriTemplate:"internal://endpoints",title:"ContractSpec MCP endpoints",description:"Endpoints for docs, CLI, internal MCP servers.",mimeType:"application/json",tags:n},input:R.object({}),resolve:async()=>({uri:"internal://endpoints",mimeType:"application/json",data:JSON.stringify(Jj,null,2)})})),j.register(Lj({meta:{uriTemplate:"internal://playbook",title:"Internal MCP usage playbook",description:"How internal agents should discover docs, CLI usage, and endpoints.",mimeType:"text/markdown",tags:n},input:R.object({}),resolve:async()=>({uri:"internal://playbook",mimeType:"text/markdown",data:["# Internal MCP playbook","- Connect to docs MCP first for canonical specs.","- Use CLI MCP to surface quickstart/reference before running commands.","- Keep calls read-only unless explicitly approved.",`- Endpoints: ${Jj.docs}, ${Jj.cli}, ${Jj.internal}.`,"- For API work, GraphQL at /graphql; health at /health."].join(`
16
- `)})})),j}function LJ(){let j=new wJ;return j.register(VJ({meta:{key:"internal_bootstrap",version:"1.0.0",title:"Bootstrap internal ContractSpec agent",description:"Points agents to the correct MCP endpoints and guardrails.",tags:n,owners:PY,stability:"beta"},args:[],input:R.object({}),render:async()=>[{type:"text",text:"Start with internal://endpoints to pick the right MCP. Use docs MCP for specifications and CLI MCP for commands. Keep actions read-only unless explicitly approved."},{type:"resource",uri:"internal://endpoints",title:"Endpoints"}]})),j}function qJ(){let j=new KJ,Y=WY({name:"InternalDescribeOutput",fields:{endpoints:{type:xY.JSONObject(),isOptional:!1},notes:{type:xY.String_unsecure(),isOptional:!1}}}),J=UJ({meta:{key:"internal_describe",version:"1.0.0",stability:"stable",owners:PY,tags:n,description:"Return MCP endpoints and guidance for internal ContractSpec agents.",goal:"Speed up internal development with the correct MCP entrypoints.",context:"Used by internal MCP surface; read-only."},io:{input:WY({name:"InternalDescribeInput",fields:{}}),output:Y},policy:{auth:"anonymous"}});return HJ(j,J,async()=>({endpoints:Jj,notes:"Use docs MCP for canonical specs, CLI MCP for contractspec commands, and keep side-effecting actions gated behind human review."})),j}function _Z(j="/api/mcp/internal"){return A({logger:D,path:j,serverName:"contractspec-internal-mcp",ops:qJ(),resources:PJ(),prompts:LJ()})}import{getModelInfo as _J}from"@contractspec/lib.ai-providers/models";import{definePrompt as MJ,defineResourceTemplate as qj,installOp as dj,OperationSpecRegistry as bJ,PromptRegistry as GJ,ResourceRegistry as DJ}from"@contractspec/lib.contracts-spec";import{BenchmarkIngestCommand as CJ,BenchmarkRunCustomCommand as AJ,RankingRefreshCommand as NJ}from"@contractspec/lib.contracts-spec/provider-ranking";import{InMemoryProviderRankingStore as IJ}from"@contractspec/lib.provider-ranking/in-memory-store";import{createDefaultIngesterRegistry as zJ}from"@contractspec/lib.provider-ranking/ingesters";import{computeModelRankings as EJ,normalizeBenchmarkResults as kJ}from"@contractspec/lib.provider-ranking/scoring";import M from"zod";var Mj=M.enum(["rest","mcp","webhook","sdk"]).optional(),bj=M.enum(["api-key","oauth2","bearer","header","basic","webhook-signing","service-account"]).optional(),Qj=["ranking","mcp","ai"],vJ=["platform.ai"],_j=null;function c(){if(!_j)_j=new IJ;return _j}function OJ(){let j=new DJ;return j.register(qj({meta:{uriTemplate:"ranking://leaderboard",title:"AI Model Leaderboard",description:"Current ranked list of AI models by composite score. Supports optional transport and authMethod query filters.",mimeType:"application/json",tags:Qj},input:M.object({transport:Mj,authMethod:bj}),resolve:async({transport:Y,authMethod:J})=>{let $=await c().listModelRankings({limit:100,requiredTransport:Y,requiredAuthMethod:J});return{uri:"ranking://leaderboard",mimeType:"application/json",data:JSON.stringify($,null,2)}}})),j.register(qj({meta:{uriTemplate:"ranking://leaderboard/{dimension}",title:"AI Model Leaderboard by Dimension",description:"Ranked list of AI models filtered by a specific dimension. Supports optional transport and authMethod query filters.",mimeType:"application/json",tags:Qj},input:M.object({dimension:M.string(),transport:Mj,authMethod:bj}),resolve:async({dimension:Y,transport:J,authMethod:Q})=>{let Z=await c().listModelRankings({dimension:Y,limit:100,requiredTransport:J,requiredAuthMethod:Q});return{uri:`ranking://leaderboard/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify(Z,null,2)}}})),j.register(qj({meta:{uriTemplate:"ranking://model/{modelId}",title:"AI Model Profile",description:"Detailed profile for a specific AI model including scores and benchmarks.",mimeType:"application/json",tags:Qj},input:M.object({modelId:M.string()}),resolve:async({modelId:Y})=>{let Q=await c().getModelProfile(Y);if(!Q)return{uri:`ranking://model/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify({error:"not_found",modelId:Y})};let $=Q.costPerMillion==null?(()=>{let Z=_J(Q.modelId);return Z?.costPerMillion?{...Q,costPerMillion:Z.costPerMillion,displayName:Z.name,contextWindow:Z.contextWindow,capabilities:[...Z.capabilities.vision?["vision"]:[],...Z.capabilities.tools?["tools"]:[],...Z.capabilities.reasoning?["reasoning"]:[],...Z.capabilities.streaming?["streaming"]:[]]}:Q})():Q;return{uri:`ranking://model/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify($,null,2)}}})),j.register(qj({meta:{uriTemplate:"ranking://results",title:"Benchmark Results",description:"List of raw benchmark results from all ingested sources.",mimeType:"application/json",tags:Qj},input:M.object({}),resolve:async()=>{let J=await c().listBenchmarkResults({limit:200});return{uri:"ranking://results",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),j}function RJ(){let j=new GJ;return j.register(MJ({meta:{key:"ranking.advisor",version:"1.0.0",title:"AI Model Advisor",description:"Which AI model is best for a given task? Uses the leaderboard to recommend.",tags:Qj,stability:"beta",owners:vJ},args:[{name:"task",description:"The task or use case to recommend a model for.",required:!0,schema:M.string()},{name:"priority",description:"Priority dimension (coding, reasoning, cost, latency, etc.).",required:!1,schema:M.string().optional()},{name:"transport",description:"Required transport type (rest, mcp, webhook, sdk).",required:!1,schema:Mj},{name:"authMethod",description:"Required auth method (api-key, oauth2, bearer, etc.).",required:!1,schema:bj}],input:M.object({task:M.string(),priority:M.string().optional(),transport:Mj,authMethod:bj}),render:async({task:Y,priority:J,transport:Q,authMethod:$})=>{let Z=[];if(J)Z.push(`Prioritize: ${J}.`);if(Q)Z.push(`Required transport: ${Q}.`);if($)Z.push(`Required auth: ${$}.`);return[{type:"text",text:`Recommend the best AI model for: "${Y}".${Z.length?` ${Z.join(" ")}`:""} Use the leaderboard data to justify your recommendation.`},{type:"resource",uri:J?`ranking://leaderboard/${J}`:"ranking://leaderboard",title:"Leaderboard"}]}})),j}function hJ(){let j=new bJ,Y=zJ();return dj(j,CJ,async(J)=>{let Q=c(),$=J.source,Z=Y.get($);if(!Z)throw Error(`No ingester registered for source: ${$}`);let X=await Z.ingest({sourceUrl:J.sourceUrl,dimensions:J.dimensions}),U=kJ(X);for(let V of U)await Q.upsertBenchmarkResult(V);return{ingestionId:`ingest-${$}-${Date.now()}`,source:$,resultsCount:U.length,status:"completed",ingestedAt:new Date}}),dj(j,AJ,async(J)=>{return{runId:`custom-${Date.now()}`,evalSuiteKey:J.evalSuiteKey,modelId:J.modelId,status:"started",startedAt:new Date}}),dj(j,NJ,async(J)=>{let Q=c(),$=[],Z=0,X=500;while(!0){let H=await Q.listBenchmarkResults({limit:X,offset:Z});if($.push(...H.results),$.length>=H.total||H.results.length<X)break;Z+=X}let U=new Map((await Q.listModelRankings({limit:1e4})).rankings.map((H)=>[H.modelId,H])),V=J.weightOverrides?Array.isArray(J.weightOverrides)?J.weightOverrides:[J.weightOverrides]:void 0,B=EJ($,V?{weightOverrides:V}:void 0,U);for(let H of B)await Q.upsertModelRanking(H);return{modelsRanked:B.length,updatedAt:new Date,status:"completed"}}),j}function kZ(j="/api/mcp/ranking"){return A({logger:D,path:j,serverName:"contractspec-ranking-mcp",ops:hJ(),resources:OJ(),prompts:RJ()})}function vZ(j){_j=j}export{vZ as setProviderRankingStore,kZ as createProviderRankingMcpHandler,_Z as createInternalMcpHandler,wZ as createDocsMcpHandler,zQ as createContractsMcpHandler,yJ as createContextStorageService,FQ as createCliMcpHandler};
15
+ `)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(J)}`,title:"Contract reference"}]}})),Y}import{defineResourceTemplate as k,ResourceRegistry as s0}from"@contractspec/lib.contracts-spec";import F from"zod";var v=["docs","mcp"];function FY(j){let Y=new s0,J=(Q)=>d(j,Q);return Y.register(k({meta:{uriTemplate:"docs://index",title:"DocBlocks index",description:"Default ContractSpec docs index resource.",mimeType:"application/json",tags:v},input:F.object({}),resolve:async()=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(J({}),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://index{?query,tag,kind,visibility,limit,offset}",title:"DocBlocks index",description:"Search and paginate ContractSpec docs by query, tag, kind, or visibility.",mimeType:"application/json",tags:v},input:F.object({query:F.string().optional(),tag:F.string().optional(),kind:F.string().optional(),visibility:F.string().optional(),limit:F.coerce.number().optional(),offset:F.coerce.number().optional()}),resolve:async(Q)=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(J(Q),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://list",title:"DocBlocks index (legacy alias)",description:"Compatibility alias for the docs index resource.",mimeType:"application/json",tags:v},input:F.object({}),resolve:async()=>({uri:"docs://list",mimeType:"application/json",data:JSON.stringify(J({}),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://doc/{id}",title:"Doc markdown",description:"Fetch a single DocBlock body by id as markdown.",mimeType:"text/markdown",tags:v},input:F.object({id:F.string()}),resolve:async({id:Q})=>{let $=Hj(Q);if(!$)return{uri:`docs://doc/${encodeURIComponent(Q)}`,mimeType:"text/plain",data:`DocBlock not found: ${Q}`};return{uri:`docs://doc/${encodeURIComponent(Q)}`,mimeType:"text/markdown",data:$.content}}})),Y.register(k({meta:{uriTemplate:"docs://route/{routePath}",title:"Doc by route",description:"Resolve a docs route to the matching DocBlock summary and body.",mimeType:"application/json",tags:v},input:F.object({routePath:F.string()}),resolve:async({routePath:Q})=>({uri:`docs://route/${encodeURIComponent(Q)}`,mimeType:"application/json",data:JSON.stringify(Kj(j,Q)??{error:"not_found",route:Q},null,2)})})),Y.register(k({meta:{uriTemplate:"docs://facets",title:"Docs facets",description:"Counts of available tags, kinds, and visibilities across docs.",mimeType:"application/json",tags:v},input:F.object({}),resolve:async()=>({uri:"docs://facets",mimeType:"application/json",data:JSON.stringify(wj(j),null,2)})})),Y.register(k({meta:{uriTemplate:"docs://contract-reference/{key}{?version,type,includeSchema}",title:"Contract reference",description:"Resolve a ContractSpec surface into a docs-ready reference payload.",mimeType:"application/json",tags:v},input:F.object({key:F.string(),version:F.string().optional(),type:F.string().optional(),includeSchema:F.coerce.boolean().optional()}),resolve:async({key:Q,version:$,type:Z,includeSchema:X})=>({uri:`docs://contract-reference/${encodeURIComponent(Q)}`,mimeType:"application/json",data:JSON.stringify(p({key:Q,version:$,type:Z,includeSchema:X}),null,2)})})),Y}import{defineCommand as r,defineSchemaModel as l,installOp as e,OperationSpecRegistry as r0}from"@contractspec/lib.contracts-spec";import{ContractReferenceInput as e0,ContractReferenceOutput as jJ,DocsIndexInput as YJ,DocsIndexOutput as JJ}from"@contractspec/lib.contracts-spec/docs";import{ScalarTypeEnum as O}from"@contractspec/lib.schema";var jj=["@contractspec"],Yj=["docs","mcp"],QJ=l({name:"DocsGetInput",fields:{id:{type:O.String_unsecure(),isOptional:!1}}}),ZJ=l({name:"DocsGetOutput",fields:{doc:{type:O.JSON(),isOptional:!1},content:{type:O.String_unsecure(),isOptional:!1}}}),$J=l({name:"DocsResolveRouteInput",fields:{route:{type:O.String_unsecure(),isOptional:!1}}}),XJ=l({name:"DocsResolveRouteOutput",fields:{doc:{type:O.JSON(),isOptional:!1},content:{type:O.String_unsecure(),isOptional:!1}}}),UJ=l({name:"DocsFacetsInput",fields:{}}),VJ=l({name:"DocsFacetsOutput",fields:{facets:{type:O.JSON(),isOptional:!1}}});function BY(j){let Y=new r0;return e(Y,r({meta:{key:"docs.search",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Search ContractSpec docs by query, tag, kind, or visibility.",goal:"Find the most relevant DocBlocks without browsing the full corpus.",context:"Read-only docs MCP search surface."},io:{input:YJ,output:JJ},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_search-v1_0_0"}}}),async(J)=>d(j,J)),e(Y,r({meta:{key:"docs.get",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Read a single DocBlock by id.",goal:"Fetch the exact markdown content and metadata for a known doc id.",context:"Read-only docs MCP surface."},io:{input:QJ,output:ZJ},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_get-v1_0_0"}}}),async({id:J})=>{let Q=Hj(J);if(!Q)throw Error(`DocBlock not found: ${J}`);return Q}),e(Y,r({meta:{key:"docs.resolveRoute",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Resolve a docs route to the matching DocBlock.",goal:"Turn a route or URL path into a canonical doc id and markdown body.",context:"Read-only docs MCP surface."},io:{input:$J,output:XJ},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_resolve_route-v1_0_0"}}}),async({route:J})=>{let Q=Kj(j,J);if(!Q)throw Error(`Doc route not found: ${J}`);return Q}),e(Y,r({meta:{key:"docs.contract.lookup",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"Resolve a ContractSpec surface into a docs-ready reference payload.",goal:"Get canonical docs metadata, route, and optional schema for a spec key.",context:"Read-only docs MCP surface."},io:{input:e0,output:jJ},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_contract_reference-v1_0_0"}}}),async(J)=>p(J)),e(Y,r({meta:{key:"docs.list.facets",version:"1.0.0",stability:"beta",owners:jj,tags:Yj,description:"List docs taxonomy facets such as tags, kinds, and visibilities.",goal:"Help agents browse the docs corpus before making targeted reads.",context:"Read-only docs MCP surface."},io:{input:UJ,output:VJ},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_list_facets-v1_0_0"}}}),async()=>({facets:wj(j)})),Y}import{defaultDocRegistry as HJ}from"@contractspec/lib.contracts-spec/docs";function LZ(j="/api/mcp/docs",Y={}){let J=HJ.list();return A({logger:D,path:j,serverName:"contractspec-docs-mcp",ops:BY(J),resources:FY(J),prompts:wY(J),presentations:Y.includePresentations?J.map(({descriptor:Q})=>Q):void 0})}import{defineCommand as KJ,definePrompt as wJ,defineResourceTemplate as Lj,installOp as FJ,OperationSpecRegistry as BJ,PromptRegistry as WJ,ResourceRegistry as xJ}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as WY,ScalarTypeEnum as xY}from"@contractspec/lib.schema";import{getExample as PJ,listExamples as LJ,searchExamples as qJ}from"@contractspec/module.examples/catalog";import R from"zod";var n=["internal","mcp"],PY=["@contractspec"],Jj={docs:"/api/mcp/docs",cli:"/api/mcp/cli",internal:"/api/mcp/internal",graphql:"/graphql",health:"/health"};function _J(){let j=new xJ;return j.register(Lj({meta:{uriTemplate:"examples://list{?q}",title:"ContractSpec examples registry",description:"List available examples (templates, integrations, knowledge, scripts). Optional query `q` filters results.",mimeType:"application/json",tags:["examples",...n]},input:R.object({q:R.string().optional()}),resolve:async({q:Y})=>{let J=Y?qJ(Y):[...LJ()];return{uri:Y?`examples://list?q=${encodeURIComponent(Y)}`:"examples://list",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),j.register(Lj({meta:{uriTemplate:"examples://example/{id}",title:"ContractSpec example (by id)",description:"Fetch a single example manifest by id.",mimeType:"application/json",tags:["examples",...n]},input:R.object({id:R.string().min(1)}),resolve:async({id:Y})=>{let J=PJ(Y);if(!J)return{uri:`examples://example/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify({error:"not_found",id:Y,message:`Unknown example id: ${Y}`},null,2)};return{uri:`examples://example/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),j.register(Lj({meta:{uriTemplate:"internal://endpoints",title:"ContractSpec MCP endpoints",description:"Endpoints for docs, CLI, internal MCP servers.",mimeType:"application/json",tags:n},input:R.object({}),resolve:async()=>({uri:"internal://endpoints",mimeType:"application/json",data:JSON.stringify(Jj,null,2)})})),j.register(Lj({meta:{uriTemplate:"internal://playbook",title:"Internal MCP usage playbook",description:"How internal agents should discover docs, CLI usage, and endpoints.",mimeType:"text/markdown",tags:n},input:R.object({}),resolve:async()=>({uri:"internal://playbook",mimeType:"text/markdown",data:["# Internal MCP playbook","- Connect to docs MCP first for canonical specs.","- Use CLI MCP to surface quickstart/reference before running commands.","- Keep calls read-only unless explicitly approved.",`- Endpoints: ${Jj.docs}, ${Jj.cli}, ${Jj.internal}.`,"- For API work, GraphQL at /graphql; health at /health."].join(`
16
+ `)})})),j}function MJ(){let j=new WJ;return j.register(wJ({meta:{key:"internal_bootstrap",version:"1.0.0",title:"Bootstrap internal ContractSpec agent",description:"Points agents to the correct MCP endpoints and guardrails.",tags:n,owners:PY,stability:"beta"},args:[],input:R.object({}),render:async()=>[{type:"text",text:"Start with internal://endpoints to pick the right MCP. Use docs MCP for specifications and CLI MCP for commands. Keep actions read-only unless explicitly approved."},{type:"resource",uri:"internal://endpoints",title:"Endpoints"}]})),j}function bJ(){let j=new BJ,Y=WY({name:"InternalDescribeOutput",fields:{endpoints:{type:xY.JSONObject(),isOptional:!1},notes:{type:xY.String_unsecure(),isOptional:!1}}}),J=KJ({meta:{key:"internal_describe",version:"1.0.0",stability:"stable",owners:PY,tags:n,description:"Return MCP endpoints and guidance for internal ContractSpec agents.",goal:"Speed up internal development with the correct MCP entrypoints.",context:"Used by internal MCP surface; read-only."},io:{input:WY({name:"InternalDescribeInput",fields:{}}),output:Y},policy:{auth:"anonymous"}});return FJ(j,J,async()=>({endpoints:Jj,notes:"Use docs MCP for canonical specs, CLI MCP for contractspec commands, and keep side-effecting actions gated behind human review."})),j}function AZ(j="/api/mcp/internal"){return A({logger:D,path:j,serverName:"contractspec-internal-mcp",ops:bJ(),resources:_J(),prompts:MJ()})}import{getModelInfo as GJ}from"@contractspec/lib.ai-providers/models";import{definePrompt as DJ,defineResourceTemplate as qj,installOp as dj,OperationSpecRegistry as CJ,PromptRegistry as AJ,ResourceRegistry as NJ}from"@contractspec/lib.contracts-spec";import{BenchmarkIngestCommand as IJ,BenchmarkRunCustomCommand as zJ,RankingRefreshCommand as EJ}from"@contractspec/lib.contracts-spec/provider-ranking";import{InMemoryProviderRankingStore as kJ}from"@contractspec/lib.provider-ranking/in-memory-store";import{createDefaultIngesterRegistry as vJ}from"@contractspec/lib.provider-ranking/ingesters";import{computeModelRankings as OJ,normalizeBenchmarkResults as RJ}from"@contractspec/lib.provider-ranking/scoring";import M from"zod";var Mj=M.enum(["rest","mcp","webhook","sdk"]).optional(),bj=M.enum(["api-key","oauth2","bearer","header","basic","webhook-signing","service-account"]).optional(),Qj=["ranking","mcp","ai"],hJ=["platform.ai"],_j=null;function c(){if(!_j)_j=new kJ;return _j}function TJ(){let j=new NJ;return j.register(qj({meta:{uriTemplate:"ranking://leaderboard",title:"AI Model Leaderboard",description:"Current ranked list of AI models by composite score. Supports optional transport and authMethod query filters.",mimeType:"application/json",tags:Qj},input:M.object({transport:Mj,authMethod:bj}),resolve:async({transport:Y,authMethod:J})=>{let $=await c().listModelRankings({limit:100,requiredTransport:Y,requiredAuthMethod:J});return{uri:"ranking://leaderboard",mimeType:"application/json",data:JSON.stringify($,null,2)}}})),j.register(qj({meta:{uriTemplate:"ranking://leaderboard/{dimension}",title:"AI Model Leaderboard by Dimension",description:"Ranked list of AI models filtered by a specific dimension. Supports optional transport and authMethod query filters.",mimeType:"application/json",tags:Qj},input:M.object({dimension:M.string(),transport:Mj,authMethod:bj}),resolve:async({dimension:Y,transport:J,authMethod:Q})=>{let Z=await c().listModelRankings({dimension:Y,limit:100,requiredTransport:J,requiredAuthMethod:Q});return{uri:`ranking://leaderboard/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify(Z,null,2)}}})),j.register(qj({meta:{uriTemplate:"ranking://model/{modelId}",title:"AI Model Profile",description:"Detailed profile for a specific AI model including scores and benchmarks.",mimeType:"application/json",tags:Qj},input:M.object({modelId:M.string()}),resolve:async({modelId:Y})=>{let Q=await c().getModelProfile(Y);if(!Q)return{uri:`ranking://model/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify({error:"not_found",modelId:Y})};let $=Q.costPerMillion==null?(()=>{let Z=GJ(Q.modelId);return Z?.costPerMillion?{...Q,costPerMillion:Z.costPerMillion,displayName:Z.name,contextWindow:Z.contextWindow,capabilities:[...Z.capabilities.vision?["vision"]:[],...Z.capabilities.tools?["tools"]:[],...Z.capabilities.reasoning?["reasoning"]:[],...Z.capabilities.streaming?["streaming"]:[]]}:Q})():Q;return{uri:`ranking://model/${encodeURIComponent(Y)}`,mimeType:"application/json",data:JSON.stringify($,null,2)}}})),j.register(qj({meta:{uriTemplate:"ranking://results",title:"Benchmark Results",description:"List of raw benchmark results from all ingested sources.",mimeType:"application/json",tags:Qj},input:M.object({}),resolve:async()=>{let J=await c().listBenchmarkResults({limit:200});return{uri:"ranking://results",mimeType:"application/json",data:JSON.stringify(J,null,2)}}})),j}function fJ(){let j=new AJ;return j.register(DJ({meta:{key:"ranking.advisor",version:"1.0.0",title:"AI Model Advisor",description:"Which AI model is best for a given task? Uses the leaderboard to recommend.",tags:Qj,stability:"beta",owners:hJ},args:[{name:"task",description:"The task or use case to recommend a model for.",required:!0,schema:M.string()},{name:"priority",description:"Priority dimension (coding, reasoning, cost, latency, etc.).",required:!1,schema:M.string().optional()},{name:"transport",description:"Required transport type (rest, mcp, webhook, sdk).",required:!1,schema:Mj},{name:"authMethod",description:"Required auth method (api-key, oauth2, bearer, etc.).",required:!1,schema:bj}],input:M.object({task:M.string(),priority:M.string().optional(),transport:Mj,authMethod:bj}),render:async({task:Y,priority:J,transport:Q,authMethod:$})=>{let Z=[];if(J)Z.push(`Prioritize: ${J}.`);if(Q)Z.push(`Required transport: ${Q}.`);if($)Z.push(`Required auth: ${$}.`);return[{type:"text",text:`Recommend the best AI model for: "${Y}".${Z.length?` ${Z.join(" ")}`:""} Use the leaderboard data to justify your recommendation.`},{type:"resource",uri:J?`ranking://leaderboard/${J}`:"ranking://leaderboard",title:"Leaderboard"}]}})),j}function SJ(){let j=new CJ,Y=vJ();return dj(j,IJ,async(J)=>{let Q=c(),$=J.source,Z=Y.get($);if(!Z)throw Error(`No ingester registered for source: ${$}`);let X=await Z.ingest({sourceUrl:J.sourceUrl,dimensions:J.dimensions}),U=RJ(X);for(let V of U)await Q.upsertBenchmarkResult(V);return{ingestionId:`ingest-${$}-${Date.now()}`,source:$,resultsCount:U.length,status:"completed",ingestedAt:new Date}}),dj(j,zJ,async(J)=>{return{runId:`custom-${Date.now()}`,evalSuiteKey:J.evalSuiteKey,modelId:J.modelId,status:"started",startedAt:new Date}}),dj(j,EJ,async(J)=>{let Q=c(),$=[],Z=0,X=500;while(!0){let H=await Q.listBenchmarkResults({limit:X,offset:Z});if($.push(...H.results),$.length>=H.total||H.results.length<X)break;Z+=X}let U=new Map((await Q.listModelRankings({limit:1e4})).rankings.map((H)=>[H.modelId,H])),V=J.weightOverrides?Array.isArray(J.weightOverrides)?J.weightOverrides:[J.weightOverrides]:void 0,B=OJ($,V?{weightOverrides:V}:void 0,U);for(let H of B)await Q.upsertModelRanking(H);return{modelsRanked:B.length,updatedAt:new Date,status:"completed"}}),j}function fZ(j="/api/mcp/ranking"){return A({logger:D,path:j,serverName:"contractspec-ranking-mcp",ops:SJ(),resources:TJ(),prompts:fJ()})}function SZ(j){_j=j}export{SZ as setProviderRankingStore,fZ as createProviderRankingMcpHandler,AZ as createInternalMcpHandler,LZ as createDocsMcpHandler,hQ as createContractsMcpHandler,lJ as createContextStorageService,qQ as createCliMcpHandler};