@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,4 +1,4 @@
1
- import{Logger as k,LogLevel as C}from"@contractspec/lib.logger";function v(){return"production"}var s=()=>new k({level:C.INFO,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),O=s(),Ej=new k({level:C.WARN,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),Lj=new k({level:C.INFO,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});import{createNodeAdapters as r,onboarding as T}from"@contractspec/bundle.workspace";import{defineCommand as I,definePrompt as e,defineResourceTemplate as A,installOp as h}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as D,ScalarTypeEnum as K}from"@contractspec/lib.schema";import W from"zod";var w=["cli","mcp","onboarding"],q=["@contractspec"];function jj(j){return j?.split(",").map((Q)=>Q.trim()).filter(Boolean)}async function _(j={}){let Q=r({cwd:process.cwd(),silent:!0});return T.buildOnboardingPlan(Q,{forcedExampleKey:j.example,selectedTracks:jj(j.tracks)})}function S(j){j.register(A({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:w},input:W.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(T.listOnboardingTracks(),null,2)})})),j.register(A({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:w},input:W.object({id:W.string()}),resolve:async({id:Q})=>({uri:`onboarding://track/${Q}`,mimeType:"application/json",data:JSON.stringify(T.getOnboardingTrack(Q)??null,null,2)})})),j.register(A({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:w},input:W.object({example:W.string().optional(),id:W.enum(["agent-guide","human-guide"]),tracks:W.string().optional()}),resolve:async({example:Q,id:U,tracks:J})=>{let X=await _({example:Q,tracks:J});return{uri:`onboarding://artifacts/${U}`,mimeType:"text/markdown",data:U==="agent-guide"?X.guides.agentGuide:X.guides.humanGuide}}}))}function m(j){j.register(e({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:w,stability:"beta",owners:q},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:W.string().optional()}],input:W.object({goal:W.string().optional()}),render:async({goal:Q})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${Q?` Goal: ${Q}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function g(j){let Q=D({name:"OnboardingSuggestTracksInput",fields:{example:{type:K.String_unsecure(),isOptional:!0},tracks:{type:K.String_unsecure(),isOptional:!0}}}),U=D({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:K.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1},reason:{type:K.String_unsecure(),isOptional:!1},tracks:{type:K.String_unsecure(),isArray:!0,isOptional:!1}}}),J=D({name:"OnboardingRenderArtifactOutput",fields:{content:{type:K.String_unsecure(),isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1}}}),X=D({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:K.String_unsecure(),isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1}}});h(j,I({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:q,tags:w,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:Q,output:U},policy:{auth:"anonymous"}}),async({example:Z,tracks:Y})=>{let V=await _({example:Z,tracks:Y});return{nextCommands:V.nextCommands,primaryTrack:V.primaryTrack.id,reason:V.recommendations[0]?.reason??V.primaryTrack.summary,tracks:V.recommendations.map((H)=>H.track.id)}}),h(j,I({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:q,tags:w,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:D({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:K.String_unsecure(),isOptional:!1},example:{type:K.String_unsecure(),isOptional:!0},tracks:{type:K.String_unsecure(),isOptional:!0}}}),output:J},policy:{auth:"anonymous"}}),async({artifact:Z,example:Y,tracks:V})=>{let H=await _({example:Y,tracks:V});return{content:Z==="agent-guide"?H.guides.agentGuide:H.guides.humanGuide,primaryTrack:H.primaryTrack.id}}),h(j,I({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:q,tags:w,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:Q,output:X},policy:{auth:"anonymous"}}),async({example:Z,tracks:Y})=>{let V=await _({example:Z,tracks:Y});return{nextCommand:V.nextCommands[0]??"contractspec onboard",primaryTrack:V.primaryTrack.id}})}var u=["application/json","text/event-stream"];function Qj(j){return!j||j.includes("*/*")||j.includes("application/*")||u.some((Q)=>j.includes(Q))}function N(j){if(j.method!=="POST")return j;let Q=j.headers.get("accept");if(!Qj(Q))return j;let U=u.filter((X)=>!Q?.includes(X));if(U.length===0)return j;let J=new Headers(j.headers);return J.set("accept",[Q,...U].filter(Boolean).join(", ")),new Request(j,{headers:J})}import{createMcpServer as Uj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as Yj}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as Jj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as Vj}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as Xj}from"crypto";import{Elysia as Zj}from"elysia";var $j={actor:"anonymous",decide:async()=>({effect:"allow"})};function y(j,Q,U,J){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:Q,message:U,...J?{data:J}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function c({logger:j,serverName:Q,ops:U,resources:J,prompts:X,presentations:Z,stateful:Y}){let V=new Jj({name:Q,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),Uj(V,U,J,X,{logger:j,toolCtx:()=>$j,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new Yj(Z)});let H=new Vj({sessionIdGenerator:Y?()=>Xj():void 0,enableJsonResponse:!0});return V.connect(H).then(()=>({server:V,transport:H}))}async function f(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function Fj(j){return j instanceof Error?j.stack??j.message:String(j)}function d({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,validateAuth:V,requiredAuthMethods:H}){j.info("Setting up MCP handler...",{requiredAuthMethods:H??[]});let l=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",z=new Map;async function o($){let F=await c({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,stateful:!1});try{return await F.transport.handleRequest(N($))}finally{await f(F)}}async function t($){let F=z.get($);if(!F)return;z.delete($),await f(F)}async function a($){let F=$.headers.get("mcp-session-id"),P,R=!1;if(F){let x=z.get(F);if(!x)return y(404,-32001,"Session not found");P=x}else P=await c({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,stateful:!0}),R=!0;try{let x=await P.transport.handleRequest(N($)),B=P.transport.sessionId;if(B&&!z.has(B))z.set(B,P);if($.method==="DELETE"&&B)await t(B);else if(!B&&R)await f(P);return x}catch(x){if(R)await f(P);throw x}}return new Zj({name:`mcp-${U}`}).all(Q,async({request:$})=>{try{if(V){let F=await V($);if(!F.valid)return y(401,-32002,"Authentication failed",F.reason)}if(l)return await a($);return await o($)}catch(F){return j.error("Error handling MCP request",{path:Q,method:$.method,error:Fj(F)}),y(500,-32000,"Internal error")}})}import Kj from"node:fs/promises";import{defineCommand as Hj,definePrompt as Wj,defineResourceTemplate as i,installOp as Pj,OperationSpecRegistry as wj,PromptRegistry as xj,ResourceRegistry as Bj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as n,ScalarTypeEnum as b}from"@contractspec/lib.schema";import G from"path";import M from"zod";var __dirname="/home/runner/work/contractspec/contractspec/packages/bundles/library/src/application/mcp",Mj={quickstart:"packages/apps/cli-contractspec/QUICK_START.md",reference:"packages/apps/cli-contractspec/QUICK_REFERENCE.md",readme:"packages/apps/cli-contractspec/README.md"},zj={quickstart:`# ContractSpec CLI quickstart
1
+ var s=Object.defineProperty;var r=(j)=>j;function e(j,Q){this[j]=r.bind(null,Q)}var Rj=(j,Q)=>{for(var U in Q)s(j,U,{get:Q[U],enumerable:!0,configurable:!0,set:e.bind(Q,U)})};var kj=(j,Q)=>()=>(j&&(Q=j(j=0)),Q);import{Logger as k,LogLevel as C}from"@contractspec/lib.logger";function v(){return"production"}var jj=()=>new k({level:C.INFO,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),O=jj(),Ij=new k({level:C.WARN,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),Aj=new k({level:C.INFO,environment:v(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});import{createNodeAdapters as Qj,onboarding as T}from"@contractspec/bundle.workspace";import{defineCommand as I,definePrompt as Uj,defineResourceTemplate as A,installOp as h}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as D,ScalarTypeEnum as K}from"@contractspec/lib.schema";import W from"zod";var w=["cli","mcp","onboarding"],q=["@contractspec"];function Yj(j){return j?.split(",").map((Q)=>Q.trim()).filter(Boolean)}async function _(j={}){let Q=Qj({cwd:process.cwd(),silent:!0});return T.buildOnboardingPlan(Q,{forcedExampleKey:j.example,selectedTracks:Yj(j.tracks)})}function S(j){j.register(A({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:w},input:W.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(T.listOnboardingTracks(),null,2)})})),j.register(A({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:w},input:W.object({id:W.string()}),resolve:async({id:Q})=>({uri:`onboarding://track/${Q}`,mimeType:"application/json",data:JSON.stringify(T.getOnboardingTrack(Q)??null,null,2)})})),j.register(A({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:w},input:W.object({example:W.string().optional(),id:W.enum(["agent-guide","human-guide"]),tracks:W.string().optional()}),resolve:async({example:Q,id:U,tracks:J})=>{let X=await _({example:Q,tracks:J});return{uri:`onboarding://artifacts/${U}`,mimeType:"text/markdown",data:U==="agent-guide"?X.guides.agentGuide:X.guides.humanGuide}}}))}function m(j){j.register(Uj({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:w,stability:"beta",owners:q},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:W.string().optional()}],input:W.object({goal:W.string().optional()}),render:async({goal:Q})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${Q?` Goal: ${Q}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function g(j){let Q=D({name:"OnboardingSuggestTracksInput",fields:{example:{type:K.String_unsecure(),isOptional:!0},tracks:{type:K.String_unsecure(),isOptional:!0}}}),U=D({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:K.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1},reason:{type:K.String_unsecure(),isOptional:!1},tracks:{type:K.String_unsecure(),isArray:!0,isOptional:!1}}}),J=D({name:"OnboardingRenderArtifactOutput",fields:{content:{type:K.String_unsecure(),isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1}}}),X=D({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:K.String_unsecure(),isOptional:!1},primaryTrack:{type:K.String_unsecure(),isOptional:!1}}});h(j,I({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:q,tags:w,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:Q,output:U},policy:{auth:"anonymous"}}),async({example:Z,tracks:Y})=>{let V=await _({example:Z,tracks:Y});return{nextCommands:V.nextCommands,primaryTrack:V.primaryTrack.id,reason:V.recommendations[0]?.reason??V.primaryTrack.summary,tracks:V.recommendations.map((H)=>H.track.id)}}),h(j,I({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:q,tags:w,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:D({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:K.String_unsecure(),isOptional:!1},example:{type:K.String_unsecure(),isOptional:!0},tracks:{type:K.String_unsecure(),isOptional:!0}}}),output:J},policy:{auth:"anonymous"}}),async({artifact:Z,example:Y,tracks:V})=>{let H=await _({example:Y,tracks:V});return{content:Z==="agent-guide"?H.guides.agentGuide:H.guides.humanGuide,primaryTrack:H.primaryTrack.id}}),h(j,I({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:q,tags:w,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:Q,output:X},policy:{auth:"anonymous"}}),async({example:Z,tracks:Y})=>{let V=await _({example:Z,tracks:Y});return{nextCommand:V.nextCommands[0]??"contractspec onboard",primaryTrack:V.primaryTrack.id}})}var u=["application/json","text/event-stream"];function Jj(j){return!j||j.includes("*/*")||j.includes("application/*")||u.some((Q)=>j.includes(Q))}function N(j){if(j.method!=="POST")return j;let Q=j.headers.get("accept");if(!Jj(Q))return j;let U=u.filter((X)=>!Q?.includes(X));if(U.length===0)return j;let J=new Headers(j.headers);return J.set("accept",[Q,...U].filter(Boolean).join(", ")),new Request(j,{headers:J})}import{createMcpServer as Vj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as Xj}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as Zj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as $j}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as Fj}from"crypto";import{Elysia as Kj}from"elysia";var Hj={actor:"anonymous",decide:async()=>({effect:"allow"})};function y(j,Q,U,J){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:Q,message:U,...J?{data:J}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function c({logger:j,serverName:Q,ops:U,resources:J,prompts:X,presentations:Z,stateful:Y}){let V=new Zj({name:Q,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),Vj(V,U,J,X,{logger:j,toolCtx:()=>Hj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new Xj(Z)});let H=new $j({sessionIdGenerator:Y?()=>Fj():void 0,enableJsonResponse:!0});return V.connect(H).then(()=>({server:V,transport:H}))}async function f(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function Wj(j){return j instanceof Error?j.stack??j.message:String(j)}function d({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,validateAuth:V,requiredAuthMethods:H}){j.info("Setting up MCP handler...",{requiredAuthMethods:H??[]});let l=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",z=new Map;async function o($){let F=await c({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,stateful:!1});try{return await F.transport.handleRequest(N($))}finally{await f(F)}}async function t($){let F=z.get($);if(!F)return;z.delete($),await f(F)}async function a($){let F=$.headers.get("mcp-session-id"),P,R=!1;if(F){let x=z.get(F);if(!x)return y(404,-32001,"Session not found");P=x}else P=await c({logger:j,path:Q,serverName:U,ops:J,resources:X,prompts:Z,presentations:Y,stateful:!0}),R=!0;try{let x=await P.transport.handleRequest(N($)),B=P.transport.sessionId;if(B&&!z.has(B))z.set(B,P);if($.method==="DELETE"&&B)await t(B);else if(!B&&R)await f(P);return x}catch(x){if(R)await f(P);throw x}}return new Kj({name:`mcp-${U}`}).all(Q,async({request:$})=>{try{if(V){let F=await V($);if(!F.valid)return y(401,-32002,"Authentication failed",F.reason)}if(l)return await a($);return await o($)}catch(F){return j.error("Error handling MCP request",{path:Q,method:$.method,error:Wj(F)}),y(500,-32000,"Internal error")}})}import Pj from"node:fs/promises";import{defineCommand as wj,definePrompt as xj,defineResourceTemplate as i,installOp as Bj,OperationSpecRegistry as Mj,PromptRegistry as zj,ResourceRegistry as Dj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as n,ScalarTypeEnum as b}from"@contractspec/lib.schema";import G from"path";import M from"zod";var __dirname="/home/runner/work/contractspec/contractspec/packages/bundles/library/src/application/mcp",bj={quickstart:"packages/apps/cli-contractspec/QUICK_START.md",reference:"packages/apps/cli-contractspec/QUICK_REFERENCE.md",readme:"packages/apps/cli-contractspec/README.md"},Gj={quickstart:`# ContractSpec CLI quickstart
2
2
 
3
3
  contractspec quickstart
4
4
  contractspec onboard
@@ -6,4 +6,4 @@ 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.`},L=["cli","mcp"],p=["@contractspec"],Dj=(()=>{let j=new Set([process.cwd(),G.resolve(process.cwd(),".."),G.resolve(process.cwd(),"../.."),G.resolve(process.cwd(),"../../..")]);if(typeof __dirname==="string")j.add(G.resolve(__dirname,"../../../../.."));return[...j]})(),E=new Map;async function bj(j){if(E.has(j))return E.get(j);let Q=Mj[j];for(let J of Dj){let X=G.resolve(J,Q);try{let Z=await Kj.readFile(X,"utf8");return E.set(j,Z),Z}catch{}}let U=zj[j];return E.set(j,U),U}function Gj(){let j=new Bj;return j.register(i({meta:{uriTemplate:"cli://doc/{slug}",title:"CLI documentation",description:"Quickstart, reference, and README for the CLI.",mimeType:"text/markdown",tags:L},input:M.object({slug:M.enum(["quickstart","reference","readme"])}),resolve:async({slug:Q})=>{let U=await bj(Q);return{uri:`cli://doc/${Q}`,mimeType:"text/markdown",data:U}}})),j.register(i({meta:{uriTemplate:"cli://commands",title:"CLI commands summary",description:"Key ContractSpec CLI commands and when to use them.",mimeType:"application/json",tags:L},input:M.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)}}})),S(j),j}function qj(){let j=new xj;return j.register(Wj({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:L,stability:"beta",owners:p},args:[{name:"goal",description:"Task the user wants to achieve.",required:!1,schema:M.string().optional()}],input:M.object({goal:M.string().optional()}),render:async({goal:Q})=>[{type:"text",text:`Use CLI commands only from cli://commands. Prefer quickstart for newcomers and reference for options.${Q?` Goal: ${Q}.`:""}`},{type:"resource",uri:"cli://commands",title:"Commands"},{type:"resource",uri:"cli://doc/quickstart",title:"Quickstart"}]})),m(j),j}function _j(){let j=new wj,Q=n({name:"CliSuggestInput",fields:{goal:{type:b.String_unsecure(),isOptional:!1},prefersAi:{type:b.Boolean(),isOptional:!0}}}),U=n({name:"CliSuggestOutput",fields:{command:{type:b.String_unsecure(),isOptional:!1},docUri:{type:b.String_unsecure(),isOptional:!1},reason:{type:b.String_unsecure(),isOptional:!1}}}),J=Hj({meta:{key:"cli_suggestCommand",version:"1.0.0",stability:"stable",owners:p,tags:L,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:Q,output:U},policy:{auth:"anonymous"}});return Pj(j,J,async({goal:X,prefersAi:Z})=>{let Y=X.toLowerCase();if(Y.includes("onboard")||Y.includes("start")||Y.includes("guide")||Y.includes("install"))return{command:"contractspec onboard",docUri:"cli://doc/quickstart",reason:"Starts the CLI-first onboarding flow for the current repo."};if(Y.includes("create")||Y.includes("new"))return{command:Z?"contractspec create --ai":"contractspec create",docUri:"cli://doc/quickstart",reason:"Creates a new ContractSpec interactively (optionally with AI)."};if(Y.includes("build")||Y.includes("generate"))return{command:"contractspec build <path-to-spec>",docUri:"cli://doc/reference",reason:"Builds implementation code from a spec using agents + templates."};if(Y.includes("validate")||Y.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."}}),g(j),j}function aj(j="/api/mcp/cli"){return d({logger:O,path:j,serverName:"contractspec-cli-mcp",ops:_j(),resources:Gj(),prompts:qj()})}export{aj as createCliMcpHandler};
9
+ Stabilize AI-generated code across API, DB, UI, events. Use onboard/create/generate/validate commands.`},L=["cli","mcp"],p=["@contractspec"],qj=(()=>{let j=new Set([process.cwd(),G.resolve(process.cwd(),".."),G.resolve(process.cwd(),"../.."),G.resolve(process.cwd(),"../../..")]);if(typeof __dirname==="string")j.add(G.resolve(__dirname,"../../../../.."));return[...j]})(),E=new Map;async function _j(j){if(E.has(j))return E.get(j);let Q=bj[j];for(let J of qj){let X=G.resolve(J,Q);try{let Z=await Pj.readFile(X,"utf8");return E.set(j,Z),Z}catch{}}let U=Gj[j];return E.set(j,U),U}function fj(){let j=new Dj;return j.register(i({meta:{uriTemplate:"cli://doc/{slug}",title:"CLI documentation",description:"Quickstart, reference, and README for the CLI.",mimeType:"text/markdown",tags:L},input:M.object({slug:M.enum(["quickstart","reference","readme"])}),resolve:async({slug:Q})=>{let U=await _j(Q);return{uri:`cli://doc/${Q}`,mimeType:"text/markdown",data:U}}})),j.register(i({meta:{uriTemplate:"cli://commands",title:"CLI commands summary",description:"Key ContractSpec CLI commands and when to use them.",mimeType:"application/json",tags:L},input:M.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)}}})),S(j),j}function Ej(){let j=new zj;return j.register(xj({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:L,stability:"beta",owners:p},args:[{name:"goal",description:"Task the user wants to achieve.",required:!1,schema:M.string().optional()}],input:M.object({goal:M.string().optional()}),render:async({goal:Q})=>[{type:"text",text:`Use CLI commands only from cli://commands. Prefer quickstart for newcomers and reference for options.${Q?` Goal: ${Q}.`:""}`},{type:"resource",uri:"cli://commands",title:"Commands"},{type:"resource",uri:"cli://doc/quickstart",title:"Quickstart"}]})),m(j),j}function Lj(){let j=new Mj,Q=n({name:"CliSuggestInput",fields:{goal:{type:b.String_unsecure(),isOptional:!1},prefersAi:{type:b.Boolean(),isOptional:!0}}}),U=n({name:"CliSuggestOutput",fields:{command:{type:b.String_unsecure(),isOptional:!1},docUri:{type:b.String_unsecure(),isOptional:!1},reason:{type:b.String_unsecure(),isOptional:!1}}}),J=wj({meta:{key:"cli_suggestCommand",version:"1.0.0",stability:"stable",owners:p,tags:L,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:Q,output:U},policy:{auth:"anonymous"}});return Bj(j,J,async({goal:X,prefersAi:Z})=>{let Y=X.toLowerCase();if(Y.includes("onboard")||Y.includes("start")||Y.includes("guide")||Y.includes("install"))return{command:"contractspec onboard",docUri:"cli://doc/quickstart",reason:"Starts the CLI-first onboarding flow for the current repo."};if(Y.includes("create")||Y.includes("new"))return{command:Z?"contractspec create --ai":"contractspec create",docUri:"cli://doc/quickstart",reason:"Creates a new ContractSpec interactively (optionally with AI)."};if(Y.includes("build")||Y.includes("generate"))return{command:"contractspec build <path-to-spec>",docUri:"cli://doc/reference",reason:"Builds implementation code from a spec using agents + templates."};if(Y.includes("validate")||Y.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."}}),g(j),j}function UQ(j="/api/mcp/cli"){return d({logger:O,path:j,serverName:"contractspec-cli-mcp",ops:Lj(),resources:fj(),prompts:Ej()})}export{UQ as createCliMcpHandler};
@@ -1 +1 @@
1
- import{createNodeAdapters as P,onboarding as M}from"@contractspec/bundle.workspace";import{defineCommand as $,definePrompt as h,defineResourceTemplate as C,installOp as W}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as Q,ScalarTypeEnum as v}from"@contractspec/lib.schema";import F from"zod";var H=["cli","mcp","onboarding"],X=["@contractspec"];function b(j){return j?.split(",").map((q)=>q.trim()).filter(Boolean)}async function Y(j={}){let q=P({cwd:process.cwd(),silent:!0});return M.buildOnboardingPlan(q,{forcedExampleKey:j.example,selectedTracks:b(j.tracks)})}function _(j){j.register(C({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:H},input:F.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(M.listOnboardingTracks(),null,2)})})),j.register(C({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:H},input:F.object({id:F.string()}),resolve:async({id:q})=>({uri:`onboarding://track/${q}`,mimeType:"application/json",data:JSON.stringify(M.getOnboardingTrack(q)??null,null,2)})})),j.register(C({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:H},input:F.object({example:F.string().optional(),id:F.enum(["agent-guide","human-guide"]),tracks:F.string().optional()}),resolve:async({example:q,id:U,tracks:Z})=>{let V=await Y({example:q,tracks:Z});return{uri:`onboarding://artifacts/${U}`,mimeType:"text/markdown",data:U==="agent-guide"?V.guides.agentGuide:V.guides.humanGuide}}}))}function I(j){j.register(h({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:H,stability:"beta",owners:X},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:F.string().optional()}],input:F.object({goal:F.string().optional()}),render:async({goal:q})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${q?` Goal: ${q}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function f(j){let q=Q({name:"OnboardingSuggestTracksInput",fields:{example:{type:v.String_unsecure(),isOptional:!0},tracks:{type:v.String_unsecure(),isOptional:!0}}}),U=Q({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:v.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1},reason:{type:v.String_unsecure(),isOptional:!1},tracks:{type:v.String_unsecure(),isArray:!0,isOptional:!1}}}),Z=Q({name:"OnboardingRenderArtifactOutput",fields:{content:{type:v.String_unsecure(),isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1}}}),V=Q({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:v.String_unsecure(),isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1}}});W(j,$({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:X,tags:H,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:q,output:U},policy:{auth:"anonymous"}}),async({example:J,tracks:K})=>{let w=await Y({example:J,tracks:K});return{nextCommands:w.nextCommands,primaryTrack:w.primaryTrack.id,reason:w.recommendations[0]?.reason??w.primaryTrack.summary,tracks:w.recommendations.map((L)=>L.track.id)}}),W(j,$({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:X,tags:H,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:Q({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:v.String_unsecure(),isOptional:!1},example:{type:v.String_unsecure(),isOptional:!0},tracks:{type:v.String_unsecure(),isOptional:!0}}}),output:Z},policy:{auth:"anonymous"}}),async({artifact:J,example:K,tracks:w})=>{let L=await Y({example:K,tracks:w});return{content:J==="agent-guide"?L.guides.agentGuide:L.guides.humanGuide,primaryTrack:L.primaryTrack.id}}),W(j,$({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:X,tags:H,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:q,output:V},policy:{auth:"anonymous"}}),async({example:J,tracks:K})=>{let w=await Y({example:J,tracks:K});return{nextCommand:w.nextCommands[0]??"contractspec onboard",primaryTrack:w.primaryTrack.id}})}export{_ as registerCliOnboardingResources,I as registerCliOnboardingPrompts,f as registerCliOnboardingOps};
1
+ var P=Object.defineProperty;var h=(j)=>j;function b(j,q){this[j]=h.bind(null,q)}var D=(j,q)=>{for(var H in q)P(j,H,{get:q[H],enumerable:!0,configurable:!0,set:b.bind(q,H)})};var _=(j,q)=>()=>(j&&(q=j(j=0)),q);import{createNodeAdapters as x,onboarding as M}from"@contractspec/bundle.workspace";import{defineCommand as $,definePrompt as z,defineResourceTemplate as C,installOp as W}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as U,ScalarTypeEnum as v}from"@contractspec/lib.schema";import F from"zod";var J=["cli","mcp","onboarding"],X=["@contractspec"];function B(j){return j?.split(",").map((q)=>q.trim()).filter(Boolean)}async function Y(j={}){let q=x({cwd:process.cwd(),silent:!0});return M.buildOnboardingPlan(q,{forcedExampleKey:j.example,selectedTracks:B(j.tracks)})}function y(j){j.register(C({meta:{uriTemplate:"onboarding://tracks",title:"Onboarding tracks",description:"Primary ContractSpec onboarding tracks exposed by the CLI.",mimeType:"application/json",tags:J},input:F.object({}),resolve:async()=>({uri:"onboarding://tracks",mimeType:"application/json",data:JSON.stringify(M.listOnboardingTracks(),null,2)})})),j.register(C({meta:{uriTemplate:"onboarding://track/{id}",title:"Onboarding track",description:"Track-specific onboarding metadata and recommended commands.",mimeType:"application/json",tags:J},input:F.object({id:F.string()}),resolve:async({id:q})=>({uri:`onboarding://track/${q}`,mimeType:"application/json",data:JSON.stringify(M.getOnboardingTrack(q)??null,null,2)})})),j.register(C({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:J},input:F.object({example:F.string().optional(),id:F.enum(["agent-guide","human-guide"]),tracks:F.string().optional()}),resolve:async({example:q,id:H,tracks:Z})=>{let V=await Y({example:q,tracks:Z});return{uri:`onboarding://artifacts/${H}`,mimeType:"text/markdown",data:H==="agent-guide"?V.guides.agentGuide:V.guides.humanGuide}}}))}function R(j){j.register(z({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:J,stability:"beta",owners:X},args:[{name:"goal",description:"Repository onboarding goal or focus area.",required:!1,schema:F.string().optional()}],input:F.object({goal:F.string().optional()}),render:async({goal:q})=>[{type:"text",text:`Use onboarding://tracks and onboarding_suggestTracks-v1_0_0 before recommending repo-local ContractSpec adoption steps.${q?` Goal: ${q}.`:""}`},{type:"resource",uri:"onboarding://tracks",title:"Tracks"}]}))}function A(j){let q=U({name:"OnboardingSuggestTracksInput",fields:{example:{type:v.String_unsecure(),isOptional:!0},tracks:{type:v.String_unsecure(),isOptional:!0}}}),H=U({name:"OnboardingSuggestTracksOutput",fields:{nextCommands:{type:v.String_unsecure(),isArray:!0,isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1},reason:{type:v.String_unsecure(),isOptional:!1},tracks:{type:v.String_unsecure(),isArray:!0,isOptional:!1}}}),Z=U({name:"OnboardingRenderArtifactOutput",fields:{content:{type:v.String_unsecure(),isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1}}}),V=U({name:"OnboardingNextCommandOutput",fields:{nextCommand:{type:v.String_unsecure(),isOptional:!1},primaryTrack:{type:v.String_unsecure(),isOptional:!1}}});W(j,$({meta:{key:"onboarding.suggestTracks",version:"1.0.0",stability:"stable",owners:X,tags:J,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:q,output:H},policy:{auth:"anonymous"}}),async({example:K,tracks:L})=>{let w=await Y({example:K,tracks:L});return{nextCommands:w.nextCommands,primaryTrack:w.primaryTrack.id,reason:w.recommendations[0]?.reason??w.primaryTrack.summary,tracks:w.recommendations.map((Q)=>Q.track.id)}}),W(j,$({meta:{key:"onboarding.renderArtifacts",version:"1.0.0",stability:"stable",owners:X,tags:J,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:U({name:"OnboardingRenderArtifactInput",fields:{artifact:{type:v.String_unsecure(),isOptional:!1},example:{type:v.String_unsecure(),isOptional:!0},tracks:{type:v.String_unsecure(),isOptional:!0}}}),output:Z},policy:{auth:"anonymous"}}),async({artifact:K,example:L,tracks:w})=>{let Q=await Y({example:L,tracks:w});return{content:K==="agent-guide"?Q.guides.agentGuide:Q.guides.humanGuide,primaryTrack:Q.primaryTrack.id}}),W(j,$({meta:{key:"onboarding.nextCommand",version:"1.0.0",stability:"stable",owners:X,tags:J,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:q,output:V},policy:{auth:"anonymous"}}),async({example:K,tracks:L})=>{let w=await Y({example:K,tracks:L});return{nextCommand:w.nextCommands[0]??"contractspec onboard",primaryTrack:w.primaryTrack.id}})}export{y as registerCliOnboardingResources,R as registerCliOnboardingPrompts,A as registerCliOnboardingOps};
@@ -1 +1 @@
1
- var G=["application/json","text/event-stream"];function Z(f){return!f||f.includes("*/*")||f.includes("application/*")||G.some((E)=>f.includes(E))}function k(f){if(f.method!=="POST")return f;let E=f.headers.get("accept");if(!Z(E))return f;let w=G.filter((_)=>!E?.includes(_));if(w.length===0)return f;let z=new Headers(f.headers);return z.set("accept",[E,...w].filter(Boolean).join(", ")),new Request(f,{headers:z})}import{createMcpServer as $}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as x}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as H}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as W}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as c}from"crypto";import{Elysia as M}from"elysia";var b={actor:"anonymous",decide:async()=>({effect:"allow"})};function F(f,E,w,z){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:E,message:w,...z?{data:z}:{}},id:null}),{status:f,headers:{"content-type":"application/json"}})}function J({logger:f,serverName:E,ops:w,resources:z,prompts:_,presentations:O,stateful:Q}){let y=new H({name:E,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});f.info("Setting up MCP server..."),$(y,w,z,_,{logger:f,toolCtx:()=>b,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new x(O)});let T=new W({sessionIdGenerator:Q?()=>c():void 0,enableJsonResponse:!0});return y.connect(T).then(()=>({server:y,transport:T}))}async function U(f){await Promise.allSettled([f.transport.close(),f.server.close()])}function A(f){return f instanceof Error?f.stack??f.message:String(f)}function v({logger:f,path:E,serverName:w,ops:z,resources:_,prompts:O,presentations:Q,validateAuth:y,requiredAuthMethods:T}){f.info("Setting up MCP handler...",{requiredAuthMethods:T??[]});let K=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",D=new Map;async function L(R){let j=await J({logger:f,path:E,serverName:w,ops:z,resources:_,prompts:O,presentations:Q,stateful:!1});try{return await j.transport.handleRequest(k(R))}finally{await U(j)}}async function V(R){let j=D.get(R);if(!j)return;D.delete(R),await U(j)}async function X(R){let j=R.headers.get("mcp-session-id"),P,Y=!1;if(j){let B=D.get(j);if(!B)return F(404,-32001,"Session not found");P=B}else P=await J({logger:f,path:E,serverName:w,ops:z,resources:_,prompts:O,presentations:Q,stateful:!0}),Y=!0;try{let B=await P.transport.handleRequest(k(R)),C=P.transport.sessionId;if(C&&!D.has(C))D.set(C,P);if(R.method==="DELETE"&&C)await V(C);else if(!C&&Y)await U(P);return B}catch(B){if(Y)await U(P);throw B}}return new M({name:`mcp-${w}`}).all(E,async({request:R})=>{try{if(y){let j=await y(R);if(!j.valid)return F(401,-32002,"Authentication failed",j.reason)}if(K)return await X(R);return await L(R)}catch(j){return f.error("Error handling MCP request",{path:E,method:R.method,error:A(j)}),F(500,-32000,"Internal error")}})}export{v as createMcpElysiaHandler};
1
+ var Z=Object.defineProperty;var $=(f)=>f;function x(f,E){this[f]=$.bind(null,E)}var I=(f,E)=>{for(var R in E)Z(f,R,{get:E[R],enumerable:!0,configurable:!0,set:x.bind(E,R)})};var l=(f,E)=>()=>(f&&(E=f(f=0)),E);var G=["application/json","text/event-stream"];function H(f){return!f||f.includes("*/*")||f.includes("application/*")||G.some((E)=>f.includes(E))}function k(f){if(f.method!=="POST")return f;let E=f.headers.get("accept");if(!H(E))return f;let R=G.filter((_)=>!E?.includes(_));if(R.length===0)return f;let z=new Headers(f.headers);return z.set("accept",[E,...R].filter(Boolean).join(", ")),new Request(f,{headers:z})}import{createMcpServer as W}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as c}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as M}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as b}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as A}from"crypto";import{Elysia as N}from"elysia";var n={actor:"anonymous",decide:async()=>({effect:"allow"})};function F(f,E,R,z){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:E,message:R,...z?{data:z}:{}},id:null}),{status:f,headers:{"content-type":"application/json"}})}function J({logger:f,serverName:E,ops:R,resources:z,prompts:_,presentations:O,stateful:Q}){let y=new M({name:E,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});f.info("Setting up MCP server..."),W(y,R,z,_,{logger:f,toolCtx:()=>n,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new c(O)});let T=new b({sessionIdGenerator:Q?()=>A():void 0,enableJsonResponse:!0});return y.connect(T).then(()=>({server:y,transport:T}))}async function U(f){await Promise.allSettled([f.transport.close(),f.server.close()])}function m(f){return f instanceof Error?f.stack??f.message:String(f)}function o({logger:f,path:E,serverName:R,ops:z,resources:_,prompts:O,presentations:Q,validateAuth:y,requiredAuthMethods:T}){f.info("Setting up MCP handler...",{requiredAuthMethods:T??[]});let K=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",D=new Map;async function L(j){let w=await J({logger:f,path:E,serverName:R,ops:z,resources:_,prompts:O,presentations:Q,stateful:!1});try{return await w.transport.handleRequest(k(j))}finally{await U(w)}}async function V(j){let w=D.get(j);if(!w)return;D.delete(j),await U(w)}async function X(j){let w=j.headers.get("mcp-session-id"),P,Y=!1;if(w){let B=D.get(w);if(!B)return F(404,-32001,"Session not found");P=B}else P=await J({logger:f,path:E,serverName:R,ops:z,resources:_,prompts:O,presentations:Q,stateful:!0}),Y=!0;try{let B=await P.transport.handleRequest(k(j)),C=P.transport.sessionId;if(C&&!D.has(C))D.set(C,P);if(j.method==="DELETE"&&C)await V(C);else if(!C&&Y)await U(P);return B}catch(B){if(Y)await U(P);throw B}}return new N({name:`mcp-${R}`}).all(E,async({request:j})=>{try{if(y){let w=await y(j);if(!w.valid)return F(401,-32002,"Authentication failed",w.reason)}if(K)return await X(j);return await L(j)}catch(w){return f.error("Error handling MCP request",{path:E,method:j.method,error:m(w)}),F(500,-32000,"Internal error")}})}export{o as createMcpElysiaHandler};
@@ -1,2 +1,2 @@
1
- import{Logger as O,LogLevel as E}from"@contractspec/lib.logger";function f(){return"production"}var a=()=>new O({level:E.INFO,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),d=a(),xj=new O({level:E.WARN,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),Bj=new O({level:E.INFO,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});var m=["application/json","text/event-stream"];function t(j){return!j||j.includes("*/*")||j.includes("application/*")||m.some((_)=>j.includes(_))}function T(j){if(j.method!=="POST")return j;let _=j.headers.get("accept");if(!t(_))return j;let w=m.filter((Z)=>!_?.includes(Z));if(w.length===0)return j;let Y=new Headers(j.headers);return Y.set("accept",[_,...w].filter(Boolean).join(", ")),new Request(j,{headers:Y})}import{createMcpServer as r}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as s}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as e}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as jj}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as _j}from"crypto";import{Elysia as wj}from"elysia";var Qj={actor:"anonymous",decide:async()=>({effect:"allow"})};function h(j,_,w,Y){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:_,message:w,...Y?{data:Y}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function u({logger:j,serverName:_,ops:w,resources:Y,prompts:Z,presentations:D,stateful:$}){let F=new e({name:_,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),r(F,w,Y,Z,{logger:j,toolCtx:()=>Qj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new s(D)});let J=new jj({sessionIdGenerator:$?()=>_j():void 0,enableJsonResponse:!0});return F.connect(J).then(()=>({server:F,transport:J}))}async function M(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function Yj(j){return j instanceof Error?j.stack??j.message:String(j)}function l({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,validateAuth:F,requiredAuthMethods:J}){j.info("Setting up MCP handler...",{requiredAuthMethods:J??[]});let H=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",k=new Map;async function P(K){let X=await u({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,stateful:!1});try{return await X.transport.handleRequest(T(K))}finally{await M(X)}}async function z(K){let X=k.get(K);if(!X)return;k.delete(K),await M(X)}async function o(K){let X=K.headers.get("mcp-session-id"),V,q=!1;if(X){let C=k.get(X);if(!C)return h(404,-32001,"Session not found");V=C}else V=await u({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,stateful:!0}),q=!0;try{let C=await V.transport.handleRequest(T(K)),W=V.transport.sessionId;if(W&&!k.has(W))k.set(W,V);if(K.method==="DELETE"&&W)await z(W);else if(!W&&q)await M(V);return C}catch(C){if(q)await M(V);throw C}}return new wj({name:`mcp-${w}`}).all(_,async({request:K})=>{try{if(F){let X=await F(K);if(!X.valid)return h(401,-32002,"Authentication failed",X.reason)}if(H)return await o(K);return await P(K)}catch(X){return j.error("Error handling MCP request",{path:_,method:K.method,error:Yj(X)}),h(500,-32000,"Internal error")}})}import{definePrompt as kj,defineResourceTemplate as A,PromptRegistry as Fj,ResourceRegistry as Jj}from"@contractspec/lib.contracts-spec";import U from"zod";var Kj=["@contractspec"],b=["contracts","mcp"];function n(j){let _=new Jj;return _.register(A({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:b},input:U.object({path:U.string()}),resolve:async({path:w})=>{let Y=await j.getSpec(w);if(!Y)return{uri:`contracts://spec/${encodeURIComponent(w)}`,mimeType:"text/plain",data:`Spec not found: ${w}`};return{uri:`contracts://spec/${encodeURIComponent(w)}`,mimeType:"text/plain",data:Y.content}}})),_.register(A({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:b},input:U.object({family:U.string()}),resolve:async({family:w})=>{let Y=await j.resolveAdoption({family:w,query:w});return{uri:`adoption://policy/${encodeURIComponent(w)}`,mimeType:"application/json",data:JSON.stringify(Y,null,2)}}})),_}function c(){let j=new Fj;return j.register(kj({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:b,stability:"beta",owners:Kj},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:U.string().optional()}],input:U.object({goal:U.string().optional()}),render:async({goal:_})=>[{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",_?`Agent goal: ${_}`:""].filter(Boolean).join(`
2
- `)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}import{defineCommand as v,installOp as g}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as G,ScalarTypeEnum as x}from"@contractspec/lib.schema";var y=["@contractspec"],S=["contracts","mcp","adoption"];function i(j,_){let w=G({name:"AdoptionCatalogSearchInput",fields:{query:{type:x.String_unsecure(),isOptional:!1},family:{type:x.String_unsecure(),isOptional:!0},platform:{type:x.String_unsecure(),isOptional:!0}}}),Y=G({name:"AdoptionCatalogSearchOutput",fields:{results:{type:x.JSON(),isOptional:!1}}});g(j,v({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:y,tags:S,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"anonymous"}}),async({family:J,platform:H,query:k})=>({results:await _.searchAdoptionCatalog({family:J,platform:H,query:k})}));let Z=G({name:"AdoptionResolveInput",fields:{family:{type:x.String_unsecure(),isOptional:!1},query:{type:x.String_unsecure(),isOptional:!1},paths:{type:x.JSON(),isOptional:!0},platform:{type:x.String_unsecure(),isOptional:!0},runtime:{type:x.String_unsecure(),isOptional:!0}}}),D=G({name:"AdoptionResolveOutput",fields:{resolution:{type:x.JSON(),isOptional:!1}}});g(j,v({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:y,tags:S,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:Z,output:D},policy:{auth:"anonymous"}}),async({family:J,paths:H,platform:k,query:P,runtime:z})=>({resolution:await _.resolveAdoption({family:J,paths:Array.isArray(H)?H:void 0,platform:k,query:P,runtime:z})}));let $=G({name:"AdoptionSyncInput",fields:{}}),F=G({name:"AdoptionSyncOutput",fields:{catalogPath:{type:x.String_unsecure(),isOptional:!1},total:{type:x.Int_unsecure(),isOptional:!1}}});g(j,v({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:y,tags:S,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:$,output:F},policy:{auth:"user"}}),async()=>_.syncAdoptionCatalog())}import{defineCommand as L,installOp as I,OperationSpecRegistry as Xj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as B,ScalarTypeEnum as Q}from"@contractspec/lib.schema";var N=["@contractspec"],R=["contracts","mcp"];function p(j){let _=new Xj,w=B({name:"ContractsListInput",fields:{pattern:{type:Q.String_unsecure(),isOptional:!0},type:{type:Q.String_unsecure(),isOptional:!0}}}),Y=B({name:"ContractsListOutput",fields:{specs:{type:Q.JSON(),isOptional:!1},total:{type:Q.Int_unsecure(),isOptional:!1}}});I(_,L({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"anonymous"}}),async({pattern:k,type:P})=>{let z=await j.listSpecs({pattern:k,type:P});return{specs:z,total:z.length}});let Z=B({name:"ContractsGetInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1}}}),D=B({name:"ContractsGetOutput",fields:{content:{type:Q.String_unsecure(),isOptional:!1},info:{type:Q.JSON(),isOptional:!1}}});I(_,L({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:Z,output:D},policy:{auth:"anonymous"}}),async({path:k})=>{let P=await j.getSpec(k);if(!P)throw Error(`Spec not found: ${k}`);return P});let $=B({name:"ContractsValidateInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1}}}),F=B({name:"ContractsValidateOutput",fields:{valid:{type:Q.Boolean(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1},warnings:{type:Q.JSON(),isOptional:!1}}});I(_,L({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:$,output:F},policy:{auth:"anonymous"}}),async({path:k})=>j.validateSpec(k));let J=B({name:"ContractsBuildInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},dryRun:{type:Q.Boolean(),isOptional:!0}}}),H=B({name:"ContractsBuildOutput",fields:{results:{type:Q.JSON(),isOptional:!1}}});return I(_,L({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:J,output:H},policy:{auth:"user"}}),async({path:k,dryRun:P})=>j.buildSpec(k,{dryRun:P})),Zj(_,j),i(_,j),_}function Zj(j,_){let w=B({name:"ContractsUpdateInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},content:{type:Q.String_unsecure(),isOptional:!0},fields:{type:Q.JSON(),isOptional:!0}}}),Y=B({name:"ContractsUpdateOutput",fields:{updated:{type:Q.Boolean(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1},warnings:{type:Q.JSON(),isOptional:!1}}});I(j,L({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"user"}}),async({path:$,content:F,fields:J})=>_.updateSpec($,{content:F,fields:Array.isArray(J)?J:void 0}));let Z=B({name:"ContractsDeleteInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},clean:{type:Q.Boolean(),isOptional:!0}}}),D=B({name:"ContractsDeleteOutput",fields:{deleted:{type:Q.Boolean(),isOptional:!1},cleanedFiles:{type:Q.JSON(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1}}});I(j,L({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:N,tags:R,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:Z,output:D},policy:{auth:"user"}}),async({path:$,clean:F})=>_.deleteSpec($,{clean:F}))}function yj(j="/api/mcp/contracts",_){return l({logger:d,path:j,serverName:"contractspec-contracts-mcp",ops:p(_),resources:n(_),prompts:c()})}export{yj as createContractsMcpHandler};
1
+ var a=Object.defineProperty;var t=(j)=>j;function r(j,_){this[j]=t.bind(null,_)}var Dj=(j,_)=>{for(var w in _)a(j,w,{get:_[w],enumerable:!0,configurable:!0,set:r.bind(_,w)})};var Pj=(j,_)=>()=>(j&&(_=j(j=0)),_);import{Logger as O,LogLevel as E}from"@contractspec/lib.logger";function f(){return"production"}var s=()=>new O({level:E.INFO,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),d=s(),Vj=new O({level:E.WARN,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),zj=new O({level:E.INFO,environment:f(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});var m=["application/json","text/event-stream"];function e(j){return!j||j.includes("*/*")||j.includes("application/*")||m.some((_)=>j.includes(_))}function T(j){if(j.method!=="POST")return j;let _=j.headers.get("accept");if(!e(_))return j;let w=m.filter((Z)=>!_?.includes(Z));if(w.length===0)return j;let Y=new Headers(j.headers);return Y.set("accept",[_,...w].filter(Boolean).join(", ")),new Request(j,{headers:Y})}import{createMcpServer as jj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as _j}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as wj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as Qj}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as Yj}from"crypto";import{Elysia as kj}from"elysia";var Fj={actor:"anonymous",decide:async()=>({effect:"allow"})};function h(j,_,w,Y){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:_,message:w,...Y?{data:Y}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function u({logger:j,serverName:_,ops:w,resources:Y,prompts:Z,presentations:D,stateful:$}){let F=new wj({name:_,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),jj(F,w,Y,Z,{logger:j,toolCtx:()=>Fj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new _j(D)});let J=new Qj({sessionIdGenerator:$?()=>Yj():void 0,enableJsonResponse:!0});return F.connect(J).then(()=>({server:F,transport:J}))}async function M(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function Jj(j){return j instanceof Error?j.stack??j.message:String(j)}function l({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,validateAuth:F,requiredAuthMethods:J}){j.info("Setting up MCP handler...",{requiredAuthMethods:J??[]});let H=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",k=new Map;async function P(K){let X=await u({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,stateful:!1});try{return await X.transport.handleRequest(T(K))}finally{await M(X)}}async function z(K){let X=k.get(K);if(!X)return;k.delete(K),await M(X)}async function o(K){let X=K.headers.get("mcp-session-id"),V,q=!1;if(X){let C=k.get(X);if(!C)return h(404,-32001,"Session not found");V=C}else V=await u({logger:j,path:_,serverName:w,ops:Y,resources:Z,prompts:D,presentations:$,stateful:!0}),q=!0;try{let C=await V.transport.handleRequest(T(K)),W=V.transport.sessionId;if(W&&!k.has(W))k.set(W,V);if(K.method==="DELETE"&&W)await z(W);else if(!W&&q)await M(V);return C}catch(C){if(q)await M(V);throw C}}return new kj({name:`mcp-${w}`}).all(_,async({request:K})=>{try{if(F){let X=await F(K);if(!X.valid)return h(401,-32002,"Authentication failed",X.reason)}if(H)return await o(K);return await P(K)}catch(X){return j.error("Error handling MCP request",{path:_,method:K.method,error:Jj(X)}),h(500,-32000,"Internal error")}})}import{definePrompt as Kj,defineResourceTemplate as A,PromptRegistry as Xj,ResourceRegistry as Zj}from"@contractspec/lib.contracts-spec";import U from"zod";var $j=["@contractspec"],b=["contracts","mcp"];function n(j){let _=new Zj;return _.register(A({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:b},input:U.object({path:U.string()}),resolve:async({path:w})=>{let Y=await j.getSpec(w);if(!Y)return{uri:`contracts://spec/${encodeURIComponent(w)}`,mimeType:"text/plain",data:`Spec not found: ${w}`};return{uri:`contracts://spec/${encodeURIComponent(w)}`,mimeType:"text/plain",data:Y.content}}})),_.register(A({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:b},input:U.object({}),resolve:async()=>{let w=await j.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(w,null,2)}}})),_.register(A({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:b},input:U.object({family:U.string()}),resolve:async({family:w})=>{let Y=await j.resolveAdoption({family:w,query:w});return{uri:`adoption://policy/${encodeURIComponent(w)}`,mimeType:"application/json",data:JSON.stringify(Y,null,2)}}})),_}function c(){let j=new Xj;return j.register(Kj({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:b,stability:"beta",owners:$j},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:U.string().optional()}],input:U.object({goal:U.string().optional()}),render:async({goal:_})=>[{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",_?`Agent goal: ${_}`:""].filter(Boolean).join(`
2
+ `)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}import{defineCommand as v,installOp as g}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as G,ScalarTypeEnum as x}from"@contractspec/lib.schema";var y=["@contractspec"],S=["contracts","mcp","adoption"];function i(j,_){let w=G({name:"AdoptionCatalogSearchInput",fields:{query:{type:x.String_unsecure(),isOptional:!1},family:{type:x.String_unsecure(),isOptional:!0},platform:{type:x.String_unsecure(),isOptional:!0}}}),Y=G({name:"AdoptionCatalogSearchOutput",fields:{results:{type:x.JSON(),isOptional:!1}}});g(j,v({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:y,tags:S,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"anonymous"}}),async({family:J,platform:H,query:k})=>({results:await _.searchAdoptionCatalog({family:J,platform:H,query:k})}));let Z=G({name:"AdoptionResolveInput",fields:{family:{type:x.String_unsecure(),isOptional:!1},query:{type:x.String_unsecure(),isOptional:!1},paths:{type:x.JSON(),isOptional:!0},platform:{type:x.String_unsecure(),isOptional:!0},runtime:{type:x.String_unsecure(),isOptional:!0}}}),D=G({name:"AdoptionResolveOutput",fields:{resolution:{type:x.JSON(),isOptional:!1}}});g(j,v({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:y,tags:S,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:Z,output:D},policy:{auth:"anonymous"}}),async({family:J,paths:H,platform:k,query:P,runtime:z})=>({resolution:await _.resolveAdoption({family:J,paths:Array.isArray(H)?H:void 0,platform:k,query:P,runtime:z})}));let $=G({name:"AdoptionSyncInput",fields:{}}),F=G({name:"AdoptionSyncOutput",fields:{catalogPath:{type:x.String_unsecure(),isOptional:!1},total:{type:x.Int_unsecure(),isOptional:!1}}});g(j,v({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:y,tags:S,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:$,output:F},policy:{auth:"user"}}),async()=>_.syncAdoptionCatalog())}import{defineCommand as L,installOp as I,OperationSpecRegistry as xj}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as B,ScalarTypeEnum as Q}from"@contractspec/lib.schema";var N=["@contractspec"],R=["contracts","mcp"];function p(j){let _=new xj,w=B({name:"ContractsListInput",fields:{pattern:{type:Q.String_unsecure(),isOptional:!0},type:{type:Q.String_unsecure(),isOptional:!0}}}),Y=B({name:"ContractsListOutput",fields:{specs:{type:Q.JSON(),isOptional:!1},total:{type:Q.Int_unsecure(),isOptional:!1}}});I(_,L({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"anonymous"}}),async({pattern:k,type:P})=>{let z=await j.listSpecs({pattern:k,type:P});return{specs:z,total:z.length}});let Z=B({name:"ContractsGetInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1}}}),D=B({name:"ContractsGetOutput",fields:{content:{type:Q.String_unsecure(),isOptional:!1},info:{type:Q.JSON(),isOptional:!1}}});I(_,L({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:Z,output:D},policy:{auth:"anonymous"}}),async({path:k})=>{let P=await j.getSpec(k);if(!P)throw Error(`Spec not found: ${k}`);return P});let $=B({name:"ContractsValidateInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1}}}),F=B({name:"ContractsValidateOutput",fields:{valid:{type:Q.Boolean(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1},warnings:{type:Q.JSON(),isOptional:!1}}});I(_,L({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:$,output:F},policy:{auth:"anonymous"}}),async({path:k})=>j.validateSpec(k));let J=B({name:"ContractsBuildInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},dryRun:{type:Q.Boolean(),isOptional:!0}}}),H=B({name:"ContractsBuildOutput",fields:{results:{type:Q.JSON(),isOptional:!1}}});return I(_,L({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:J,output:H},policy:{auth:"user"}}),async({path:k,dryRun:P})=>j.buildSpec(k,{dryRun:P})),Bj(_,j),i(_,j),_}function Bj(j,_){let w=B({name:"ContractsUpdateInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},content:{type:Q.String_unsecure(),isOptional:!0},fields:{type:Q.JSON(),isOptional:!0}}}),Y=B({name:"ContractsUpdateOutput",fields:{updated:{type:Q.Boolean(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1},warnings:{type:Q.JSON(),isOptional:!1}}});I(j,L({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:N,tags:R,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:w,output:Y},policy:{auth:"user"}}),async({path:$,content:F,fields:J})=>_.updateSpec($,{content:F,fields:Array.isArray(J)?J:void 0}));let Z=B({name:"ContractsDeleteInput",fields:{path:{type:Q.String_unsecure(),isOptional:!1},clean:{type:Q.Boolean(),isOptional:!0}}}),D=B({name:"ContractsDeleteOutput",fields:{deleted:{type:Q.Boolean(),isOptional:!1},cleanedFiles:{type:Q.JSON(),isOptional:!1},errors:{type:Q.JSON(),isOptional:!1}}});I(j,L({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:N,tags:R,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:Z,output:D},policy:{auth:"user"}}),async({path:$,clean:F})=>_.deleteSpec($,{clean:F}))}function nj(j="/api/mcp/contracts",_){return l({logger:d,path:j,serverName:"contractspec-contracts-mcp",ops:p(_),resources:n(_),prompts:c()})}export{nj as createContractsMcpHandler};
@@ -1 +1 @@
1
- import{defineCommand as F,installOp as H}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as k,ScalarTypeEnum as j}from"@contractspec/lib.schema";var J=["@contractspec"],K=["contracts","mcp","adoption"];function b(x,z){let L=k({name:"AdoptionCatalogSearchInput",fields:{query:{type:j.String_unsecure(),isOptional:!1},family:{type:j.String_unsecure(),isOptional:!0},platform:{type:j.String_unsecure(),isOptional:!0}}}),P=k({name:"AdoptionCatalogSearchOutput",fields:{results:{type:j.JSON(),isOptional:!1}}});H(x,F({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:J,tags:K,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:L,output:P},policy:{auth:"anonymous"}}),async({family:B,platform:w,query:D})=>({results:await z.searchAdoptionCatalog({family:B,platform:w,query:D})}));let Q=k({name:"AdoptionResolveInput",fields:{family:{type:j.String_unsecure(),isOptional:!1},query:{type:j.String_unsecure(),isOptional:!1},paths:{type:j.JSON(),isOptional:!0},platform:{type:j.String_unsecure(),isOptional:!0},runtime:{type:j.String_unsecure(),isOptional:!0}}}),U=k({name:"AdoptionResolveOutput",fields:{resolution:{type:j.JSON(),isOptional:!1}}});H(x,F({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:J,tags:K,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:Q,output:U},policy:{auth:"anonymous"}}),async({family:B,paths:w,platform:D,query:Y,runtime:Z})=>({resolution:await z.resolveAdoption({family:B,paths:Array.isArray(w)?w:void 0,platform:D,query:Y,runtime:Z})}));let V=k({name:"AdoptionSyncInput",fields:{}}),X=k({name:"AdoptionSyncOutput",fields:{catalogPath:{type:j.String_unsecure(),isOptional:!1},total:{type:j.Int_unsecure(),isOptional:!1}}});H(x,F({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:J,tags:K,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:V,output:X},policy:{auth:"user"}}),async()=>z.syncAdoptionCatalog())}export{b as registerAdoptionOps};
1
+ var _=Object.defineProperty;var $=(j)=>j;function b(j,k){this[j]=$.bind(null,k)}var A=(j,k)=>{for(var z in k)_(j,z,{get:k[z],enumerable:!0,configurable:!0,set:b.bind(k,z)})};var C=(j,k)=>()=>(j&&(k=j(j=0)),k);import{defineCommand as H,installOp as J}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as x,ScalarTypeEnum as w}from"@contractspec/lib.schema";var K=["@contractspec"],L=["contracts","mcp","adoption"];function W(j,k){let z=x({name:"AdoptionCatalogSearchInput",fields:{query:{type:w.String_unsecure(),isOptional:!1},family:{type:w.String_unsecure(),isOptional:!0},platform:{type:w.String_unsecure(),isOptional:!0}}}),P=x({name:"AdoptionCatalogSearchOutput",fields:{results:{type:w.JSON(),isOptional:!1}}});J(j,H({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:K,tags:L,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:z,output:P},policy:{auth:"anonymous"}}),async({family:D,platform:B,query:F})=>({results:await k.searchAdoptionCatalog({family:D,platform:B,query:F})}));let Q=x({name:"AdoptionResolveInput",fields:{family:{type:w.String_unsecure(),isOptional:!1},query:{type:w.String_unsecure(),isOptional:!1},paths:{type:w.JSON(),isOptional:!0},platform:{type:w.String_unsecure(),isOptional:!0},runtime:{type:w.String_unsecure(),isOptional:!0}}}),U=x({name:"AdoptionResolveOutput",fields:{resolution:{type:w.JSON(),isOptional:!1}}});J(j,H({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:K,tags:L,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:Q,output:U},policy:{auth:"anonymous"}}),async({family:D,paths:B,platform:F,query:Y,runtime:Z})=>({resolution:await k.resolveAdoption({family:D,paths:Array.isArray(B)?B:void 0,platform:F,query:Y,runtime:Z})}));let V=x({name:"AdoptionSyncInput",fields:{}}),X=x({name:"AdoptionSyncOutput",fields:{catalogPath:{type:w.String_unsecure(),isOptional:!1},total:{type:w.Int_unsecure(),isOptional:!1}}});J(j,H({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:K,tags:L,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:V,output:X},policy:{auth:"user"}}),async()=>k.syncAdoptionCatalog())}export{W as registerAdoptionOps};
@@ -1,2 +1,2 @@
1
- import{definePrompt as D,defineResourceTemplate as B,PromptRegistry as F,ResourceRegistry as H}from"@contractspec/lib.contracts-spec";import k from"zod";var I=["@contractspec"],x=["contracts","mcp"];function L(w){let q=new H;return q.register(B({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:x},input:k.object({}),resolve:async()=>{let j=await w.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(j,null,2)}}})),q.register(B({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:x},input:k.object({path:k.string()}),resolve:async({path:j})=>{let C=await w.getSpec(j);if(!C)return{uri:`contracts://spec/${encodeURIComponent(j)}`,mimeType:"text/plain",data:`Spec not found: ${j}`};return{uri:`contracts://spec/${encodeURIComponent(j)}`,mimeType:"text/plain",data:C.content}}})),q.register(B({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:x},input:k.object({}),resolve:async()=>{let j=await w.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(j,null,2)}}})),q.register(B({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:x},input:k.object({}),resolve:async()=>{let j=await w.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(j,null,2)}}})),q.register(B({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:x},input:k.object({family:k.string()}),resolve:async({family:j})=>{let C=await w.resolveAdoption({family:j,query:j});return{uri:`adoption://policy/${encodeURIComponent(j)}`,mimeType:"application/json",data:JSON.stringify(C,null,2)}}})),q}function M(){let w=new F;return w.register(D({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:x,stability:"beta",owners:I},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:k.string().optional()}],input:k.object({goal:k.string().optional()}),render:async({goal:q})=>[{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",q?`Agent goal: ${q}`:""].filter(Boolean).join(`
2
- `)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),w}export{L as buildContractsResources,M as buildContractsPrompts};
1
+ var D=Object.defineProperty;var F=(j)=>j;function H(j,k){this[j]=F.bind(null,k)}var M=(j,k)=>{for(var q in k)D(j,q,{get:k[q],enumerable:!0,configurable:!0,set:H.bind(k,q)})};var Q=(j,k)=>()=>(j&&(k=j(j=0)),k);import{definePrompt as I,defineResourceTemplate as B,PromptRegistry as J,ResourceRegistry as K}from"@contractspec/lib.contracts-spec";import w from"zod";var L=["@contractspec"],x=["contracts","mcp"];function Y(j){let k=new K;return k.register(B({meta:{uriTemplate:"contracts://list",title:"Contract specs list",description:"JSON list of all contract specs in the workspace.",mimeType:"application/json",tags:x},input:w.object({}),resolve:async()=>{let q=await j.listSpecs();return{uri:"contracts://list",mimeType:"application/json",data:JSON.stringify(q,null,2)}}})),k.register(B({meta:{uriTemplate:"contracts://spec/{path}",title:"Contract spec content",description:"Read a single contract spec file by path.",mimeType:"text/plain",tags:x},input:w.object({path:w.string()}),resolve:async({path:q})=>{let C=await j.getSpec(q);if(!C)return{uri:`contracts://spec/${encodeURIComponent(q)}`,mimeType:"text/plain",data:`Spec not found: ${q}`};return{uri:`contracts://spec/${encodeURIComponent(q)}`,mimeType:"text/plain",data:C.content}}})),k.register(B({meta:{uriTemplate:"contracts://registry/manifest",title:"Remote registry manifest",description:"Contract registry manifest from the remote server.",mimeType:"application/json",tags:x},input:w.object({}),resolve:async()=>{let q=await j.fetchRegistryManifest();return{uri:"contracts://registry/manifest",mimeType:"application/json",data:JSON.stringify(q,null,2)}}})),k.register(B({meta:{uriTemplate:"adoption://catalog",title:"ContractSpec adoption catalog",description:"Bundled ContractSpec adoption catalog used by Connect and MCP.",mimeType:"application/json",tags:x},input:w.object({}),resolve:async()=>{let q=await j.searchAdoptionCatalog({query:"contractspec"});return{uri:"adoption://catalog",mimeType:"application/json",data:JSON.stringify(q,null,2)}}})),k.register(B({meta:{uriTemplate:"adoption://policy/{family}",title:"ContractSpec adoption policy",description:"Family-aware adoption recommendation and verdict policy.",mimeType:"application/json",tags:x},input:w.object({family:w.string()}),resolve:async({family:q})=>{let C=await j.resolveAdoption({family:q,query:q});return{uri:`adoption://policy/${encodeURIComponent(q)}`,mimeType:"application/json",data:JSON.stringify(C,null,2)}}})),k}function Z(){let j=new J;return j.register(I({meta:{key:"contracts.editor",version:"1.0.0",title:"Contract editing guide",description:"Guide AI agents through reading, editing, and validating contracts.",tags:x,stability:"beta",owners:L},args:[{name:"goal",description:"What the agent wants to achieve with the contract.",required:!1,schema:w.string().optional()}],input:w.object({goal:w.string().optional()}),render:async({goal:k})=>[{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",k?`Agent goal: ${k}`:""].filter(Boolean).join(`
2
+ `)},{type:"resource",uri:"contracts://list",title:"Available contracts"}]})),j}export{Y as buildContractsResources,Z as buildContractsPrompts};
@@ -1 +1 @@
1
- import{defineCommand as b,installOp as q}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as X,ScalarTypeEnum as z}from"@contractspec/lib.schema";var C=["@contractspec"],I=["contracts","mcp","adoption"];function N(w,k){let B=X({name:"AdoptionCatalogSearchInput",fields:{query:{type:z.String_unsecure(),isOptional:!1},family:{type:z.String_unsecure(),isOptional:!0},platform:{type:z.String_unsecure(),isOptional:!0}}}),D=X({name:"AdoptionCatalogSearchOutput",fields:{results:{type:z.JSON(),isOptional:!1}}});q(w,b({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:C,tags:I,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:B,output:D},policy:{auth:"anonymous"}}),async({family:H,platform:Q,query:x})=>({results:await k.searchAdoptionCatalog({family:H,platform:Q,query:x})}));let L=X({name:"AdoptionResolveInput",fields:{family:{type:z.String_unsecure(),isOptional:!1},query:{type:z.String_unsecure(),isOptional:!1},paths:{type:z.JSON(),isOptional:!0},platform:{type:z.String_unsecure(),isOptional:!0},runtime:{type:z.String_unsecure(),isOptional:!0}}}),U=X({name:"AdoptionResolveOutput",fields:{resolution:{type:z.JSON(),isOptional:!1}}});q(w,b({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:C,tags:I,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:L,output:U},policy:{auth:"anonymous"}}),async({family:H,paths:Q,platform:x,query:J,runtime:V})=>({resolution:await k.resolveAdoption({family:H,paths:Array.isArray(Q)?Q:void 0,platform:x,query:J,runtime:V})}));let K=X({name:"AdoptionSyncInput",fields:{}}),P=X({name:"AdoptionSyncOutput",fields:{catalogPath:{type:z.String_unsecure(),isOptional:!1},total:{type:z.Int_unsecure(),isOptional:!1}}});q(w,b({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:C,tags:I,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:K,output:P},policy:{auth:"user"}}),async()=>k.syncAdoptionCatalog())}import{defineCommand as Y,installOp as Z,OperationSpecRegistry as W}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as F,ScalarTypeEnum as j}from"@contractspec/lib.schema";var _=["@contractspec"],$=["contracts","mcp"];function h(w){let k=new W,B=F({name:"ContractsListInput",fields:{pattern:{type:j.String_unsecure(),isOptional:!0},type:{type:j.String_unsecure(),isOptional:!0}}}),D=F({name:"ContractsListOutput",fields:{specs:{type:j.JSON(),isOptional:!1},total:{type:j.Int_unsecure(),isOptional:!1}}});Z(k,Y({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:_,tags:$,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:B,output:D},policy:{auth:"anonymous"}}),async({pattern:x,type:J})=>{let V=await w.listSpecs({pattern:x,type:J});return{specs:V,total:V.length}});let L=F({name:"ContractsGetInput",fields:{path:{type:j.String_unsecure(),isOptional:!1}}}),U=F({name:"ContractsGetOutput",fields:{content:{type:j.String_unsecure(),isOptional:!1},info:{type:j.JSON(),isOptional:!1}}});Z(k,Y({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:_,tags:$,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:L,output:U},policy:{auth:"anonymous"}}),async({path:x})=>{let J=await w.getSpec(x);if(!J)throw Error(`Spec not found: ${x}`);return J});let K=F({name:"ContractsValidateInput",fields:{path:{type:j.String_unsecure(),isOptional:!1}}}),P=F({name:"ContractsValidateOutput",fields:{valid:{type:j.Boolean(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1},warnings:{type:j.JSON(),isOptional:!1}}});Z(k,Y({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:_,tags:$,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:K,output:P},policy:{auth:"anonymous"}}),async({path:x})=>w.validateSpec(x));let H=F({name:"ContractsBuildInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},dryRun:{type:j.Boolean(),isOptional:!0}}}),Q=F({name:"ContractsBuildOutput",fields:{results:{type:j.JSON(),isOptional:!1}}});return Z(k,Y({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:_,tags:$,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:H,output:Q},policy:{auth:"user"}}),async({path:x,dryRun:J})=>w.buildSpec(x,{dryRun:J})),A(k,w),N(k,w),k}function A(w,k){let B=F({name:"ContractsUpdateInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},content:{type:j.String_unsecure(),isOptional:!0},fields:{type:j.JSON(),isOptional:!0}}}),D=F({name:"ContractsUpdateOutput",fields:{updated:{type:j.Boolean(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1},warnings:{type:j.JSON(),isOptional:!1}}});Z(w,Y({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:_,tags:$,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:B,output:D},policy:{auth:"user"}}),async({path:K,content:P,fields:H})=>k.updateSpec(K,{content:P,fields:Array.isArray(H)?H:void 0}));let L=F({name:"ContractsDeleteInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},clean:{type:j.Boolean(),isOptional:!0}}}),U=F({name:"ContractsDeleteOutput",fields:{deleted:{type:j.Boolean(),isOptional:!1},cleanedFiles:{type:j.JSON(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1}}});Z(w,Y({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:_,tags:$,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:L,output:U},policy:{auth:"user"}}),async({path:K,clean:P})=>k.deleteSpec(K,{clean:P}))}export{h as buildContractsOps};
1
+ var W=Object.defineProperty;var A=(k)=>k;function G(k,w){this[k]=A.bind(null,w)}var M=(k,w)=>{for(var H in w)W(k,H,{get:w[H],enumerable:!0,configurable:!0,set:G.bind(w,H)})};var v=(k,w)=>()=>(k&&(w=k(k=0)),w);import{defineCommand as b,installOp as q}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as Y,ScalarTypeEnum as z}from"@contractspec/lib.schema";var C=["@contractspec"],I=["contracts","mcp","adoption"];function N(k,w){let H=Y({name:"AdoptionCatalogSearchInput",fields:{query:{type:z.String_unsecure(),isOptional:!1},family:{type:z.String_unsecure(),isOptional:!0},platform:{type:z.String_unsecure(),isOptional:!0}}}),D=Y({name:"AdoptionCatalogSearchOutput",fields:{results:{type:z.JSON(),isOptional:!1}}});q(k,b({meta:{key:"adoption.catalog_search",version:"1.0.0",stability:"beta",owners:C,tags:I,description:"Search the local ContractSpec adoption catalog.",goal:"Find relevant ContractSpec reuse candidates for a query.",context:"Contracts MCP server."},io:{input:H,output:D},policy:{auth:"anonymous"}}),async({family:J,platform:X,query:x})=>({results:await w.searchAdoptionCatalog({family:J,platform:X,query:x})}));let L=Y({name:"AdoptionResolveInput",fields:{family:{type:z.String_unsecure(),isOptional:!1},query:{type:z.String_unsecure(),isOptional:!1},paths:{type:z.JSON(),isOptional:!0},platform:{type:z.String_unsecure(),isOptional:!0},runtime:{type:z.String_unsecure(),isOptional:!0}}}),U=Y({name:"AdoptionResolveOutput",fields:{resolution:{type:z.JSON(),isOptional:!1}}});q(k,b({meta:{key:"adoption.resolve",version:"1.0.0",stability:"beta",owners:C,tags:I,description:"Resolve the best adoption candidate for one family.",goal:"Provide one ordered recommendation that matches Connect.",context:"Contracts MCP server."},io:{input:L,output:U},policy:{auth:"anonymous"}}),async({family:J,paths:X,platform:x,query:K,runtime:V})=>({resolution:await w.resolveAdoption({family:J,paths:Array.isArray(X)?X:void 0,platform:x,query:K,runtime:V})}));let P=Y({name:"AdoptionSyncInput",fields:{}}),Q=Y({name:"AdoptionSyncOutput",fields:{catalogPath:{type:z.String_unsecure(),isOptional:!1},total:{type:z.Int_unsecure(),isOptional:!1}}});q(k,b({meta:{key:"adoption.sync",version:"1.0.0",stability:"beta",owners:C,tags:I,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:P,output:Q},policy:{auth:"user"}}),async()=>w.syncAdoptionCatalog())}import{defineCommand as Z,installOp as _,OperationSpecRegistry as R}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as F,ScalarTypeEnum as j}from"@contractspec/lib.schema";var $=["@contractspec"],B=["contracts","mcp"];function y(k){let w=new R,H=F({name:"ContractsListInput",fields:{pattern:{type:j.String_unsecure(),isOptional:!0},type:{type:j.String_unsecure(),isOptional:!0}}}),D=F({name:"ContractsListOutput",fields:{specs:{type:j.JSON(),isOptional:!1},total:{type:j.Int_unsecure(),isOptional:!1}}});_(w,Z({meta:{key:"contracts.list",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"List contract specs in the workspace.",goal:"Discover available contracts by type, pattern, or owner.",context:"Contracts MCP server."},io:{input:H,output:D},policy:{auth:"anonymous"}}),async({pattern:x,type:K})=>{let V=await k.listSpecs({pattern:x,type:K});return{specs:V,total:V.length}});let L=F({name:"ContractsGetInput",fields:{path:{type:j.String_unsecure(),isOptional:!1}}}),U=F({name:"ContractsGetOutput",fields:{content:{type:j.String_unsecure(),isOptional:!1},info:{type:j.JSON(),isOptional:!1}}});_(w,Z({meta:{key:"contracts.get",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Read a single contract spec file.",goal:"Fetch spec content and parsed metadata.",context:"Contracts MCP server."},io:{input:L,output:U},policy:{auth:"anonymous"}}),async({path:x})=>{let K=await k.getSpec(x);if(!K)throw Error(`Spec not found: ${x}`);return K});let P=F({name:"ContractsValidateInput",fields:{path:{type:j.String_unsecure(),isOptional:!1}}}),Q=F({name:"ContractsValidateOutput",fields:{valid:{type:j.Boolean(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1},warnings:{type:j.JSON(),isOptional:!1}}});_(w,Z({meta:{key:"contracts.validate",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Validate a contract spec structure.",goal:"Check spec for structural or policy issues.",context:"Contracts MCP server."},io:{input:P,output:Q},policy:{auth:"anonymous"}}),async({path:x})=>k.validateSpec(x));let J=F({name:"ContractsBuildInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},dryRun:{type:j.Boolean(),isOptional:!0}}}),X=F({name:"ContractsBuildOutput",fields:{results:{type:j.JSON(),isOptional:!1}}});return _(w,Z({meta:{key:"contracts.build",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Generate implementation code from a contract spec.",goal:"Produce handler, component, or test skeletons.",context:"Contracts MCP server."},io:{input:J,output:X},policy:{auth:"user"}}),async({path:x,dryRun:K})=>k.buildSpec(x,{dryRun:K})),g(w,k),N(w,k),w}function g(k,w){let H=F({name:"ContractsUpdateInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},content:{type:j.String_unsecure(),isOptional:!0},fields:{type:j.JSON(),isOptional:!0}}}),D=F({name:"ContractsUpdateOutput",fields:{updated:{type:j.Boolean(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1},warnings:{type:j.JSON(),isOptional:!1}}});_(k,Z({meta:{key:"contracts.update",version:"1.0.0",stability:"beta",owners:$,tags:B,description:"Update an existing contract spec.",goal:"Modify spec content or individual fields with validation.",context:"Contracts MCP server."},io:{input:H,output:D},policy:{auth:"user"}}),async({path:P,content:Q,fields:J})=>w.updateSpec(P,{content:Q,fields:Array.isArray(J)?J:void 0}));let L=F({name:"ContractsDeleteInput",fields:{path:{type:j.String_unsecure(),isOptional:!1},clean:{type:j.Boolean(),isOptional:!0}}}),U=F({name:"ContractsDeleteOutput",fields:{deleted:{type:j.Boolean(),isOptional:!1},cleanedFiles:{type:j.JSON(),isOptional:!1},errors:{type:j.JSON(),isOptional:!1}}});_(k,Z({meta:{key:"contracts.delete",version:"1.0.0",stability:"beta",owners:$,tags:B,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:L,output:U},policy:{auth:"user"}}),async({path:P,clean:Q})=>w.deleteSpec(P,{clean:Q}))}export{y as buildContractsOps};
@@ -1,3 +1,3 @@
1
- import{defaultDocRegistry as p}from"@contractspec/lib.contracts-spec/docs";var k=20,y=100;function $(j){return j?.trim().toLowerCase()??""}function P(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function d(j){return(Array.isArray(j)?j:j?[j]:[]).map((B)=>$(B)).filter(Boolean)}function u(j){if(!j||Number.isNaN(j))return k;return Math.min(Math.max(j,1),y)}function l(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function _({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function n(j,w){if(!w)return 1;let B=w.split(/\s+/).filter(Boolean),H=$(j.block.title),N=$(j.block.id),J=$(j.block.summary),Z=$(j.block.body),W=$(j.route),Y=(j.block.tags??[]).map((G)=>$(G)),K=[H,N,J,Z,W,...Y].join(" ");if(B.some((G)=>!K.includes(G)))return 0;let C=0;for(let G of B){if(N.includes(G))C+=8;if(H.includes(G))C+=7;if(Y.some((F)=>F.includes(G)))C+=5;if(J.includes(G))C+=4;if(W.includes(G))C+=3;if(Z.includes(G))C+=2}return C}function bj(j,w){let B=$(typeof w.query==="string"?w.query:void 0),H=d(w.tag),N=$(typeof w.visibility==="string"?w.visibility:void 0),J=$(typeof w.kind==="string"?w.kind:void 0),Z=u(typeof w.limit==="number"?w.limit:void 0),W=l(typeof w.offset==="number"?w.offset:void 0),Y=j.map((G)=>({doc:_(G),score:n(G,B)})).filter(({doc:G,score:F})=>{let b=B?F>0:!0,T=H.length?H.every((v)=>G.tags.some((m)=>$(m).includes(v))):!0,h=N?$(G.visibility)===N:!0,f=J?$(G.kind)===J:!0;return b&&T&&h&&f}).sort((G,F)=>{if(F.score!==G.score)return F.score-G.score;return G.doc.title.localeCompare(F.doc.title)}),K=Y.slice(W,W+Z).map(({doc:G})=>G),C=W+K.length<Y.length?W+K.length:void 0;return{docs:K,items:K,total:Y.length,...C!=null?{nextOffset:C}:{}}}function Tj(j){let w=decodeURIComponent(j),B=p.get(w);if(!B)return;return{doc:_(B),content:String(B.block.body??"")}}function hj(j,w){let B=P(w),H=j.find((N)=>P(N.route)===B);if(!H)return;return{doc:_(H),content:String(H.block.body??"")}}function fj(j){let w=new Map,B=new Map,H=new Map;for(let J of j){let Z=J.block.kind??"reference",W=J.block.visibility??"public";B.set(Z,(B.get(Z)??0)+1),H.set(W,(H.get(W)??0)+1);for(let Y of J.block.tags??[])w.set(Y,(w.get(Y)??0)+1)}let N=(J,Z)=>[...J.entries()].sort((W,Y)=>Y[1]-W[1]||W[0].localeCompare(Y[0])).map(([W,Y])=>({[Z]:W,count:Y}));return{totalDocs:j.length,tags:N(w,"tag"),kinds:N(B,"kind"),visibilities:N(H,"visibility")}}import{EventRegistry as g,OperationSpecRegistry as c}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as i}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as a,ContractReferenceQuery as o,DocsGenerateCommand as t,DocsGeneratedEvent as s,DocsIndexDataView as r,DocsIndexQuery as e,DocsLayoutPresentation as jj,DocsPublishCommand as wj,DocsPublishedEvent as Bj,DocsReferencePagePresentation as Gj,DocsSearchForm as Hj,ExampleCatalogDataView as Jj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as Nj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as Wj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as Yj,serializeEventSpec as Zj,serializeFormSpec as $j,serializeOperationSpec as Cj,serializePresentationSpec as Fj}from"@contractspec/lib.contracts-spec/serialization";var Q=null;function Kj(){let j=new c;return j.register(e).register(o).register(t).register(wj),j}function Qj(){if(!Q)Q=Kj();return Q}function M(j,w){return Qj().get(j,w)}var U=null;function Uj(){let j=new g;return j.register(s).register(Bj),j}function Vj(){if(!U)U=Uj();return U}function O(j,w){return Vj().get(j,w)}var V=null;function Xj(){let j=new Wj;return j.register(jj).register(Gj),j}function Aj(){if(!V)V=Xj();return V}function L(j,w){return Aj().get(j,w)}var X=null;function _j(){let j=new i;return j.register(r).register(a).register(Jj),j}function Mj(){if(!X)X=_j();return X}function R(j,w){return Mj().get(j,w)}var A=null;function Oj(){let j=new Nj;return j.register(Hj),j}function Lj(){if(!A)A=Oj();return A}function E(j,w){return Lj().get(j)}function D(j,w){let B=M(j,w);return Cj(B)??void 0}function I(j,w){let B=O(j,w);return Zj(B)??void 0}function q(j,w){let B=L(j,w);return Fj(B)??void 0}function S(j,w){let B=R(j,w);return Yj(B)??void 0}function x(j,w){let B=E(j,w);return $j(B)??void 0}function Rj(){Q=null}function Ej(){U=null}function Pj(){V=null}function Dj(){X=null}function Ij(){A=null}function lj(){Rj(),Ej(),Pj(),Dj(),Ij()}import{defaultDocRegistry as qj}from"@contractspec/lib.contracts-spec/docs";function Sj(j){return j?.trim().toLowerCase()??""}function xj(j){for(let w of j??[]){let B=qj.get(w);if(B)return B.route}return}function z(j,w,B,H){let N=j.meta.title??j.meta.key,J=xj(j.meta.docId),Z=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:N,description:Z,markdown:[`# ${N}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,J?`- Docs route: ${J}`:"",Z?`
1
+ var p=Object.defineProperty;var k=(j)=>j;function y(j,w){this[j]=k.bind(null,w)}var hj=(j,w)=>{for(var B in w)p(j,B,{get:w[B],enumerable:!0,configurable:!0,set:y.bind(w,B)})};var fj=(j,w)=>()=>(j&&(w=j(j=0)),w);import{defaultDocRegistry as d}from"@contractspec/lib.contracts-spec/docs";var u=20,l=100;function $(j){return j?.trim().toLowerCase()??""}function P(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function n(j){return(Array.isArray(j)?j:j?[j]:[]).map((B)=>$(B)).filter(Boolean)}function g(j){if(!j||Number.isNaN(j))return u;return Math.min(Math.max(j,1),l)}function c(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function _({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function i(j,w){if(!w)return 1;let B=w.split(/\s+/).filter(Boolean),H=$(j.block.title),N=$(j.block.id),J=$(j.block.summary),Z=$(j.block.body),W=$(j.route),Y=(j.block.tags??[]).map((G)=>$(G)),K=[H,N,J,Z,W,...Y].join(" ");if(B.some((G)=>!K.includes(G)))return 0;let C=0;for(let G of B){if(N.includes(G))C+=8;if(H.includes(G))C+=7;if(Y.some((F)=>F.includes(G)))C+=5;if(J.includes(G))C+=4;if(W.includes(G))C+=3;if(Z.includes(G))C+=2}return C}function pj(j,w){let B=$(typeof w.query==="string"?w.query:void 0),H=n(w.tag),N=$(typeof w.visibility==="string"?w.visibility:void 0),J=$(typeof w.kind==="string"?w.kind:void 0),Z=g(typeof w.limit==="number"?w.limit:void 0),W=c(typeof w.offset==="number"?w.offset:void 0),Y=j.map((G)=>({doc:_(G),score:i(G,B)})).filter(({doc:G,score:F})=>{let b=B?F>0:!0,T=H.length?H.every((v)=>G.tags.some((m)=>$(m).includes(v))):!0,h=N?$(G.visibility)===N:!0,f=J?$(G.kind)===J:!0;return b&&T&&h&&f}).sort((G,F)=>{if(F.score!==G.score)return F.score-G.score;return G.doc.title.localeCompare(F.doc.title)}),K=Y.slice(W,W+Z).map(({doc:G})=>G),C=W+K.length<Y.length?W+K.length:void 0;return{docs:K,items:K,total:Y.length,...C!=null?{nextOffset:C}:{}}}function kj(j){let w=decodeURIComponent(j),B=d.get(w);if(!B)return;return{doc:_(B),content:String(B.block.body??"")}}function yj(j,w){let B=P(w),H=j.find((N)=>P(N.route)===B);if(!H)return;return{doc:_(H),content:String(H.block.body??"")}}function dj(j){let w=new Map,B=new Map,H=new Map;for(let J of j){let Z=J.block.kind??"reference",W=J.block.visibility??"public";B.set(Z,(B.get(Z)??0)+1),H.set(W,(H.get(W)??0)+1);for(let Y of J.block.tags??[])w.set(Y,(w.get(Y)??0)+1)}let N=(J,Z)=>[...J.entries()].sort((W,Y)=>Y[1]-W[1]||W[0].localeCompare(Y[0])).map(([W,Y])=>({[Z]:W,count:Y}));return{totalDocs:j.length,tags:N(w,"tag"),kinds:N(B,"kind"),visibilities:N(H,"visibility")}}import{EventRegistry as a,OperationSpecRegistry as o}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as t}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as s,ContractReferenceQuery as r,DocsGenerateCommand as e,DocsGeneratedEvent as jj,DocsIndexDataView as wj,DocsIndexQuery as Bj,DocsLayoutPresentation as Gj,DocsPublishCommand as Hj,DocsPublishedEvent as Jj,DocsReferencePagePresentation as Nj,DocsSearchForm as Wj,ExampleCatalogDataView as Yj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as Zj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as $j}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as Cj,serializeEventSpec as Fj,serializeFormSpec as Kj,serializeOperationSpec as Qj,serializePresentationSpec as Uj}from"@contractspec/lib.contracts-spec/serialization";var Q=null;function Vj(){let j=new o;return j.register(Bj).register(r).register(e).register(Hj),j}function Xj(){if(!Q)Q=Vj();return Q}function M(j,w){return Xj().get(j,w)}var U=null;function Aj(){let j=new a;return j.register(jj).register(Jj),j}function _j(){if(!U)U=Aj();return U}function O(j,w){return _j().get(j,w)}var V=null;function Mj(){let j=new $j;return j.register(Gj).register(Nj),j}function Oj(){if(!V)V=Mj();return V}function L(j,w){return Oj().get(j,w)}var X=null;function Lj(){let j=new t;return j.register(wj).register(s).register(Yj),j}function Rj(){if(!X)X=Lj();return X}function R(j,w){return Rj().get(j,w)}var A=null;function Ej(){let j=new Zj;return j.register(Wj),j}function Pj(){if(!A)A=Ej();return A}function E(j,w){return Pj().get(j)}function D(j,w){let B=M(j,w);return Qj(B)??void 0}function I(j,w){let B=O(j,w);return Fj(B)??void 0}function q(j,w){let B=L(j,w);return Uj(B)??void 0}function S(j,w){let B=R(j,w);return Cj(B)??void 0}function x(j,w){let B=E(j,w);return Kj(B)??void 0}function Dj(){Q=null}function Ij(){U=null}function qj(){V=null}function Sj(){X=null}function xj(){A=null}function oj(){Dj(),Ij(),qj(),Sj(),xj()}import{defaultDocRegistry as zj}from"@contractspec/lib.contracts-spec/docs";function bj(j){return j?.trim().toLowerCase()??""}function Tj(j){for(let w of j??[]){let B=zj.get(w);if(B)return B.route}return}function z(j,w,B,H){let N=j.meta.title??j.meta.key,J=Tj(j.meta.docId),Z=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:N,description:Z,markdown:[`# ${N}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,J?`- Docs route: ${J}`:"",Z?`
2
2
  ${Z}`:""].filter(Boolean).join(`
3
- `),...J?{route:J}:{},...B?{schema:B}:{},...H?{policy:H}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function ij(j){let w=j.includeSchema??!1,B=Sj(j.type),H=M(j.key,j.version);if(H&&(!B||B==="operation"||B===H.meta.kind))return{reference:z(H,H.meta.kind,w?D(j.key,j.version):void 0,H.policy)};let N=[{type:"data-view",spec:R(j.key,j.version),schema:w?S(j.key,j.version):void 0},{type:"form",spec:E(j.key,j.version),schema:w?x(j.key,j.version):void 0},{type:"presentation",spec:L(j.key,j.version),schema:w?q(j.key,j.version):void 0},{type:"event",spec:O(j.key,j.version),schema:w?I(j.key,j.version):void 0}];for(let J of N)if(J.spec&&(!B||B===J.type))return{reference:z(J.spec,J.type,J.schema)};throw Error(`Contract reference not found: ${j.key}`)}export{_ as toDocSummary,bj as searchDocs,ij as resolveContractReference,fj as listDocFacets,hj as getDocByRoute,Tj as getDocById};
3
+ `),...J?{route:J}:{},...B?{schema:B}:{},...H?{policy:H}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function ej(j){let w=j.includeSchema??!1,B=bj(j.type),H=M(j.key,j.version);if(H&&(!B||B==="operation"||B===H.meta.kind))return{reference:z(H,H.meta.kind,w?D(j.key,j.version):void 0,H.policy)};let N=[{type:"data-view",spec:R(j.key,j.version),schema:w?S(j.key,j.version):void 0},{type:"form",spec:E(j.key,j.version),schema:w?x(j.key,j.version):void 0},{type:"presentation",spec:L(j.key,j.version),schema:w?q(j.key,j.version):void 0},{type:"event",spec:O(j.key,j.version),schema:w?I(j.key,j.version):void 0}];for(let J of N)if(J.spec&&(!B||B===J.type))return{reference:z(J.spec,J.type,J.schema)};throw Error(`Contract reference not found: ${j.key}`)}export{_ as toDocSummary,pj as searchDocs,ej as resolveContractReference,dj as listDocFacets,yj as getDocByRoute,kj as getDocById};
@@ -1 +1 @@
1
- import{defaultDocRegistry as P}from"@contractspec/lib.contracts-spec/docs";var R=20,S=100;function N(j){return j?.trim().toLowerCase()??""}function U(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function E(j){return(Array.isArray(j)?j:j?[j]:[]).map((C)=>N(C)).filter(Boolean)}function L(j){if(!j||Number.isNaN(j))return R;return Math.min(Math.max(j,1),S)}function I(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function Q({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function p(j,w){if(!w)return 1;let C=w.split(/\s+/).filter(Boolean),J=N(j.block.title),W=N(j.block.id),Y=N(j.block.summary),$=N(j.block.body),G=N(j.route),H=(j.block.tags??[]).map((B)=>N(B)),K=[J,W,Y,$,G,...H].join(" ");if(C.some((B)=>!K.includes(B)))return 0;let Z=0;for(let B of C){if(W.includes(B))Z+=8;if(J.includes(B))Z+=7;if(H.some((F)=>F.includes(B)))Z+=5;if(Y.includes(B))Z+=4;if(G.includes(B))Z+=3;if($.includes(B))Z+=2}return Z}function D(j,w){let C=N(typeof w.query==="string"?w.query:void 0),J=E(w.tag),W=N(typeof w.visibility==="string"?w.visibility:void 0),Y=N(typeof w.kind==="string"?w.kind:void 0),$=L(typeof w.limit==="number"?w.limit:void 0),G=I(typeof w.offset==="number"?w.offset:void 0),H=j.map((B)=>({doc:Q(B),score:p(B,C)})).filter(({doc:B,score:F})=>{let V=C?F>0:!0,X=J.length?J.every((M)=>B.tags.some((O)=>N(O).includes(M))):!0,A=W?N(B.visibility)===W:!0,_=Y?N(B.kind)===Y:!0;return V&&X&&A&&_}).sort((B,F)=>{if(F.score!==B.score)return F.score-B.score;return B.doc.title.localeCompare(F.doc.title)}),K=H.slice(G,G+$).map(({doc:B})=>B),Z=G+K.length<H.length?G+K.length:void 0;return{docs:K,items:K,total:H.length,...Z!=null?{nextOffset:Z}:{}}}function x(j){let w=decodeURIComponent(j),C=P.get(w);if(!C)return;return{doc:Q(C),content:String(C.block.body??"")}}function z(j,w){let C=U(w),J=j.find((W)=>U(W.route)===C);if(!J)return;return{doc:Q(J),content:String(J.block.body??"")}}function h(j){let w=new Map,C=new Map,J=new Map;for(let Y of j){let $=Y.block.kind??"reference",G=Y.block.visibility??"public";C.set($,(C.get($)??0)+1),J.set(G,(J.get(G)??0)+1);for(let H of Y.block.tags??[])w.set(H,(w.get(H)??0)+1)}let W=(Y,$)=>[...Y.entries()].sort((G,H)=>H[1]-G[1]||G[0].localeCompare(H[0])).map(([G,H])=>({[$]:G,count:H}));return{totalDocs:j.length,tags:W(w,"tag"),kinds:W(C,"kind"),visibilities:W(J,"visibility")}}export{Q as toDocSummary,D as searchDocs,h as listDocFacets,z as getDocByRoute,x as getDocById};
1
+ var P=Object.defineProperty;var R=(j)=>j;function S(j,w){this[j]=R.bind(null,w)}var z=(j,w)=>{for(var C in w)P(j,C,{get:w[C],enumerable:!0,configurable:!0,set:S.bind(w,C)})};var h=(j,w)=>()=>(j&&(w=j(j=0)),w);import{defaultDocRegistry as E}from"@contractspec/lib.contracts-spec/docs";var L=20,I=100;function N(j){return j?.trim().toLowerCase()??""}function U(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function p(j){return(Array.isArray(j)?j:j?[j]:[]).map((C)=>N(C)).filter(Boolean)}function q(j){if(!j||Number.isNaN(j))return L;return Math.min(Math.max(j,1),I)}function D(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function Q({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function x(j,w){if(!w)return 1;let C=w.split(/\s+/).filter(Boolean),J=N(j.block.title),W=N(j.block.id),Y=N(j.block.summary),$=N(j.block.body),G=N(j.route),H=(j.block.tags??[]).map((B)=>N(B)),K=[J,W,Y,$,G,...H].join(" ");if(C.some((B)=>!K.includes(B)))return 0;let Z=0;for(let B of C){if(W.includes(B))Z+=8;if(J.includes(B))Z+=7;if(H.some((F)=>F.includes(B)))Z+=5;if(Y.includes(B))Z+=4;if(G.includes(B))Z+=3;if($.includes(B))Z+=2}return Z}function y(j,w){let C=N(typeof w.query==="string"?w.query:void 0),J=p(w.tag),W=N(typeof w.visibility==="string"?w.visibility:void 0),Y=N(typeof w.kind==="string"?w.kind:void 0),$=q(typeof w.limit==="number"?w.limit:void 0),G=D(typeof w.offset==="number"?w.offset:void 0),H=j.map((B)=>({doc:Q(B),score:x(B,C)})).filter(({doc:B,score:F})=>{let V=C?F>0:!0,X=J.length?J.every((M)=>B.tags.some((O)=>N(O).includes(M))):!0,A=W?N(B.visibility)===W:!0,_=Y?N(B.kind)===Y:!0;return V&&X&&A&&_}).sort((B,F)=>{if(F.score!==B.score)return F.score-B.score;return B.doc.title.localeCompare(F.doc.title)}),K=H.slice(G,G+$).map(({doc:B})=>B),Z=G+K.length<H.length?G+K.length:void 0;return{docs:K,items:K,total:H.length,...Z!=null?{nextOffset:Z}:{}}}function b(j){let w=decodeURIComponent(j),C=E.get(w);if(!C)return;return{doc:Q(C),content:String(C.block.body??"")}}function k(j,w){let C=U(w),J=j.find((W)=>U(W.route)===C);if(!J)return;return{doc:Q(J),content:String(J.block.body??"")}}function m(j){let w=new Map,C=new Map,J=new Map;for(let Y of j){let $=Y.block.kind??"reference",G=Y.block.visibility??"public";C.set($,(C.get($)??0)+1),J.set(G,(J.get(G)??0)+1);for(let H of Y.block.tags??[])w.set(H,(w.get(H)??0)+1)}let W=(Y,$)=>[...Y.entries()].sort((G,H)=>H[1]-G[1]||G[0].localeCompare(H[0])).map(([G,H])=>({[$]:G,count:H}));return{totalDocs:j.length,tags:W(w,"tag"),kinds:W(C,"kind"),visibilities:W(J,"visibility")}}export{Q as toDocSummary,y as searchDocs,m as listDocFacets,k as getDocByRoute,b as getDocById};
@@ -1,6 +1,6 @@
1
- import{Logger as g,LogLevel as d}from"@contractspec/lib.logger";function u(){return"production"}var Gj=()=>new g({level:d.INFO,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),e=Gj(),hw=new g({level:d.WARN,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),kw=new g({level:d.INFO,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});var jj=["application/json","text/event-stream"];function Nj(j){return!j||j.includes("*/*")||j.includes("application/*")||jj.some((w)=>j.includes(w))}function n(j){if(j.method!=="POST")return j;let w=j.headers.get("accept");if(!Nj(w))return j;let Y=jj.filter((U)=>!w?.includes(U));if(Y.length===0)return j;let J=new Headers(j.headers);return J.set("accept",[w,...Y].filter(Boolean).join(", ")),new Request(j,{headers:J})}import{createMcpServer as Lj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as Ej}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as xj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as Mj}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as _j}from"crypto";import{Elysia as Aj}from"elysia";var Cj={actor:"anonymous",decide:async()=>({effect:"allow"})};function i(j,w,Y,J){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:w,message:Y,...J?{data:J}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function wj({logger:j,serverName:w,ops:Y,resources:J,prompts:U,presentations:Q,stateful:K}){let Z=new xj({name:w,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),Lj(Z,Y,J,U,{logger:j,toolCtx:()=>Cj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new Ej(Q)});let V=new Mj({sessionIdGenerator:K?()=>_j():void 0,enableJsonResponse:!0});return Z.connect(V).then(()=>({server:Z,transport:V}))}async function T(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function Ij(j){return j instanceof Error?j.stack??j.message:String(j)}function Yj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,validateAuth:Z,requiredAuthMethods:V}){j.info("Setting up MCP handler...",{requiredAuthMethods:V??[]});let L=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",H=new Map;async function $(B){let F=await wj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,stateful:!1});try{return await F.transport.handleRequest(n(B))}finally{await T(F)}}async function G(B){let F=H.get(B);if(!F)return;H.delete(B),await T(F)}async function p(B){let F=B.headers.get("mcp-session-id"),N,q=!1;if(F){let E=H.get(F);if(!E)return i(404,-32001,"Session not found");N=E}else N=await wj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,stateful:!0}),q=!0;try{let E=await N.transport.handleRequest(n(B)),A=N.transport.sessionId;if(A&&!H.has(A))H.set(A,N);if(B.method==="DELETE"&&A)await G(A);else if(!A&&q)await T(N);return E}catch(E){if(q)await T(N);throw E}}return new Aj({name:`mcp-${Y}`}).all(w,async({request:B})=>{try{if(Z){let F=await Z(B);if(!F.valid)return i(401,-32002,"Authentication failed",F.reason)}if(L)return await p(B);return await $(B)}catch(F){return j.error("Error handling MCP request",{path:w,method:B.method,error:Ij(F)}),i(500,-32000,"Internal error")}})}import{defaultDocRegistry as Rj}from"@contractspec/lib.contracts-spec/docs";var qj=20,bj=100;function P(j){return j?.trim().toLowerCase()??""}function Jj(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function Oj(j){return(Array.isArray(j)?j:j?[j]:[]).map((Y)=>P(Y)).filter(Boolean)}function Dj(j){if(!j||Number.isNaN(j))return qj;return Math.min(Math.max(j,1),bj)}function zj(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function c({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function Tj(j,w){if(!w)return 1;let Y=w.split(/\s+/).filter(Boolean),J=P(j.block.title),U=P(j.block.id),Q=P(j.block.summary),K=P(j.block.body),Z=P(j.route),V=(j.block.tags??[]).map(($)=>P($)),L=[J,U,Q,K,Z,...V].join(" ");if(Y.some(($)=>!L.includes($)))return 0;let H=0;for(let $ of Y){if(U.includes($))H+=8;if(J.includes($))H+=7;if(V.some((G)=>G.includes($)))H+=5;if(Q.includes($))H+=4;if(Z.includes($))H+=3;if(K.includes($))H+=2}return H}function C(j,w){let Y=P(typeof w.query==="string"?w.query:void 0),J=Oj(w.tag),U=P(typeof w.visibility==="string"?w.visibility:void 0),Q=P(typeof w.kind==="string"?w.kind:void 0),K=Dj(typeof w.limit==="number"?w.limit:void 0),Z=zj(typeof w.offset==="number"?w.offset:void 0),V=j.map(($)=>({doc:c($),score:Tj($,Y)})).filter(({doc:$,score:G})=>{let p=Y?G>0:!0,B=J.length?J.every((q)=>$.tags.some((E)=>P(E).includes(q))):!0,F=U?P($.visibility)===U:!0,N=Q?P($.kind)===Q:!0;return p&&B&&F&&N}).sort(($,G)=>{if(G.score!==$.score)return G.score-$.score;return $.doc.title.localeCompare(G.doc.title)}),L=V.slice(Z,Z+K).map(({doc:$})=>$),H=Z+L.length<V.length?Z+L.length:void 0;return{docs:L,items:L,total:V.length,...H!=null?{nextOffset:H}:{}}}function S(j){let w=decodeURIComponent(j),Y=Rj.get(w);if(!Y)return;return{doc:c(Y),content:String(Y.block.body??"")}}function h(j,w){let Y=Jj(w),J=j.find((U)=>Jj(U.route)===Y);if(!J)return;return{doc:c(J),content:String(J.block.body??"")}}function k(j){let w=new Map,Y=new Map,J=new Map;for(let Q of j){let K=Q.block.kind??"reference",Z=Q.block.visibility??"public";Y.set(K,(Y.get(K)??0)+1),J.set(Z,(J.get(Z)??0)+1);for(let V of Q.block.tags??[])w.set(V,(w.get(V)??0)+1)}let U=(Q,K)=>[...Q.entries()].sort((Z,V)=>V[1]-Z[1]||Z[0].localeCompare(V[0])).map(([Z,V])=>({[K]:Z,count:V}));return{totalDocs:j.length,tags:U(w,"tag"),kinds:U(Y,"kind"),visibilities:U(J,"visibility")}}import{EventRegistry as Sj,OperationSpecRegistry as hj}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as kj}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as fj,ContractReferenceQuery as vj,DocsGenerateCommand as yj,DocsGeneratedEvent as mj,DocsIndexDataView as lj,DocsIndexQuery as pj,DocsLayoutPresentation as gj,DocsPublishCommand as dj,DocsPublishedEvent as uj,DocsReferencePagePresentation as nj,DocsSearchForm as ij,ExampleCatalogDataView as cj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as aj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as oj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as tj,serializeEventSpec as rj,serializeFormSpec as sj,serializeOperationSpec as ej,serializePresentationSpec as jw}from"@contractspec/lib.contracts-spec/serialization";var f=null;function ww(){let j=new hj;return j.register(pj).register(vj).register(yj).register(dj),j}function Yw(){if(!f)f=ww();return f}function a(j,w){return Yw().get(j,w)}var v=null;function Jw(){let j=new Sj;return j.register(mj).register(uj),j}function Qw(){if(!v)v=Jw();return v}function o(j,w){return Qw().get(j,w)}var y=null;function Uw(){let j=new oj;return j.register(gj).register(nj),j}function Zw(){if(!y)y=Uw();return y}function t(j,w){return Zw().get(j,w)}var m=null;function $w(){let j=new kj;return j.register(lj).register(fj).register(cj),j}function Kw(){if(!m)m=$w();return m}function r(j,w){return Kw().get(j,w)}var l=null;function Vw(){let j=new aj;return j.register(ij),j}function Xw(){if(!l)l=Vw();return l}function s(j,w){return Xw().get(j)}function Qj(j,w){let Y=a(j,w);return ej(Y)??void 0}function Uj(j,w){let Y=o(j,w);return rj(Y)??void 0}function Zj(j,w){let Y=t(j,w);return jw(Y)??void 0}function $j(j,w){let Y=r(j,w);return tj(Y)??void 0}function Kj(j,w){let Y=s(j,w);return sj(Y)??void 0}function Hw(){f=null}function Bw(){v=null}function Fw(){y=null}function Ww(){m=null}function Pw(){l=null}function jY(){Hw(),Bw(),Fw(),Ww(),Pw()}import{defaultDocRegistry as Gw}from"@contractspec/lib.contracts-spec/docs";function Nw(j){return j?.trim().toLowerCase()??""}function Lw(j){for(let w of j??[]){let Y=Gw.get(w);if(Y)return Y.route}return}function Vj(j,w,Y,J){let U=j.meta.title??j.meta.key,Q=Lw(j.meta.docId),K=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:U,description:K,markdown:[`# ${U}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,Q?`- Docs route: ${Q}`:"",K?`
1
+ var Gj=Object.defineProperty;var Nj=(j)=>j;function Lj(j,w){this[j]=Nj.bind(null,w)}var fw=(j,w)=>{for(var Y in w)Gj(j,Y,{get:w[Y],enumerable:!0,configurable:!0,set:Lj.bind(w,Y)})};var vw=(j,w)=>()=>(j&&(w=j(j=0)),w);import{Logger as g,LogLevel as d}from"@contractspec/lib.logger";function u(){return"production"}var Ej=()=>new g({level:d.INFO,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),e=Ej(),lw=new g({level:d.WARN,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1}),pw=new g({level:d.INFO,environment:u(),enableTracing:!0,enableTiming:!0,enableContext:!0,enableColors:!1});var jj=["application/json","text/event-stream"];function xj(j){return!j||j.includes("*/*")||j.includes("application/*")||jj.some((w)=>j.includes(w))}function n(j){if(j.method!=="POST")return j;let w=j.headers.get("accept");if(!xj(w))return j;let Y=jj.filter((U)=>!w?.includes(U));if(Y.length===0)return j;let J=new Headers(j.headers);return J.set("accept",[w,...Y].filter(Boolean).join(", ")),new Request(j,{headers:J})}import{createMcpServer as Mj}from"@contractspec/lib.contracts-runtime-server-mcp/provider-mcp";import{PresentationRegistry as _j}from"@contractspec/lib.contracts-spec/presentations";import{McpServer as Aj}from"@modelcontextprotocol/sdk/server/mcp.js";import{WebStandardStreamableHTTPServerTransport as Cj}from"@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";import{randomUUID as Ij}from"crypto";import{Elysia as Rj}from"elysia";var qj={actor:"anonymous",decide:async()=>({effect:"allow"})};function i(j,w,Y,J){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:w,message:Y,...J?{data:J}:{}},id:null}),{status:j,headers:{"content-type":"application/json"}})}function wj({logger:j,serverName:w,ops:Y,resources:J,prompts:U,presentations:Q,stateful:K}){let Z=new Aj({name:w,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{},logging:{}}});j.info("Setting up MCP server..."),Mj(Z,Y,J,U,{logger:j,toolCtx:()=>qj,promptCtx:()=>({locale:"en"}),resourceCtx:()=>({locale:"en"}),presentations:new _j(Q)});let V=new Cj({sessionIdGenerator:K?()=>Ij():void 0,enableJsonResponse:!0});return Z.connect(V).then(()=>({server:Z,transport:V}))}async function T(j){await Promise.allSettled([j.transport.close(),j.server.close()])}function bj(j){return j instanceof Error?j.stack??j.message:String(j)}function Yj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,validateAuth:Z,requiredAuthMethods:V}){j.info("Setting up MCP handler...",{requiredAuthMethods:V??[]});let L=process.env.CONTRACTSPEC_MCP_STATEFUL==="1",H=new Map;async function $(B){let F=await wj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,stateful:!1});try{return await F.transport.handleRequest(n(B))}finally{await T(F)}}async function G(B){let F=H.get(B);if(!F)return;H.delete(B),await T(F)}async function p(B){let F=B.headers.get("mcp-session-id"),N,q=!1;if(F){let E=H.get(F);if(!E)return i(404,-32001,"Session not found");N=E}else N=await wj({logger:j,path:w,serverName:Y,ops:J,resources:U,prompts:Q,presentations:K,stateful:!0}),q=!0;try{let E=await N.transport.handleRequest(n(B)),A=N.transport.sessionId;if(A&&!H.has(A))H.set(A,N);if(B.method==="DELETE"&&A)await G(A);else if(!A&&q)await T(N);return E}catch(E){if(q)await T(N);throw E}}return new Rj({name:`mcp-${Y}`}).all(w,async({request:B})=>{try{if(Z){let F=await Z(B);if(!F.valid)return i(401,-32002,"Authentication failed",F.reason)}if(L)return await p(B);return await $(B)}catch(F){return j.error("Error handling MCP request",{path:w,method:B.method,error:bj(F)}),i(500,-32000,"Internal error")}})}import{defaultDocRegistry as Oj}from"@contractspec/lib.contracts-spec/docs";var Dj=20,zj=100;function P(j){return j?.trim().toLowerCase()??""}function Jj(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function Tj(j){return(Array.isArray(j)?j:j?[j]:[]).map((Y)=>P(Y)).filter(Boolean)}function Sj(j){if(!j||Number.isNaN(j))return Dj;return Math.min(Math.max(j,1),zj)}function hj(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function c({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function kj(j,w){if(!w)return 1;let Y=w.split(/\s+/).filter(Boolean),J=P(j.block.title),U=P(j.block.id),Q=P(j.block.summary),K=P(j.block.body),Z=P(j.route),V=(j.block.tags??[]).map(($)=>P($)),L=[J,U,Q,K,Z,...V].join(" ");if(Y.some(($)=>!L.includes($)))return 0;let H=0;for(let $ of Y){if(U.includes($))H+=8;if(J.includes($))H+=7;if(V.some((G)=>G.includes($)))H+=5;if(Q.includes($))H+=4;if(Z.includes($))H+=3;if(K.includes($))H+=2}return H}function C(j,w){let Y=P(typeof w.query==="string"?w.query:void 0),J=Tj(w.tag),U=P(typeof w.visibility==="string"?w.visibility:void 0),Q=P(typeof w.kind==="string"?w.kind:void 0),K=Sj(typeof w.limit==="number"?w.limit:void 0),Z=hj(typeof w.offset==="number"?w.offset:void 0),V=j.map(($)=>({doc:c($),score:kj($,Y)})).filter(({doc:$,score:G})=>{let p=Y?G>0:!0,B=J.length?J.every((q)=>$.tags.some((E)=>P(E).includes(q))):!0,F=U?P($.visibility)===U:!0,N=Q?P($.kind)===Q:!0;return p&&B&&F&&N}).sort(($,G)=>{if(G.score!==$.score)return G.score-$.score;return $.doc.title.localeCompare(G.doc.title)}),L=V.slice(Z,Z+K).map(({doc:$})=>$),H=Z+L.length<V.length?Z+L.length:void 0;return{docs:L,items:L,total:V.length,...H!=null?{nextOffset:H}:{}}}function S(j){let w=decodeURIComponent(j),Y=Oj.get(w);if(!Y)return;return{doc:c(Y),content:String(Y.block.body??"")}}function h(j,w){let Y=Jj(w),J=j.find((U)=>Jj(U.route)===Y);if(!J)return;return{doc:c(J),content:String(J.block.body??"")}}function k(j){let w=new Map,Y=new Map,J=new Map;for(let Q of j){let K=Q.block.kind??"reference",Z=Q.block.visibility??"public";Y.set(K,(Y.get(K)??0)+1),J.set(Z,(J.get(Z)??0)+1);for(let V of Q.block.tags??[])w.set(V,(w.get(V)??0)+1)}let U=(Q,K)=>[...Q.entries()].sort((Z,V)=>V[1]-Z[1]||Z[0].localeCompare(V[0])).map(([Z,V])=>({[K]:Z,count:V}));return{totalDocs:j.length,tags:U(w,"tag"),kinds:U(Y,"kind"),visibilities:U(J,"visibility")}}import{EventRegistry as fj,OperationSpecRegistry as vj}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as yj}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as mj,ContractReferenceQuery as lj,DocsGenerateCommand as pj,DocsGeneratedEvent as gj,DocsIndexDataView as dj,DocsIndexQuery as uj,DocsLayoutPresentation as nj,DocsPublishCommand as ij,DocsPublishedEvent as cj,DocsReferencePagePresentation as aj,DocsSearchForm as oj,ExampleCatalogDataView as tj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as rj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as sj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as ej,serializeEventSpec as jw,serializeFormSpec as ww,serializeOperationSpec as Yw,serializePresentationSpec as Jw}from"@contractspec/lib.contracts-spec/serialization";var f=null;function Qw(){let j=new vj;return j.register(uj).register(lj).register(pj).register(ij),j}function Uw(){if(!f)f=Qw();return f}function a(j,w){return Uw().get(j,w)}var v=null;function Zw(){let j=new fj;return j.register(gj).register(cj),j}function $w(){if(!v)v=Zw();return v}function o(j,w){return $w().get(j,w)}var y=null;function Kw(){let j=new sj;return j.register(nj).register(aj),j}function Vw(){if(!y)y=Kw();return y}function t(j,w){return Vw().get(j,w)}var m=null;function Xw(){let j=new yj;return j.register(dj).register(mj).register(tj),j}function Hw(){if(!m)m=Xw();return m}function r(j,w){return Hw().get(j,w)}var l=null;function Bw(){let j=new rj;return j.register(oj),j}function Fw(){if(!l)l=Bw();return l}function s(j,w){return Fw().get(j)}function Qj(j,w){let Y=a(j,w);return Yw(Y)??void 0}function Uj(j,w){let Y=o(j,w);return jw(Y)??void 0}function Zj(j,w){let Y=t(j,w);return Jw(Y)??void 0}function $j(j,w){let Y=r(j,w);return ej(Y)??void 0}function Kj(j,w){let Y=s(j,w);return ww(Y)??void 0}function Ww(){f=null}function Pw(){v=null}function Gw(){y=null}function Nw(){m=null}function Lw(){l=null}function ZY(){Ww(),Pw(),Gw(),Nw(),Lw()}import{defaultDocRegistry as Ew}from"@contractspec/lib.contracts-spec/docs";function xw(j){return j?.trim().toLowerCase()??""}function Mw(j){for(let w of j??[]){let Y=Ew.get(w);if(Y)return Y.route}return}function Vj(j,w,Y,J){let U=j.meta.title??j.meta.key,Q=Mw(j.meta.docId),K=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:U,description:K,markdown:[`# ${U}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,Q?`- Docs route: ${Q}`:"",K?`
2
2
  ${K}`:""].filter(Boolean).join(`
3
- `),...Q?{route:Q}:{},...Y?{schema:Y}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function I(j){let w=j.includeSchema??!1,Y=Nw(j.type),J=a(j.key,j.version);if(J&&(!Y||Y==="operation"||Y===J.meta.kind))return{reference:Vj(J,J.meta.kind,w?Qj(j.key,j.version):void 0,J.policy)};let U=[{type:"data-view",spec:r(j.key,j.version),schema:w?$j(j.key,j.version):void 0},{type:"form",spec:s(j.key,j.version),schema:w?Kj(j.key,j.version):void 0},{type:"presentation",spec:t(j.key,j.version),schema:w?Zj(j.key,j.version):void 0},{type:"event",spec:o(j.key,j.version),schema:w?Uj(j.key,j.version):void 0}];for(let Q of U)if(Q.spec&&(!Y||Y===Q.type))return{reference:Vj(Q.spec,Q.type,Q.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as Xj,PromptRegistry as Ew}from"@contractspec/lib.contracts-spec";import W from"zod";var Hj=["@contractspec"],Bj=["docs","mcp"];function Fj(j){let w=new Ew;return w.register(Xj({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:Bj,stability:"beta",owners:Hj},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:W.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:W.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:W.string().optional()}],input:W.object({topic:W.string().optional(),kind:W.string().optional(),tag:W.string().optional()}),render:async({topic:Y,kind:J,tag:U})=>{let Q=C(j,{query:Y,kind:J,tag:U,limit:3}),K=Q.docs.length?Q.docs.map((Z)=>`- ${Z.title} (${Z.id}) -> ${Z.route}`).join(`
3
+ `),...Q?{route:Q}:{},...Y?{schema:Y}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function I(j){let w=j.includeSchema??!1,Y=xw(j.type),J=a(j.key,j.version);if(J&&(!Y||Y==="operation"||Y===J.meta.kind))return{reference:Vj(J,J.meta.kind,w?Qj(j.key,j.version):void 0,J.policy)};let U=[{type:"data-view",spec:r(j.key,j.version),schema:w?$j(j.key,j.version):void 0},{type:"form",spec:s(j.key,j.version),schema:w?Kj(j.key,j.version):void 0},{type:"presentation",spec:t(j.key,j.version),schema:w?Zj(j.key,j.version):void 0},{type:"event",spec:o(j.key,j.version),schema:w?Uj(j.key,j.version):void 0}];for(let Q of U)if(Q.spec&&(!Y||Y===Q.type))return{reference:Vj(Q.spec,Q.type,Q.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as Xj,PromptRegistry as _w}from"@contractspec/lib.contracts-spec";import W from"zod";var Hj=["@contractspec"],Bj=["docs","mcp"];function Fj(j){let w=new _w;return w.register(Xj({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:Bj,stability:"beta",owners:Hj},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:W.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:W.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:W.string().optional()}],input:W.object({topic:W.string().optional(),kind:W.string().optional(),tag:W.string().optional()}),render:async({topic:Y,kind:J,tag:U})=>{let Q=C(j,{query:Y,kind:J,tag:U,limit:3}),K=Q.docs.length?Q.docs.map((Z)=>`- ${Z.title} (${Z.id}) -> ${Z.route}`).join(`
4
4
  `):"- 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.",Y?`Topic: ${Y}`:"",J?`Kind: ${J}`:"",U?`Tag: ${U}`:"","Suggested starting docs:",K].filter(Boolean).join(`
5
5
  `)},{type:"resource",uri:"docs://index",title:"DocBlocks index"},{type:"resource",uri:"docs://facets",title:"Docs facets"}]}})),w.register(Xj({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:Bj,stability:"beta",owners:Hj},args:[{name:"key",description:"ContractSpec key to resolve.",required:!0,schema:W.string()},{name:"version",description:"Optional version override.",required:!1,schema:W.string().optional()},{name:"type",description:"Optional surface type: command, query, form, data-view, presentation, event.",required:!1,schema:W.string().optional()}],input:W.object({key:W.string(),version:W.string().optional(),type:W.string().optional()}),render:async({key:Y,version:J,type:U})=>{let Q=I({key:Y,version:J,type:U,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: ${Q.key}`,`Resolved type: ${Q.type}`,Q.route?`Docs route: ${Q.route}`:"",`Resource URI: docs://contract-reference/${encodeURIComponent(Y)}`].filter(Boolean).join(`
6
- `)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(Y)}`,title:"Contract reference"}]}})),w}import{defineResourceTemplate as x,ResourceRegistry as xw}from"@contractspec/lib.contracts-spec";import X from"zod";var M=["docs","mcp"];function Wj(j){let w=new xw,Y=(J)=>C(j,J);return w.register(x({meta:{uriTemplate:"docs://index",title:"DocBlocks index",description:"Default ContractSpec docs index resource.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(Y({}),null,2)})})),w.register(x({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:M},input:X.object({query:X.string().optional(),tag:X.string().optional(),kind:X.string().optional(),visibility:X.string().optional(),limit:X.coerce.number().optional(),offset:X.coerce.number().optional()}),resolve:async(J)=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(Y(J),null,2)})})),w.register(x({meta:{uriTemplate:"docs://list",title:"DocBlocks index (legacy alias)",description:"Compatibility alias for the docs index resource.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://list",mimeType:"application/json",data:JSON.stringify(Y({}),null,2)})})),w.register(x({meta:{uriTemplate:"docs://doc/{id}",title:"Doc markdown",description:"Fetch a single DocBlock body by id as markdown.",mimeType:"text/markdown",tags:M},input:X.object({id:X.string()}),resolve:async({id:J})=>{let U=S(J);if(!U)return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/plain",data:`DocBlock not found: ${J}`};return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/markdown",data:U.content}}})),w.register(x({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:M},input:X.object({routePath:X.string()}),resolve:async({routePath:J})=>({uri:`docs://route/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(h(j,J)??{error:"not_found",route:J},null,2)})})),w.register(x({meta:{uriTemplate:"docs://facets",title:"Docs facets",description:"Counts of available tags, kinds, and visibilities across docs.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://facets",mimeType:"application/json",data:JSON.stringify(k(j),null,2)})})),w.register(x({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:M},input:X.object({key:X.string(),version:X.string().optional(),type:X.string().optional(),includeSchema:X.coerce.boolean().optional()}),resolve:async({key:J,version:U,type:Q,includeSchema:K})=>({uri:`docs://contract-reference/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(I({key:J,version:U,type:Q,includeSchema:K}),null,2)})})),w}import{defineCommand as b,defineSchemaModel as R,installOp as O,OperationSpecRegistry as Mw}from"@contractspec/lib.contracts-spec";import{ContractReferenceInput as _w,ContractReferenceOutput as Aw,DocsIndexInput as Cw,DocsIndexOutput as Iw}from"@contractspec/lib.contracts-spec/docs";import{ScalarTypeEnum as _}from"@contractspec/lib.schema";var D=["@contractspec"],z=["docs","mcp"],Rw=R({name:"DocsGetInput",fields:{id:{type:_.String_unsecure(),isOptional:!1}}}),qw=R({name:"DocsGetOutput",fields:{doc:{type:_.JSON(),isOptional:!1},content:{type:_.String_unsecure(),isOptional:!1}}}),bw=R({name:"DocsResolveRouteInput",fields:{route:{type:_.String_unsecure(),isOptional:!1}}}),Ow=R({name:"DocsResolveRouteOutput",fields:{doc:{type:_.JSON(),isOptional:!1},content:{type:_.String_unsecure(),isOptional:!1}}}),Dw=R({name:"DocsFacetsInput",fields:{}}),zw=R({name:"DocsFacetsOutput",fields:{facets:{type:_.JSON(),isOptional:!1}}});function Pj(j){let w=new Mw;return O(w,b({meta:{key:"docs.search",version:"1.0.0",stability:"beta",owners:D,tags:z,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:Cw,output:Iw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_search-v1_0_0"}}}),async(Y)=>C(j,Y)),O(w,b({meta:{key:"docs.get",version:"1.0.0",stability:"beta",owners:D,tags:z,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:Rw,output:qw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_get-v1_0_0"}}}),async({id:Y})=>{let J=S(Y);if(!J)throw Error(`DocBlock not found: ${Y}`);return J}),O(w,b({meta:{key:"docs.resolveRoute",version:"1.0.0",stability:"beta",owners:D,tags:z,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:bw,output:Ow},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_resolve_route-v1_0_0"}}}),async({route:Y})=>{let J=h(j,Y);if(!J)throw Error(`Doc route not found: ${Y}`);return J}),O(w,b({meta:{key:"docs.contract.lookup",version:"1.0.0",stability:"beta",owners:D,tags:z,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:_w,output:Aw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_contract_reference-v1_0_0"}}}),async(Y)=>I(Y)),O(w,b({meta:{key:"docs.list.facets",version:"1.0.0",stability:"beta",owners:D,tags:z,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:Dw,output:zw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_list_facets-v1_0_0"}}}),async()=>({facets:k(j)})),w}import{defaultDocRegistry as Tw}from"@contractspec/lib.contracts-spec/docs";function qY(j="/api/mcp/docs",w={}){let Y=Tw.list();return Yj({logger:e,path:j,serverName:"contractspec-docs-mcp",ops:Pj(Y),resources:Wj(Y),prompts:Fj(Y),presentations:w.includePresentations?Y.map(({descriptor:J})=>J):void 0})}export{qY as createDocsMcpHandler};
6
+ `)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(Y)}`,title:"Contract reference"}]}})),w}import{defineResourceTemplate as x,ResourceRegistry as Aw}from"@contractspec/lib.contracts-spec";import X from"zod";var M=["docs","mcp"];function Wj(j){let w=new Aw,Y=(J)=>C(j,J);return w.register(x({meta:{uriTemplate:"docs://index",title:"DocBlocks index",description:"Default ContractSpec docs index resource.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(Y({}),null,2)})})),w.register(x({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:M},input:X.object({query:X.string().optional(),tag:X.string().optional(),kind:X.string().optional(),visibility:X.string().optional(),limit:X.coerce.number().optional(),offset:X.coerce.number().optional()}),resolve:async(J)=>({uri:"docs://index",mimeType:"application/json",data:JSON.stringify(Y(J),null,2)})})),w.register(x({meta:{uriTemplate:"docs://list",title:"DocBlocks index (legacy alias)",description:"Compatibility alias for the docs index resource.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://list",mimeType:"application/json",data:JSON.stringify(Y({}),null,2)})})),w.register(x({meta:{uriTemplate:"docs://doc/{id}",title:"Doc markdown",description:"Fetch a single DocBlock body by id as markdown.",mimeType:"text/markdown",tags:M},input:X.object({id:X.string()}),resolve:async({id:J})=>{let U=S(J);if(!U)return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/plain",data:`DocBlock not found: ${J}`};return{uri:`docs://doc/${encodeURIComponent(J)}`,mimeType:"text/markdown",data:U.content}}})),w.register(x({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:M},input:X.object({routePath:X.string()}),resolve:async({routePath:J})=>({uri:`docs://route/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(h(j,J)??{error:"not_found",route:J},null,2)})})),w.register(x({meta:{uriTemplate:"docs://facets",title:"Docs facets",description:"Counts of available tags, kinds, and visibilities across docs.",mimeType:"application/json",tags:M},input:X.object({}),resolve:async()=>({uri:"docs://facets",mimeType:"application/json",data:JSON.stringify(k(j),null,2)})})),w.register(x({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:M},input:X.object({key:X.string(),version:X.string().optional(),type:X.string().optional(),includeSchema:X.coerce.boolean().optional()}),resolve:async({key:J,version:U,type:Q,includeSchema:K})=>({uri:`docs://contract-reference/${encodeURIComponent(J)}`,mimeType:"application/json",data:JSON.stringify(I({key:J,version:U,type:Q,includeSchema:K}),null,2)})})),w}import{defineCommand as b,defineSchemaModel as R,installOp as O,OperationSpecRegistry as Cw}from"@contractspec/lib.contracts-spec";import{ContractReferenceInput as Iw,ContractReferenceOutput as Rw,DocsIndexInput as qw,DocsIndexOutput as bw}from"@contractspec/lib.contracts-spec/docs";import{ScalarTypeEnum as _}from"@contractspec/lib.schema";var D=["@contractspec"],z=["docs","mcp"],Ow=R({name:"DocsGetInput",fields:{id:{type:_.String_unsecure(),isOptional:!1}}}),Dw=R({name:"DocsGetOutput",fields:{doc:{type:_.JSON(),isOptional:!1},content:{type:_.String_unsecure(),isOptional:!1}}}),zw=R({name:"DocsResolveRouteInput",fields:{route:{type:_.String_unsecure(),isOptional:!1}}}),Tw=R({name:"DocsResolveRouteOutput",fields:{doc:{type:_.JSON(),isOptional:!1},content:{type:_.String_unsecure(),isOptional:!1}}}),Sw=R({name:"DocsFacetsInput",fields:{}}),hw=R({name:"DocsFacetsOutput",fields:{facets:{type:_.JSON(),isOptional:!1}}});function Pj(j){let w=new Cw;return O(w,b({meta:{key:"docs.search",version:"1.0.0",stability:"beta",owners:D,tags:z,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:qw,output:bw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_search-v1_0_0"}}}),async(Y)=>C(j,Y)),O(w,b({meta:{key:"docs.get",version:"1.0.0",stability:"beta",owners:D,tags:z,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:Ow,output:Dw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_get-v1_0_0"}}}),async({id:Y})=>{let J=S(Y);if(!J)throw Error(`DocBlock not found: ${Y}`);return J}),O(w,b({meta:{key:"docs.resolveRoute",version:"1.0.0",stability:"beta",owners:D,tags:z,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:zw,output:Tw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_resolve_route-v1_0_0"}}}),async({route:Y})=>{let J=h(j,Y);if(!J)throw Error(`Doc route not found: ${Y}`);return J}),O(w,b({meta:{key:"docs.contract.lookup",version:"1.0.0",stability:"beta",owners:D,tags:z,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:Iw,output:Rw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_contract_reference-v1_0_0"}}}),async(Y)=>I(Y)),O(w,b({meta:{key:"docs.list.facets",version:"1.0.0",stability:"beta",owners:D,tags:z,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:Sw,output:hw},policy:{auth:"anonymous"},transport:{mcp:{toolName:"docs_list_facets-v1_0_0"}}}),async()=>({facets:k(j)})),w}import{defaultDocRegistry as kw}from"@contractspec/lib.contracts-spec/docs";function SY(j="/api/mcp/docs",w={}){let Y=kw.list();return Yj({logger:e,path:j,serverName:"contractspec-docs-mcp",ops:Pj(Y),resources:Wj(Y),prompts:Fj(Y),presentations:w.includePresentations?Y.map(({descriptor:J})=>J):void 0})}export{SY as createDocsMcpHandler};
@@ -1,6 +1,6 @@
1
- import{defaultDocRegistry as n}from"@contractspec/lib.contracts-spec/docs";var g=20,c=100;function U(j){return j?.trim().toLowerCase()??""}function O(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function i(j){return(Array.isArray(j)?j:j?[j]:[]).map((B)=>U(B)).filter(Boolean)}function a(j){if(!j||Number.isNaN(j))return g;return Math.min(Math.max(j,1),c)}function o(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function C({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function t(j,w){if(!w)return 1;let B=w.split(/\s+/).filter(Boolean),J=U(j.block.title),Z=U(j.block.id),H=U(j.block.summary),F=U(j.block.body),$=U(j.route),K=(j.block.tags??[]).map((Y)=>U(Y)),G=[J,Z,H,F,$,...K].join(" ");if(B.some((Y)=>!G.includes(Y)))return 0;let V=0;for(let Y of B){if(Z.includes(Y))V+=8;if(J.includes(Y))V+=7;if(K.some((X)=>X.includes(Y)))V+=5;if(H.includes(Y))V+=4;if($.includes(Y))V+=3;if(F.includes(Y))V+=2}return V}function q(j,w){let B=U(typeof w.query==="string"?w.query:void 0),J=i(w.tag),Z=U(typeof w.visibility==="string"?w.visibility:void 0),H=U(typeof w.kind==="string"?w.kind:void 0),F=a(typeof w.limit==="number"?w.limit:void 0),$=o(typeof w.offset==="number"?w.offset:void 0),K=j.map((Y)=>({doc:C(Y),score:t(Y,B)})).filter(({doc:Y,score:X})=>{let k=B?X>0:!0,y=J.length?J.every((l)=>Y.tags.some((d)=>U(d).includes(l))):!0,p=Z?U(Y.visibility)===Z:!0,u=H?U(Y.kind)===H:!0;return k&&y&&p&&u}).sort((Y,X)=>{if(X.score!==Y.score)return X.score-Y.score;return Y.doc.title.localeCompare(X.doc.title)}),G=K.slice($,$+F).map(({doc:Y})=>Y),V=$+G.length<K.length?$+G.length:void 0;return{docs:G,items:G,total:K.length,...V!=null?{nextOffset:V}:{}}}function yj(j){let w=decodeURIComponent(j),B=n.get(w);if(!B)return;return{doc:C(B),content:String(B.block.body??"")}}function pj(j,w){let B=O(w),J=j.find((Z)=>O(Z.route)===B);if(!J)return;return{doc:C(J),content:String(J.block.body??"")}}function uj(j){let w=new Map,B=new Map,J=new Map;for(let H of j){let F=H.block.kind??"reference",$=H.block.visibility??"public";B.set(F,(B.get(F)??0)+1),J.set($,(J.get($)??0)+1);for(let K of H.block.tags??[])w.set(K,(w.get(K)??0)+1)}let Z=(H,F)=>[...H.entries()].sort(($,K)=>K[1]-$[1]||$[0].localeCompare(K[0])).map(([$,K])=>({[F]:$,count:K}));return{totalDocs:j.length,tags:Z(w,"tag"),kinds:Z(B,"kind"),visibilities:Z(J,"visibility")}}import{EventRegistry as s,OperationSpecRegistry as r}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as e}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as jj,ContractReferenceQuery as wj,DocsGenerateCommand as Bj,DocsGeneratedEvent as Hj,DocsIndexDataView as Jj,DocsIndexQuery as Yj,DocsLayoutPresentation as Zj,DocsPublishCommand as $j,DocsPublishedEvent as Fj,DocsReferencePagePresentation as Kj,DocsSearchForm as Qj,ExampleCatalogDataView as Uj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as Vj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as Xj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as Gj,serializeEventSpec as Nj,serializeFormSpec as Wj,serializeOperationSpec as Aj,serializePresentationSpec as Lj}from"@contractspec/lib.contracts-spec/serialization";var N=null;function Mj(){let j=new r;return j.register(Yj).register(wj).register(Bj).register($j),j}function Cj(){if(!N)N=Mj();return N}function _(j,w){return Cj().get(j,w)}var W=null;function _j(){let j=new s;return j.register(Hj).register(Fj),j}function Ej(){if(!W)W=_j();return W}function E(j,w){return Ej().get(j,w)}var A=null;function Ij(){let j=new Xj;return j.register(Zj).register(Kj),j}function Pj(){if(!A)A=Ij();return A}function I(j,w){return Pj().get(j,w)}var L=null;function Rj(){let j=new e;return j.register(Jj).register(jj).register(Uj),j}function Oj(){if(!L)L=Rj();return L}function P(j,w){return Oj().get(j,w)}var M=null;function qj(){let j=new Vj;return j.register(Qj),j}function Dj(){if(!M)M=qj();return M}function R(j,w){return Dj().get(j)}function D(j,w){let B=_(j,w);return Aj(B)??void 0}function x(j,w){let B=E(j,w);return Nj(B)??void 0}function S(j,w){let B=I(j,w);return Lj(B)??void 0}function b(j,w){let B=P(j,w);return Gj(B)??void 0}function T(j,w){let B=R(j,w);return Wj(B)??void 0}function xj(){N=null}function Sj(){W=null}function bj(){A=null}function Tj(){L=null}function hj(){M=null}function oj(){xj(),Sj(),bj(),Tj(),hj()}import{defaultDocRegistry as zj}from"@contractspec/lib.contracts-spec/docs";function vj(j){return j?.trim().toLowerCase()??""}function fj(j){for(let w of j??[]){let B=zj.get(w);if(B)return B.route}return}function h(j,w,B,J){let Z=j.meta.title??j.meta.key,H=fj(j.meta.docId),F=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:Z,description:F,markdown:[`# ${Z}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,H?`- Docs route: ${H}`:"",F?`
1
+ var n=Object.defineProperty;var g=(j)=>j;function c(j,w){this[j]=g.bind(null,w)}var uj=(j,w)=>{for(var B in w)n(j,B,{get:w[B],enumerable:!0,configurable:!0,set:c.bind(w,B)})};var lj=(j,w)=>()=>(j&&(w=j(j=0)),w);import{defaultDocRegistry as i}from"@contractspec/lib.contracts-spec/docs";var a=20,o=100;function U(j){return j?.trim().toLowerCase()??""}function O(j){let w=decodeURIComponent(j).trim();if(!w)return"/";return w.startsWith("/")?w:`/${w}`}function t(j){return(Array.isArray(j)?j:j?[j]:[]).map((B)=>U(B)).filter(Boolean)}function s(j){if(!j||Number.isNaN(j))return a;return Math.min(Math.max(j,1),o)}function r(j){if(!j||Number.isNaN(j))return 0;return Math.max(j,0)}function C({block:j,route:w}){return{id:j.id,title:j.title,summary:j.summary??"",route:w,visibility:j.visibility??"public",kind:j.kind??"reference",version:j.version??"1.0.0",tags:j.tags??[]}}function e(j,w){if(!w)return 1;let B=w.split(/\s+/).filter(Boolean),J=U(j.block.title),Z=U(j.block.id),H=U(j.block.summary),F=U(j.block.body),$=U(j.route),K=(j.block.tags??[]).map((Y)=>U(Y)),G=[J,Z,H,F,$,...K].join(" ");if(B.some((Y)=>!G.includes(Y)))return 0;let V=0;for(let Y of B){if(Z.includes(Y))V+=8;if(J.includes(Y))V+=7;if(K.some((X)=>X.includes(Y)))V+=5;if(H.includes(Y))V+=4;if($.includes(Y))V+=3;if(F.includes(Y))V+=2}return V}function q(j,w){let B=U(typeof w.query==="string"?w.query:void 0),J=t(w.tag),Z=U(typeof w.visibility==="string"?w.visibility:void 0),H=U(typeof w.kind==="string"?w.kind:void 0),F=s(typeof w.limit==="number"?w.limit:void 0),$=r(typeof w.offset==="number"?w.offset:void 0),K=j.map((Y)=>({doc:C(Y),score:e(Y,B)})).filter(({doc:Y,score:X})=>{let k=B?X>0:!0,y=J.length?J.every((l)=>Y.tags.some((d)=>U(d).includes(l))):!0,p=Z?U(Y.visibility)===Z:!0,u=H?U(Y.kind)===H:!0;return k&&y&&p&&u}).sort((Y,X)=>{if(X.score!==Y.score)return X.score-Y.score;return Y.doc.title.localeCompare(X.doc.title)}),G=K.slice($,$+F).map(({doc:Y})=>Y),V=$+G.length<K.length?$+G.length:void 0;return{docs:G,items:G,total:K.length,...V!=null?{nextOffset:V}:{}}}function gj(j){let w=decodeURIComponent(j),B=i.get(w);if(!B)return;return{doc:C(B),content:String(B.block.body??"")}}function cj(j,w){let B=O(w),J=j.find((Z)=>O(Z.route)===B);if(!J)return;return{doc:C(J),content:String(J.block.body??"")}}function ij(j){let w=new Map,B=new Map,J=new Map;for(let H of j){let F=H.block.kind??"reference",$=H.block.visibility??"public";B.set(F,(B.get(F)??0)+1),J.set($,(J.get($)??0)+1);for(let K of H.block.tags??[])w.set(K,(w.get(K)??0)+1)}let Z=(H,F)=>[...H.entries()].sort(($,K)=>K[1]-$[1]||$[0].localeCompare(K[0])).map(([$,K])=>({[F]:$,count:K}));return{totalDocs:j.length,tags:Z(w,"tag"),kinds:Z(B,"kind"),visibilities:Z(J,"visibility")}}import{EventRegistry as jj,OperationSpecRegistry as wj}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as Bj}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as Hj,ContractReferenceQuery as Jj,DocsGenerateCommand as Yj,DocsGeneratedEvent as Zj,DocsIndexDataView as $j,DocsIndexQuery as Fj,DocsLayoutPresentation as Kj,DocsPublishCommand as Qj,DocsPublishedEvent as Uj,DocsReferencePagePresentation as Vj,DocsSearchForm as Xj,ExampleCatalogDataView as Gj}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as Nj}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as Wj}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as Aj,serializeEventSpec as Lj,serializeFormSpec as Mj,serializeOperationSpec as Cj,serializePresentationSpec as _j}from"@contractspec/lib.contracts-spec/serialization";var N=null;function Ej(){let j=new wj;return j.register(Fj).register(Jj).register(Yj).register(Qj),j}function Ij(){if(!N)N=Ej();return N}function _(j,w){return Ij().get(j,w)}var W=null;function Pj(){let j=new jj;return j.register(Zj).register(Uj),j}function Rj(){if(!W)W=Pj();return W}function E(j,w){return Rj().get(j,w)}var A=null;function Oj(){let j=new Wj;return j.register(Kj).register(Vj),j}function qj(){if(!A)A=Oj();return A}function I(j,w){return qj().get(j,w)}var L=null;function Dj(){let j=new Bj;return j.register($j).register(Hj).register(Gj),j}function xj(){if(!L)L=Dj();return L}function P(j,w){return xj().get(j,w)}var M=null;function Sj(){let j=new Nj;return j.register(Xj),j}function bj(){if(!M)M=Sj();return M}function R(j,w){return bj().get(j)}function D(j,w){let B=_(j,w);return Cj(B)??void 0}function x(j,w){let B=E(j,w);return Lj(B)??void 0}function S(j,w){let B=I(j,w);return _j(B)??void 0}function b(j,w){let B=P(j,w);return Aj(B)??void 0}function T(j,w){let B=R(j,w);return Mj(B)??void 0}function Tj(){N=null}function hj(){W=null}function zj(){A=null}function vj(){L=null}function fj(){M=null}function ww(){Tj(),hj(),zj(),vj(),fj()}import{defaultDocRegistry as mj}from"@contractspec/lib.contracts-spec/docs";function kj(j){return j?.trim().toLowerCase()??""}function yj(j){for(let w of j??[]){let B=mj.get(w);if(B)return B.route}return}function h(j,w,B,J){let Z=j.meta.title??j.meta.key,H=yj(j.meta.docId),F=j.meta.description;return{key:j.meta.key,version:j.meta.version,type:w,title:Z,description:F,markdown:[`# ${Z}`,`- Key: ${j.meta.key}`,`- Type: ${w}`,`- Version: ${j.meta.version}`,H?`- Docs route: ${H}`:"",F?`
2
2
  ${F}`:""].filter(Boolean).join(`
3
- `),...H?{route:H}:{},...B?{schema:B}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function z(j){let w=j.includeSchema??!1,B=vj(j.type),J=_(j.key,j.version);if(J&&(!B||B==="operation"||B===J.meta.kind))return{reference:h(J,J.meta.kind,w?D(j.key,j.version):void 0,J.policy)};let Z=[{type:"data-view",spec:P(j.key,j.version),schema:w?b(j.key,j.version):void 0},{type:"form",spec:R(j.key,j.version),schema:w?T(j.key,j.version):void 0},{type:"presentation",spec:I(j.key,j.version),schema:w?S(j.key,j.version):void 0},{type:"event",spec:E(j.key,j.version),schema:w?x(j.key,j.version):void 0}];for(let H of Z)if(H.spec&&(!B||B===H.type))return{reference:h(H.spec,H.type,H.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as v,PromptRegistry as mj}from"@contractspec/lib.contracts-spec";import Q from"zod";var f=["@contractspec"],m=["docs","mcp"];function Jw(j){let w=new mj;return w.register(v({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:m,stability:"beta",owners:f},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:Q.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:Q.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:Q.string().optional()}],input:Q.object({topic:Q.string().optional(),kind:Q.string().optional(),tag:Q.string().optional()}),render:async({topic:B,kind:J,tag:Z})=>{let H=q(j,{query:B,kind:J,tag:Z,limit:3}),F=H.docs.length?H.docs.map(($)=>`- ${$.title} (${$.id}) -> ${$.route}`).join(`
3
+ `),...H?{route:H}:{},...B?{schema:B}:{},...J?{policy:J}:{},tags:j.meta.tags??[],owners:j.meta.owners??[],stability:j.meta.stability}}function z(j){let w=j.includeSchema??!1,B=kj(j.type),J=_(j.key,j.version);if(J&&(!B||B==="operation"||B===J.meta.kind))return{reference:h(J,J.meta.kind,w?D(j.key,j.version):void 0,J.policy)};let Z=[{type:"data-view",spec:P(j.key,j.version),schema:w?b(j.key,j.version):void 0},{type:"form",spec:R(j.key,j.version),schema:w?T(j.key,j.version):void 0},{type:"presentation",spec:I(j.key,j.version),schema:w?S(j.key,j.version):void 0},{type:"event",spec:E(j.key,j.version),schema:w?x(j.key,j.version):void 0}];for(let H of Z)if(H.spec&&(!B||B===H.type))return{reference:h(H.spec,H.type,H.schema)};throw Error(`Contract reference not found: ${j.key}`)}import{definePrompt as v,PromptRegistry as pj}from"@contractspec/lib.contracts-spec";import Q from"zod";var f=["@contractspec"],m=["docs","mcp"];function Qw(j){let w=new pj;return w.register(v({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:m,stability:"beta",owners:f},args:[{name:"topic",description:"Goal or subject to search for.",required:!1,schema:Q.string().optional()},{name:"kind",description:"Optional doc kind filter.",required:!1,schema:Q.string().optional()},{name:"tag",description:"Optional tag filter.",required:!1,schema:Q.string().optional()}],input:Q.object({topic:Q.string().optional(),kind:Q.string().optional(),tag:Q.string().optional()}),render:async({topic:B,kind:J,tag:Z})=>{let H=q(j,{query:B,kind:J,tag:Z,limit:3}),F=H.docs.length?H.docs.map(($)=>`- ${$.title} (${$.id}) -> ${$.route}`).join(`
4
4
  `):"- 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.",B?`Topic: ${B}`:"",J?`Kind: ${J}`:"",Z?`Tag: ${Z}`:"","Suggested starting docs:",F].filter(Boolean).join(`
5
5
  `)},{type:"resource",uri:"docs://index",title:"DocBlocks index"},{type:"resource",uri:"docs://facets",title:"Docs facets"}]}})),w.register(v({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:m,stability:"beta",owners:f},args:[{name:"key",description:"ContractSpec key to resolve.",required:!0,schema:Q.string()},{name:"version",description:"Optional version override.",required:!1,schema:Q.string().optional()},{name:"type",description:"Optional surface type: command, query, form, data-view, presentation, event.",required:!1,schema:Q.string().optional()}],input:Q.object({key:Q.string(),version:Q.string().optional(),type:Q.string().optional()}),render:async({key:B,version:J,type:Z})=>{let H=z({key:B,version:J,type:Z,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: ${H.key}`,`Resolved type: ${H.type}`,H.route?`Docs route: ${H.route}`:"",`Resource URI: docs://contract-reference/${encodeURIComponent(B)}`].filter(Boolean).join(`
6
- `)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(B)}`,title:"Contract reference"}]}})),w}export{Jw as buildDocPrompts};
6
+ `)},{type:"resource",uri:`docs://contract-reference/${encodeURIComponent(B)}`,title:"Contract reference"}]}})),w}export{Qw as buildDocPrompts};
@@ -1,3 +1,3 @@
1
- import{EventRegistry as Z,OperationSpecRegistry as _}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as $}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as z,ContractReferenceQuery as C,DocsGenerateCommand as E,DocsGeneratedEvent as R,DocsIndexDataView as P,DocsIndexQuery as I,DocsLayoutPresentation as q,DocsPublishCommand as T,DocsPublishedEvent as h,DocsReferencePagePresentation as m,DocsSearchForm as S,ExampleCatalogDataView as u}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as l}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as k}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as v,serializeEventSpec as d,serializeFormSpec as n,serializeOperationSpec as y,serializePresentationSpec as t}from"@contractspec/lib.contracts-spec/serialization";var B=null;function o(){let b=new _;return b.register(I).register(C).register(E).register(T),b}function p(){if(!B)B=o();return B}function K(b,f){return p().get(b,f)}var D=null;function g(){let b=new Z;return b.register(R).register(h),b}function i(){if(!D)D=g();return D}function L(b,f){return i().get(b,f)}var F=null;function c(){let b=new k;return b.register(q).register(m),b}function a(){if(!F)F=c();return F}function M(b,f){return a().get(b,f)}var G=null;function r(){let b=new $;return b.register(P).register(z).register(u),b}function s(){if(!G)G=r();return G}function N(b,f){return s().get(b,f)}var H=null;function e(){let b=new l;return b.register(S),b}function bb(){if(!H)H=e();return H}function O(b,f){return bb().get(b)}function Q(b,f){let j=K(b,f);return y(j)??void 0}function U(b,f){let j=L(b,f);return d(j)??void 0}function V(b,f){let j=M(b,f);return t(j)??void 0}function W(b,f){let j=N(b,f);return v(j)??void 0}function X(b,f){let j=O(b,f);return n(j)??void 0}function fb(){B=null}function jb(){D=null}function wb(){F=null}function xb(){G=null}function Ab(){H=null}function Nb(){fb(),jb(),wb(),xb(),Ab()}import{defaultDocRegistry as Bb}from"@contractspec/lib.contracts-spec/docs";function Db(b){return b?.trim().toLowerCase()??""}function Fb(b){for(let f of b??[]){let j=Bb.get(f);if(j)return j.route}return}function Y(b,f,j,x){let A=b.meta.title??b.meta.key,w=Fb(b.meta.docId),J=b.meta.description;return{key:b.meta.key,version:b.meta.version,type:f,title:A,description:J,markdown:[`# ${A}`,`- Key: ${b.meta.key}`,`- Type: ${f}`,`- Version: ${b.meta.version}`,w?`- Docs route: ${w}`:"",J?`
1
+ var Z=Object.defineProperty;var _=(b)=>b;function $(b,f){this[b]=_.bind(null,f)}var Kb=(b,f)=>{for(var j in f)Z(b,j,{get:f[j],enumerable:!0,configurable:!0,set:$.bind(f,j)})};var Lb=(b,f)=>()=>(b&&(f=b(b=0)),f);import{EventRegistry as z,OperationSpecRegistry as C}from"@contractspec/lib.contracts-spec";import{DataViewRegistry as E}from"@contractspec/lib.contracts-spec/data-views";import{ContractReferenceDataView as R,ContractReferenceQuery as P,DocsGenerateCommand as I,DocsGeneratedEvent as q,DocsIndexDataView as T,DocsIndexQuery as h,DocsLayoutPresentation as m,DocsPublishCommand as S,DocsPublishedEvent as u,DocsReferencePagePresentation as l,DocsSearchForm as k,ExampleCatalogDataView as v}from"@contractspec/lib.contracts-spec/docs";import{FormRegistry as d}from"@contractspec/lib.contracts-spec/forms";import{PresentationRegistry as n}from"@contractspec/lib.contracts-spec/presentations";import{serializeDataViewSpec as y,serializeEventSpec as t,serializeFormSpec as o,serializeOperationSpec as p,serializePresentationSpec as g}from"@contractspec/lib.contracts-spec/serialization";var B=null;function i(){let b=new C;return b.register(h).register(P).register(I).register(S),b}function c(){if(!B)B=i();return B}function K(b,f){return c().get(b,f)}var D=null;function a(){let b=new z;return b.register(q).register(u),b}function r(){if(!D)D=a();return D}function L(b,f){return r().get(b,f)}var F=null;function s(){let b=new n;return b.register(m).register(l),b}function e(){if(!F)F=s();return F}function M(b,f){return e().get(b,f)}var G=null;function bb(){let b=new E;return b.register(T).register(R).register(v),b}function fb(){if(!G)G=bb();return G}function N(b,f){return fb().get(b,f)}var H=null;function jb(){let b=new d;return b.register(k),b}function wb(){if(!H)H=jb();return H}function O(b,f){return wb().get(b)}function Q(b,f){let j=K(b,f);return p(j)??void 0}function U(b,f){let j=L(b,f);return t(j)??void 0}function V(b,f){let j=M(b,f);return g(j)??void 0}function W(b,f){let j=N(b,f);return y(j)??void 0}function X(b,f){let j=O(b,f);return o(j)??void 0}function xb(){B=null}function Ab(){D=null}function Bb(){F=null}function Db(){G=null}function Fb(){H=null}function Xb(){xb(),Ab(),Bb(),Db(),Fb()}import{defaultDocRegistry as Gb}from"@contractspec/lib.contracts-spec/docs";function Hb(b){return b?.trim().toLowerCase()??""}function Jb(b){for(let f of b??[]){let j=Gb.get(f);if(j)return j.route}return}function Y(b,f,j,x){let A=b.meta.title??b.meta.key,w=Jb(b.meta.docId),J=b.meta.description;return{key:b.meta.key,version:b.meta.version,type:f,title:A,description:J,markdown:[`# ${A}`,`- Key: ${b.meta.key}`,`- Type: ${f}`,`- Version: ${b.meta.version}`,w?`- Docs route: ${w}`:"",J?`
2
2
  ${J}`:""].filter(Boolean).join(`
3
- `),...w?{route:w}:{},...j?{schema:j}:{},...x?{policy:x}:{},tags:b.meta.tags??[],owners:b.meta.owners??[],stability:b.meta.stability}}function Vb(b){let f=b.includeSchema??!1,j=Db(b.type),x=K(b.key,b.version);if(x&&(!j||j==="operation"||j===x.meta.kind))return{reference:Y(x,x.meta.kind,f?Q(b.key,b.version):void 0,x.policy)};let A=[{type:"data-view",spec:N(b.key,b.version),schema:f?W(b.key,b.version):void 0},{type:"form",spec:O(b.key,b.version),schema:f?X(b.key,b.version):void 0},{type:"presentation",spec:M(b.key,b.version),schema:f?V(b.key,b.version):void 0},{type:"event",spec:L(b.key,b.version),schema:f?U(b.key,b.version):void 0}];for(let w of A)if(w.spec&&(!j||j===w.type))return{reference:Y(w.spec,w.type,w.schema)};throw Error(`Contract reference not found: ${b.key}`)}export{Vb as resolveContractReference};
3
+ `),...w?{route:w}:{},...j?{schema:j}:{},...x?{policy:x}:{},tags:b.meta.tags??[],owners:b.meta.owners??[],stability:b.meta.stability}}function $b(b){let f=b.includeSchema??!1,j=Hb(b.type),x=K(b.key,b.version);if(x&&(!j||j==="operation"||j===x.meta.kind))return{reference:Y(x,x.meta.kind,f?Q(b.key,b.version):void 0,x.policy)};let A=[{type:"data-view",spec:N(b.key,b.version),schema:f?W(b.key,b.version):void 0},{type:"form",spec:O(b.key,b.version),schema:f?X(b.key,b.version):void 0},{type:"presentation",spec:M(b.key,b.version),schema:f?V(b.key,b.version):void 0},{type:"event",spec:L(b.key,b.version),schema:f?U(b.key,b.version):void 0}];for(let w of A)if(w.spec&&(!j||j===w.type))return{reference:Y(w.spec,w.type,w.schema)};throw Error(`Contract reference not found: ${b.key}`)}export{$b as resolveContractReference};