@lssm/lib.contracts 1.41.0 → 1.42.1

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 (663) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -4
  3. package/dist/_virtual/rolldown_runtime.js +37 -1
  4. package/dist/app-config/app-config.feature.d.ts +11 -0
  5. package/dist/app-config/app-config.feature.js +54 -1
  6. package/dist/app-config/branding.d.ts +55 -0
  7. package/dist/app-config/contracts.d.ts +245 -0
  8. package/dist/app-config/contracts.js +395 -1
  9. package/dist/app-config/docs/app-config.docblock.d.ts +6 -0
  10. package/dist/app-config/docs/app-config.docblock.js +21 -220
  11. package/dist/app-config/events.d.ts +122 -0
  12. package/dist/app-config/events.js +174 -1
  13. package/dist/app-config/index.d.ts +9 -0
  14. package/dist/app-config/index.js +8 -1
  15. package/dist/app-config/lifecycle-contracts.d.ts +273 -0
  16. package/dist/app-config/lifecycle-contracts.js +440 -1
  17. package/dist/app-config/lifecycle.d.ts +27 -0
  18. package/dist/app-config/runtime.d.ts +117 -0
  19. package/dist/app-config/runtime.js +617 -1
  20. package/dist/app-config/spec.d.ts +172 -0
  21. package/dist/app-config/spec.js +36 -1
  22. package/dist/app-config/validation.d.ts +49 -0
  23. package/dist/app-config/validation.js +538 -1
  24. package/dist/capabilities/capabilities.d.ts +48 -0
  25. package/dist/capabilities/capabilities.js +50 -0
  26. package/dist/capabilities/docs/capabilities.docblock.d.ts +6 -0
  27. package/dist/capabilities/docs/capabilities.docblock.js +21 -1
  28. package/dist/capabilities/index.d.ts +3 -0
  29. package/dist/capabilities/index.js +4 -0
  30. package/dist/capabilities/openbanking.d.ts +10 -0
  31. package/dist/capabilities/openbanking.js +92 -1
  32. package/dist/client/index.d.ts +6 -0
  33. package/dist/client/index.js +9 -1
  34. package/dist/client/react/drivers/rn-reusables.d.ts +22 -0
  35. package/dist/client/react/drivers/rn-reusables.js +21 -1
  36. package/dist/client/react/drivers/shadcn.d.ts +12 -0
  37. package/dist/client/react/drivers/shadcn.js +11 -1
  38. package/dist/client/react/feature-render.d.ts +21 -0
  39. package/dist/client/react/feature-render.js +44 -1
  40. package/dist/client/react/form-render.d.ts +92 -0
  41. package/dist/client/react/form-render.js +298 -1
  42. package/dist/client/react/index.d.ts +5 -0
  43. package/dist/client/react/index.js +8 -1
  44. package/dist/contract-registry/index.d.ts +3 -0
  45. package/dist/contract-registry/index.js +3 -1
  46. package/dist/contract-registry/schemas.d.ts +124 -0
  47. package/dist/contract-registry/schemas.js +61 -1
  48. package/dist/contract-registry/types.d.ts +46 -0
  49. package/dist/data-views/data-views.d.ts +138 -0
  50. package/dist/data-views/data-views.js +58 -0
  51. package/dist/data-views/docs/data-views.docblock.d.ts +6 -0
  52. package/dist/data-views/docs/data-views.docblock.js +21 -1
  53. package/dist/data-views/index.d.ts +4 -0
  54. package/dist/data-views/index.js +5 -0
  55. package/dist/data-views/query-generator.d.ts +40 -0
  56. package/dist/data-views/query-generator.js +48 -1
  57. package/dist/data-views/runtime.d.ts +27 -0
  58. package/dist/data-views/runtime.js +39 -1
  59. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +6 -0
  60. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -350
  61. package/dist/docs/index.d.ts +6 -0
  62. package/dist/docs/index.js +27 -1
  63. package/dist/docs/meta.docs.d.ts +6 -0
  64. package/dist/docs/meta.docs.js +18 -2
  65. package/dist/docs/presentations.d.ts +33 -0
  66. package/dist/docs/presentations.js +64 -1
  67. package/dist/docs/registry.d.ts +23 -0
  68. package/dist/docs/registry.js +51 -1
  69. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +6 -0
  70. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +25 -2
  71. package/dist/docs/tech/contracts/README.docblock.d.ts +6 -0
  72. package/dist/docs/tech/contracts/README.docblock.js +21 -1
  73. package/dist/docs/tech/contracts/create-subscription.docblock.d.ts +6 -0
  74. package/dist/docs/tech/contracts/create-subscription.docblock.js +21 -1
  75. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts +6 -0
  76. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +21 -180
  77. package/dist/docs/tech/contracts/migrations.docblock.d.ts +6 -0
  78. package/dist/docs/tech/contracts/migrations.docblock.js +21 -1
  79. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +6 -0
  80. package/dist/docs/tech/contracts/openapi-export.docblock.js +25 -5
  81. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +6 -0
  82. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +19 -60
  83. package/dist/docs/tech/contracts/overlays.docblock.d.ts +6 -0
  84. package/dist/docs/tech/contracts/overlays.docblock.js +21 -68
  85. package/dist/docs/tech/contracts/tests.docblock.d.ts +6 -0
  86. package/dist/docs/tech/contracts/tests.docblock.js +21 -132
  87. package/dist/docs/tech/contracts/themes.docblock.d.ts +6 -0
  88. package/dist/docs/tech/contracts/themes.docblock.js +21 -1
  89. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +6 -0
  90. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +21 -106
  91. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +6 -0
  92. package/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -213
  93. package/dist/docs/tech/llm/llm-integration.docblock.d.ts +7 -0
  94. package/dist/docs/tech/llm/llm-integration.docblock.js +76 -7
  95. package/dist/docs/tech/mcp-endpoints.docblock.d.ts +6 -0
  96. package/dist/docs/tech/mcp-endpoints.docblock.js +38 -1
  97. package/dist/docs/tech/presentation-runtime.docblock.d.ts +6 -0
  98. package/dist/docs/tech/presentation-runtime.docblock.js +17 -1
  99. package/dist/docs/tech/schema/README.docblock.d.ts +6 -0
  100. package/dist/docs/tech/schema/README.docblock.js +21 -262
  101. package/dist/docs/tech/studio/learning-events.docblock.d.ts +6 -0
  102. package/dist/docs/tech/studio/learning-events.docblock.js +49 -1
  103. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +6 -0
  104. package/dist/docs/tech/studio/learning-journeys.docblock.js +25 -2
  105. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +6 -0
  106. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +24 -2
  107. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +6 -0
  108. package/dist/docs/tech/studio/project-access-teams.docblock.js +26 -16
  109. package/dist/docs/tech/studio/project-routing.docblock.d.ts +6 -0
  110. package/dist/docs/tech/studio/project-routing.docblock.js +68 -1
  111. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +6 -0
  112. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +23 -2
  113. package/dist/docs/tech/studio/team-invitations.docblock.d.ts +6 -0
  114. package/dist/docs/tech/studio/team-invitations.docblock.js +41 -36
  115. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +6 -0
  116. package/dist/docs/tech/studio/workspace-ops.docblock.js +48 -1
  117. package/dist/docs/tech/studio/workspaces.docblock.d.ts +6 -0
  118. package/dist/docs/tech/studio/workspaces.docblock.js +24 -2
  119. package/dist/docs/tech/telemetry-ingest.docblock.d.ts +6 -0
  120. package/dist/docs/tech/telemetry-ingest.docblock.js +37 -3
  121. package/dist/docs/tech/templates/runtime.docblock.d.ts +6 -0
  122. package/dist/docs/tech/templates/runtime.docblock.js +21 -1
  123. package/dist/docs/tech/vscode-extension.docblock.d.ts +6 -0
  124. package/dist/docs/tech/vscode-extension.docblock.js +37 -3
  125. package/dist/docs/tech/workflows/overview.docblock.d.ts +6 -0
  126. package/dist/docs/tech/workflows/overview.docblock.js +21 -1
  127. package/dist/docs/tech-contracts.docs.d.ts +6 -0
  128. package/dist/docs/tech-contracts.docs.js +27 -7
  129. package/dist/docs/types.d.ts +41 -0
  130. package/dist/events.d.ts +47 -0
  131. package/dist/events.js +19 -1
  132. package/dist/experiments/docs/experiments.docblock.d.ts +6 -0
  133. package/dist/experiments/docs/experiments.docblock.js +21 -128
  134. package/dist/experiments/evaluator.d.ts +37 -0
  135. package/dist/experiments/evaluator.js +101 -1
  136. package/dist/experiments/spec-resolver.d.ts +17 -0
  137. package/dist/experiments/spec.d.ts +82 -0
  138. package/dist/experiments/spec.js +33 -1
  139. package/dist/features.d.ts +104 -0
  140. package/dist/features.js +91 -1
  141. package/dist/forms/docs/forms.docblock.d.ts +6 -0
  142. package/dist/forms/docs/forms.docblock.js +21 -1
  143. package/dist/forms/forms.d.ts +266 -0
  144. package/dist/forms/forms.js +146 -0
  145. package/dist/forms/index.d.ts +2 -0
  146. package/dist/forms/index.js +3 -0
  147. package/dist/index.d.ts +142 -0
  148. package/dist/index.js +119 -1
  149. package/dist/install.d.ts +77 -0
  150. package/dist/install.js +40 -1
  151. package/dist/integrations/binding.d.ts +17 -0
  152. package/dist/integrations/connection.d.ts +51 -0
  153. package/dist/integrations/docs/integrations.docblock.d.ts +6 -0
  154. package/dist/integrations/docs/integrations.docblock.js +94 -1
  155. package/dist/integrations/health.d.ts +21 -0
  156. package/dist/integrations/health.js +69 -1
  157. package/dist/integrations/index.d.ts +34 -0
  158. package/dist/integrations/index.js +23 -1
  159. package/dist/integrations/integrations.feature.d.ts +11 -0
  160. package/dist/integrations/integrations.feature.js +60 -0
  161. package/dist/integrations/openbanking/contracts/accounts.d.ts +289 -0
  162. package/dist/integrations/openbanking/contracts/accounts.js +236 -1
  163. package/dist/integrations/openbanking/contracts/balances.d.ts +165 -0
  164. package/dist/integrations/openbanking/contracts/balances.js +166 -1
  165. package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
  166. package/dist/integrations/openbanking/contracts/index.js +12 -1
  167. package/dist/integrations/openbanking/contracts/transactions.d.ts +213 -0
  168. package/dist/integrations/openbanking/contracts/transactions.js +217 -1
  169. package/dist/integrations/openbanking/guards.d.ts +12 -0
  170. package/dist/integrations/openbanking/guards.js +33 -1
  171. package/dist/integrations/openbanking/models.d.ts +228 -0
  172. package/dist/integrations/openbanking/models.js +240 -1
  173. package/dist/integrations/openbanking/openbanking.feature.d.ts +11 -0
  174. package/dist/integrations/openbanking/openbanking.feature.js +69 -1
  175. package/dist/integrations/openbanking/telemetry.d.ts +15 -0
  176. package/dist/integrations/openbanking/telemetry.js +39 -1
  177. package/dist/integrations/operations.d.ts +437 -0
  178. package/dist/integrations/operations.js +392 -0
  179. package/dist/integrations/providers/calendar.d.ts +78 -0
  180. package/dist/integrations/providers/elevenlabs.d.ts +7 -0
  181. package/dist/integrations/providers/elevenlabs.js +55 -1
  182. package/dist/integrations/providers/email.d.ts +86 -0
  183. package/dist/integrations/providers/embedding.d.ts +24 -0
  184. package/dist/integrations/providers/gcs-storage.d.ts +7 -0
  185. package/dist/integrations/providers/gcs-storage.js +78 -1
  186. package/dist/integrations/providers/gmail.d.ts +7 -0
  187. package/dist/integrations/providers/gmail.js +90 -1
  188. package/dist/integrations/providers/google-calendar.d.ts +7 -0
  189. package/dist/integrations/providers/google-calendar.js +69 -1
  190. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +20 -0
  191. package/dist/integrations/providers/impls/elevenlabs-voice.js +95 -1
  192. package/dist/integrations/providers/impls/gcs-storage.d.ts +24 -0
  193. package/dist/integrations/providers/impls/gcs-storage.js +88 -1
  194. package/dist/integrations/providers/impls/gmail-inbound.d.ts +26 -0
  195. package/dist/integrations/providers/impls/gmail-inbound.js +200 -1
  196. package/dist/integrations/providers/impls/gmail-outbound.d.ts +18 -0
  197. package/dist/integrations/providers/impls/gmail-outbound.js +104 -5
  198. package/dist/integrations/providers/impls/google-calendar.d.ts +23 -0
  199. package/dist/integrations/providers/impls/google-calendar.js +154 -1
  200. package/dist/integrations/providers/impls/index.d.ts +15 -0
  201. package/dist/integrations/providers/impls/index.js +16 -1
  202. package/dist/integrations/providers/impls/mistral-embedding.d.ts +23 -0
  203. package/dist/integrations/providers/impls/mistral-embedding.js +41 -1
  204. package/dist/integrations/providers/impls/mistral-llm.d.ts +31 -0
  205. package/dist/integrations/providers/impls/mistral-llm.js +247 -1
  206. package/dist/integrations/providers/impls/postmark-email.d.ts +19 -0
  207. package/dist/integrations/providers/impls/postmark-email.js +55 -1
  208. package/dist/integrations/providers/impls/powens-client.d.ts +124 -0
  209. package/dist/integrations/providers/impls/powens-client.js +171 -1
  210. package/dist/integrations/providers/impls/powens-openbanking.d.ts +27 -0
  211. package/dist/integrations/providers/impls/powens-openbanking.js +218 -1
  212. package/dist/integrations/providers/impls/provider-factory.d.ts +26 -0
  213. package/dist/integrations/providers/impls/provider-factory.js +145 -1
  214. package/dist/integrations/providers/impls/qdrant-vector.d.ts +24 -0
  215. package/dist/integrations/providers/impls/qdrant-vector.js +69 -1
  216. package/dist/integrations/providers/impls/stripe-payments.d.ts +28 -0
  217. package/dist/integrations/providers/impls/stripe-payments.js +202 -1
  218. package/dist/integrations/providers/impls/twilio-sms.d.ts +20 -0
  219. package/dist/integrations/providers/impls/twilio-sms.js +58 -1
  220. package/dist/integrations/providers/index.d.ts +22 -0
  221. package/dist/integrations/providers/index.js +13 -1
  222. package/dist/integrations/providers/llm.d.ts +82 -0
  223. package/dist/integrations/providers/mistral.d.ts +7 -0
  224. package/dist/integrations/providers/mistral.js +71 -1
  225. package/dist/integrations/providers/openbanking.d.ts +128 -0
  226. package/dist/integrations/providers/payments.d.ts +109 -0
  227. package/dist/integrations/providers/postmark.d.ts +7 -0
  228. package/dist/integrations/providers/postmark.js +71 -1
  229. package/dist/integrations/providers/powens.d.ts +7 -0
  230. package/dist/integrations/providers/powens.js +119 -1
  231. package/dist/integrations/providers/qdrant.d.ts +7 -0
  232. package/dist/integrations/providers/qdrant.js +76 -1
  233. package/dist/integrations/providers/registry.d.ts +11 -0
  234. package/dist/integrations/providers/registry.js +34 -1
  235. package/dist/integrations/providers/sms.d.ts +34 -0
  236. package/dist/integrations/providers/storage.d.ts +60 -0
  237. package/dist/integrations/providers/stripe.d.ts +7 -0
  238. package/dist/integrations/providers/stripe.js +86 -1
  239. package/dist/integrations/providers/twilio-sms.d.ts +7 -0
  240. package/dist/integrations/providers/twilio-sms.js +64 -1
  241. package/dist/integrations/providers/vector-store.d.ts +43 -0
  242. package/dist/integrations/providers/voice.d.ts +34 -0
  243. package/dist/integrations/runtime.d.ts +99 -0
  244. package/dist/integrations/runtime.js +186 -1
  245. package/dist/integrations/secrets/aws-secret-manager.d.ts +31 -0
  246. package/dist/integrations/secrets/aws-secret-manager.js +231 -1
  247. package/dist/integrations/secrets/env-secret-provider.d.ts +31 -0
  248. package/dist/integrations/secrets/env-secret-provider.js +81 -1
  249. package/dist/integrations/secrets/gcp-secret-manager.d.ts +32 -0
  250. package/dist/integrations/secrets/gcp-secret-manager.js +229 -1
  251. package/dist/integrations/secrets/index.d.ts +7 -0
  252. package/dist/integrations/secrets/index.js +8 -1
  253. package/dist/integrations/secrets/manager.d.ts +47 -0
  254. package/dist/integrations/secrets/manager.js +103 -1
  255. package/dist/integrations/secrets/provider.d.ts +52 -0
  256. package/dist/integrations/secrets/provider.js +58 -1
  257. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +38 -0
  258. package/dist/integrations/secrets/scaleway-secret-manager.js +247 -1
  259. package/dist/integrations/secrets-types.d.ts +17 -0
  260. package/dist/integrations/spec.d.ts +75 -0
  261. package/dist/integrations/spec.js +39 -1
  262. package/dist/jobs/define-job.d.ts +18 -0
  263. package/dist/jobs/define-job.js +16 -1
  264. package/dist/jobs/gcp-cloud-tasks.d.ts +41 -0
  265. package/dist/jobs/gcp-cloud-tasks.js +53 -1
  266. package/dist/jobs/gcp-pubsub.d.ts +25 -0
  267. package/dist/jobs/gcp-pubsub.js +39 -1
  268. package/dist/jobs/handlers/gmail-sync-handler.d.ts +9 -0
  269. package/dist/jobs/handlers/gmail-sync-handler.js +9 -1
  270. package/dist/jobs/handlers/index.d.ts +9 -0
  271. package/dist/jobs/handlers/index.js +12 -1
  272. package/dist/jobs/handlers/ping-handler.d.ts +10 -0
  273. package/dist/jobs/handlers/ping-handler.js +15 -1
  274. package/dist/jobs/handlers/storage-document-handler.d.ts +12 -0
  275. package/dist/jobs/handlers/storage-document-handler.js +14 -1
  276. package/dist/jobs/index.d.ts +3 -0
  277. package/dist/jobs/index.js +4 -1
  278. package/dist/jobs/memory-queue.d.ts +18 -0
  279. package/dist/jobs/memory-queue.js +71 -1
  280. package/dist/jobs/queue.d.ts +131 -0
  281. package/dist/jobs/queue.js +33 -1
  282. package/dist/jobs/scaleway-sqs-queue.d.ts +30 -0
  283. package/dist/jobs/scaleway-sqs-queue.js +153 -1
  284. package/dist/jsonschema.d.ts +28 -0
  285. package/dist/jsonschema.js +32 -1
  286. package/dist/knowledge/binding.d.ts +25 -0
  287. package/dist/knowledge/docs/knowledge.docblock.d.ts +6 -0
  288. package/dist/knowledge/docs/knowledge.docblock.js +21 -138
  289. package/dist/knowledge/index.d.ts +11 -0
  290. package/dist/knowledge/index.js +10 -1
  291. package/dist/knowledge/ingestion/document-processor.d.ts +24 -0
  292. package/dist/knowledge/ingestion/document-processor.js +54 -1
  293. package/dist/knowledge/ingestion/embedding-service.d.ts +12 -0
  294. package/dist/knowledge/ingestion/embedding-service.js +25 -1
  295. package/dist/knowledge/ingestion/gmail-adapter.d.ts +18 -0
  296. package/dist/knowledge/ingestion/gmail-adapter.js +50 -5
  297. package/dist/knowledge/ingestion/index.d.ts +6 -0
  298. package/dist/knowledge/ingestion/index.js +7 -1
  299. package/dist/knowledge/ingestion/storage-adapter.d.ts +15 -0
  300. package/dist/knowledge/ingestion/storage-adapter.js +26 -1
  301. package/dist/knowledge/ingestion/vector-indexer.d.ts +18 -0
  302. package/dist/knowledge/ingestion/vector-indexer.js +32 -1
  303. package/dist/knowledge/knowledge.feature.d.ts +11 -0
  304. package/dist/knowledge/knowledge.feature.js +61 -0
  305. package/dist/knowledge/operations.d.ts +318 -0
  306. package/dist/knowledge/operations.js +321 -0
  307. package/dist/knowledge/query/index.d.ts +2 -0
  308. package/dist/knowledge/query/index.js +3 -1
  309. package/dist/knowledge/query/service.d.ts +29 -0
  310. package/dist/knowledge/query/service.js +64 -2
  311. package/dist/knowledge/runtime.d.ts +32 -0
  312. package/dist/knowledge/runtime.js +49 -1
  313. package/dist/knowledge/source.d.ts +32 -0
  314. package/dist/knowledge/spaces/email-threads.d.ts +7 -0
  315. package/dist/knowledge/spaces/email-threads.js +37 -1
  316. package/dist/knowledge/spaces/financial-docs.d.ts +7 -0
  317. package/dist/knowledge/spaces/financial-docs.js +37 -1
  318. package/dist/knowledge/spaces/financial-overview.d.ts +7 -0
  319. package/dist/knowledge/spaces/financial-overview.js +41 -1
  320. package/dist/knowledge/spaces/index.d.ts +7 -0
  321. package/dist/knowledge/spaces/index.js +8 -1
  322. package/dist/knowledge/spaces/product-canon.d.ts +7 -0
  323. package/dist/knowledge/spaces/product-canon.js +37 -1
  324. package/dist/knowledge/spaces/support-faq.d.ts +7 -0
  325. package/dist/knowledge/spaces/support-faq.js +40 -1
  326. package/dist/knowledge/spaces/uploaded-docs.d.ts +7 -0
  327. package/dist/knowledge/spaces/uploaded-docs.js +37 -1
  328. package/dist/knowledge/spec.d.ts +48 -0
  329. package/dist/knowledge/spec.js +39 -1
  330. package/dist/llm/exporters.d.ts +69 -0
  331. package/dist/llm/exporters.js +542 -8
  332. package/dist/llm/index.d.ts +4 -0
  333. package/dist/llm/index.js +4 -1
  334. package/dist/llm/prompts.d.ts +52 -0
  335. package/dist/llm/prompts.js +246 -56
  336. package/dist/llm/types.d.ts +214 -0
  337. package/dist/markdown.d.ts +22 -0
  338. package/dist/markdown.js +119 -3
  339. package/dist/migrations.d.ts +52 -0
  340. package/dist/migrations.js +33 -1
  341. package/dist/onboarding-base.d.ts +138 -0
  342. package/dist/onboarding-base.js +195 -1
  343. package/dist/openapi.d.ts +31 -0
  344. package/dist/openapi.js +75 -1
  345. package/dist/operations/index.d.ts +3 -0
  346. package/dist/operations/index.js +4 -0
  347. package/dist/operations/operation.d.ts +180 -0
  348. package/dist/operations/operation.js +35 -0
  349. package/dist/operations/registry.d.ts +103 -0
  350. package/dist/operations/registry.js +252 -0
  351. package/dist/ownership.d.ts +84 -0
  352. package/dist/ownership.js +38 -1
  353. package/dist/policy/docs/policy.docblock.d.ts +6 -0
  354. package/dist/policy/docs/policy.docblock.js +21 -1
  355. package/dist/policy/engine.d.ts +40 -0
  356. package/dist/policy/engine.js +223 -1
  357. package/dist/policy/index.d.ts +5 -0
  358. package/dist/policy/index.js +5 -0
  359. package/dist/policy/opa-adapter.d.ts +45 -0
  360. package/dist/policy/opa-adapter.js +71 -1
  361. package/dist/policy/registry.d.ts +9 -0
  362. package/dist/policy/registry.js +11 -0
  363. package/dist/policy/spec.d.ts +103 -0
  364. package/dist/policy/spec.js +0 -1
  365. package/dist/presentations/docs/presentations-conventions.docblock.d.ts +6 -0
  366. package/dist/presentations/docs/presentations-conventions.docblock.js +20 -7
  367. package/dist/presentations/index.d.ts +4 -0
  368. package/dist/presentations/index.js +5 -0
  369. package/dist/presentations/presentations.d.ts +50 -0
  370. package/dist/presentations/presentations.js +7 -0
  371. package/dist/presentations/registry.d.ts +10 -0
  372. package/dist/presentations/registry.js +12 -0
  373. package/dist/presentations/transform-engine.d.ts +66 -0
  374. package/dist/presentations/transform-engine.js +282 -0
  375. package/dist/prompt.d.ts +60 -0
  376. package/dist/prompt.js +10 -1
  377. package/dist/promptRegistry.d.ts +15 -0
  378. package/dist/promptRegistry.js +34 -1
  379. package/dist/regenerator/adapters.d.ts +19 -0
  380. package/dist/regenerator/docs/regenerator.docblock.d.ts +6 -0
  381. package/dist/regenerator/docs/regenerator.docblock.js +21 -184
  382. package/dist/regenerator/executor.d.ts +70 -0
  383. package/dist/regenerator/executor.js +86 -1
  384. package/dist/regenerator/index.d.ts +7 -0
  385. package/dist/regenerator/index.js +6 -1
  386. package/dist/regenerator/service.d.ts +33 -0
  387. package/dist/regenerator/service.js +92 -1
  388. package/dist/regenerator/sinks.d.ts +26 -0
  389. package/dist/regenerator/sinks.js +32 -1
  390. package/dist/regenerator/types.d.ts +107 -0
  391. package/dist/regenerator/utils.d.ts +9 -0
  392. package/dist/regenerator/utils.js +51 -1
  393. package/dist/registry-utils.d.ts +106 -0
  394. package/dist/registry-utils.js +122 -0
  395. package/dist/registry.d.ts +30 -0
  396. package/dist/registry.js +58 -1
  397. package/dist/resources.d.ts +64 -0
  398. package/dist/resources.js +50 -1
  399. package/dist/schema-to-markdown.d.ts +54 -0
  400. package/dist/schema-to-markdown.js +214 -10
  401. package/dist/server/contracts-adapter-hydration.d.ts +15 -0
  402. package/dist/server/contracts-adapter-hydration.js +41 -0
  403. package/dist/server/contracts-adapter-input.d.ts +9 -0
  404. package/dist/server/contracts-adapter-input.js +77 -0
  405. package/dist/server/graphql-pothos.d.ts +31 -0
  406. package/dist/server/graphql-pothos.js +127 -1
  407. package/dist/server/index.d.ts +9 -0
  408. package/dist/server/index.js +10 -1
  409. package/dist/server/mcp/createMcpServer.d.ts +15 -0
  410. package/dist/server/mcp/createMcpServer.js +28 -1
  411. package/dist/server/mcp/mcpTypes.d.ts +30 -0
  412. package/dist/server/mcp/registerPresentations.d.ts +7 -0
  413. package/dist/server/mcp/registerPresentations.js +112 -1
  414. package/dist/server/mcp/registerPrompts.d.ts +8 -0
  415. package/dist/server/mcp/registerPrompts.js +36 -2
  416. package/dist/server/mcp/registerResources.d.ts +8 -0
  417. package/dist/server/mcp/registerResources.js +35 -1
  418. package/dist/server/mcp/registerTools.d.ts +8 -0
  419. package/dist/server/mcp/registerTools.js +22 -1
  420. package/dist/server/provider-mcp.d.ts +2 -0
  421. package/dist/server/provider-mcp.js +3 -1
  422. package/dist/server/rest-elysia.d.ts +40 -0
  423. package/dist/server/rest-elysia.js +20 -1
  424. package/dist/server/rest-express.d.ts +16 -0
  425. package/dist/server/rest-express.js +36 -1
  426. package/dist/server/rest-generic.d.ts +32 -0
  427. package/dist/server/rest-generic.js +124 -1
  428. package/dist/server/rest-next-app.d.ts +35 -0
  429. package/dist/server/rest-next-app.js +38 -1
  430. package/dist/server/rest-next-mcp.d.ts +11 -0
  431. package/dist/server/rest-next-mcp.js +45 -1
  432. package/dist/server/rest-next-pages.d.ts +9 -0
  433. package/dist/server/rest-next-pages.js +22 -1
  434. package/dist/telemetry/anomaly.d.ts +27 -0
  435. package/dist/telemetry/anomaly.js +48 -1
  436. package/dist/telemetry/docs/telemetry.docblock.d.ts +6 -0
  437. package/dist/telemetry/docs/telemetry.docblock.js +21 -139
  438. package/dist/telemetry/index.d.ts +4 -0
  439. package/dist/telemetry/index.js +5 -1
  440. package/dist/telemetry/spec.d.ts +91 -0
  441. package/dist/telemetry/spec.js +69 -1
  442. package/dist/telemetry/tracker.d.ts +51 -0
  443. package/dist/telemetry/tracker.js +76 -1
  444. package/dist/tests/index.d.ts +3 -0
  445. package/dist/tests/index.js +4 -1
  446. package/dist/tests/runner.d.ts +43 -0
  447. package/dist/tests/runner.js +150 -1
  448. package/dist/tests/spec.d.ts +89 -0
  449. package/dist/tests/spec.js +33 -1
  450. package/dist/themes.d.ts +53 -0
  451. package/dist/themes.js +39 -1
  452. package/dist/translations/catalog.d.ts +28 -0
  453. package/dist/translations/tenant.d.ts +15 -0
  454. package/dist/types.d.ts +92 -0
  455. package/dist/workflow/adapters/db-adapter.d.ts +46 -0
  456. package/dist/workflow/adapters/db-adapter.js +83 -1
  457. package/dist/workflow/adapters/file-adapter.d.ts +14 -0
  458. package/dist/workflow/adapters/file-adapter.js +11 -1
  459. package/dist/workflow/adapters/index.d.ts +4 -0
  460. package/dist/workflow/adapters/index.js +5 -1
  461. package/dist/workflow/adapters/memory-store.d.ts +18 -0
  462. package/dist/workflow/adapters/memory-store.js +58 -1
  463. package/dist/workflow/expression.d.ts +9 -0
  464. package/dist/workflow/expression.js +99 -1
  465. package/dist/workflow/index.d.ts +10 -0
  466. package/dist/workflow/index.js +9 -1
  467. package/dist/workflow/runner.d.ts +74 -0
  468. package/dist/workflow/runner.js +337 -1
  469. package/dist/workflow/sla-monitor.d.ts +20 -0
  470. package/dist/workflow/sla-monitor.js +47 -1
  471. package/dist/workflow/spec.d.ts +105 -0
  472. package/dist/workflow/spec.js +55 -1
  473. package/dist/workflow/state.d.ts +35 -0
  474. package/dist/workflow/validation.d.ts +29 -0
  475. package/dist/workflow/validation.js +176 -1
  476. package/dist/workspace-config/contractsrc-schema.d.ts +786 -0
  477. package/dist/workspace-config/contractsrc-schema.js +247 -0
  478. package/dist/workspace-config/index.d.ts +2 -0
  479. package/dist/workspace-config/index.js +3 -0
  480. package/package.json +287 -266
  481. package/dist/capabilities.js +0 -1
  482. package/dist/contracts-adapter-hydration.js +0 -1
  483. package/dist/contracts-adapter-input.js +0 -1
  484. package/dist/data-views.js +0 -1
  485. package/dist/docs/PUBLISHING.docblock.js +0 -76
  486. package/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -383
  487. package/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -68
  488. package/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -140
  489. package/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -86
  490. package/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -1
  491. package/dist/forms.js +0 -1
  492. package/dist/integrations/contracts.js +0 -1
  493. package/dist/knowledge/contracts.js +0 -1
  494. package/dist/node_modules/@pothos/plugin-complexity/esm/calculate-complexity.js +0 -1
  495. package/dist/node_modules/@pothos/plugin-complexity/esm/defaults.js +0 -1
  496. package/dist/node_modules/@pothos/plugin-complexity/esm/index.js +0 -1
  497. package/dist/node_modules/@pothos/plugin-complexity/esm/types.js +0 -1
  498. package/dist/node_modules/@pothos/plugin-complexity/esm/util.js +0 -1
  499. package/dist/node_modules/@pothos/plugin-complexity/esm/validator.js +0 -1
  500. package/dist/node_modules/@pothos/plugin-dataloader/esm/field-builder.js +0 -1
  501. package/dist/node_modules/@pothos/plugin-dataloader/esm/index.js +0 -1
  502. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/index.js +0 -1
  503. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/interface.js +0 -1
  504. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/node.js +0 -1
  505. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/object.js +0 -1
  506. package/dist/node_modules/@pothos/plugin-dataloader/esm/refs/union.js +0 -1
  507. package/dist/node_modules/@pothos/plugin-dataloader/esm/schema-builder.js +0 -1
  508. package/dist/node_modules/@pothos/plugin-dataloader/esm/util.js +0 -1
  509. package/dist/node_modules/@pothos/plugin-prisma/esm/connection-helpers.js +0 -1
  510. package/dist/node_modules/@pothos/plugin-prisma/esm/field-builder.js +0 -1
  511. package/dist/node_modules/@pothos/plugin-prisma/esm/index.js +0 -1
  512. package/dist/node_modules/@pothos/plugin-prisma/esm/interface-ref.js +0 -1
  513. package/dist/node_modules/@pothos/plugin-prisma/esm/model-loader.js +0 -1
  514. package/dist/node_modules/@pothos/plugin-prisma/esm/node-ref.js +0 -1
  515. package/dist/node_modules/@pothos/plugin-prisma/esm/object-ref.js +0 -1
  516. package/dist/node_modules/@pothos/plugin-prisma/esm/prisma-field-builder.js +0 -1
  517. package/dist/node_modules/@pothos/plugin-prisma/esm/schema-builder.js +0 -1
  518. package/dist/node_modules/@pothos/plugin-prisma/esm/util/cursors.js +0 -1
  519. package/dist/node_modules/@pothos/plugin-prisma/esm/util/datamodel.js +0 -1
  520. package/dist/node_modules/@pothos/plugin-prisma/esm/util/deep-equal.js +0 -1
  521. package/dist/node_modules/@pothos/plugin-prisma/esm/util/description.js +0 -1
  522. package/dist/node_modules/@pothos/plugin-prisma/esm/util/get-client.js +0 -1
  523. package/dist/node_modules/@pothos/plugin-prisma/esm/util/loader-map.js +0 -1
  524. package/dist/node_modules/@pothos/plugin-prisma/esm/util/map-query.js +0 -1
  525. package/dist/node_modules/@pothos/plugin-prisma/esm/util/relation-map.js +0 -1
  526. package/dist/node_modules/@pothos/plugin-prisma/esm/util/selections.js +0 -1
  527. package/dist/node_modules/@pothos/plugin-prisma/esm/util/usage.js +0 -1
  528. package/dist/node_modules/@pothos/plugin-tracing/esm/index.js +0 -1
  529. package/dist/node_modules/@pothos/plugin-tracing/esm/util.js +0 -1
  530. package/dist/node_modules/dataloader/index.js +0 -7
  531. package/dist/node_modules/graphql/error/GraphQLError.js +0 -5
  532. package/dist/node_modules/graphql/error/index.js +0 -1
  533. package/dist/node_modules/graphql/error/locatedError.js +0 -1
  534. package/dist/node_modules/graphql/error/syntaxError.js +0 -1
  535. package/dist/node_modules/graphql/execution/collectFields.js +0 -1
  536. package/dist/node_modules/graphql/execution/execute.js +0 -1
  537. package/dist/node_modules/graphql/execution/index.js +0 -1
  538. package/dist/node_modules/graphql/execution/mapAsyncIterator.js +0 -1
  539. package/dist/node_modules/graphql/execution/subscribe.js +0 -1
  540. package/dist/node_modules/graphql/execution/values.js +0 -1
  541. package/dist/node_modules/graphql/graphql.js +0 -1
  542. package/dist/node_modules/graphql/index.js +0 -1
  543. package/dist/node_modules/graphql/jsutils/Path.js +0 -1
  544. package/dist/node_modules/graphql/jsutils/devAssert.js +0 -1
  545. package/dist/node_modules/graphql/jsutils/didYouMean.js +0 -1
  546. package/dist/node_modules/graphql/jsutils/groupBy.js +0 -1
  547. package/dist/node_modules/graphql/jsutils/identityFunc.js +0 -1
  548. package/dist/node_modules/graphql/jsutils/inspect.js +0 -1
  549. package/dist/node_modules/graphql/jsutils/instanceOf.js +0 -12
  550. package/dist/node_modules/graphql/jsutils/invariant.js +0 -1
  551. package/dist/node_modules/graphql/jsutils/isAsyncIterable.js +0 -1
  552. package/dist/node_modules/graphql/jsutils/isIterableObject.js +0 -1
  553. package/dist/node_modules/graphql/jsutils/isObjectLike.js +0 -1
  554. package/dist/node_modules/graphql/jsutils/isPromise.js +0 -1
  555. package/dist/node_modules/graphql/jsutils/keyMap.js +0 -1
  556. package/dist/node_modules/graphql/jsutils/keyValMap.js +0 -1
  557. package/dist/node_modules/graphql/jsutils/mapValue.js +0 -1
  558. package/dist/node_modules/graphql/jsutils/memoize3.js +0 -1
  559. package/dist/node_modules/graphql/jsutils/naturalCompare.js +0 -1
  560. package/dist/node_modules/graphql/jsutils/printPathArray.js +0 -1
  561. package/dist/node_modules/graphql/jsutils/promiseForObject.js +0 -1
  562. package/dist/node_modules/graphql/jsutils/promiseReduce.js +0 -1
  563. package/dist/node_modules/graphql/jsutils/suggestionList.js +0 -1
  564. package/dist/node_modules/graphql/jsutils/toError.js +0 -1
  565. package/dist/node_modules/graphql/jsutils/toObjMap.js +0 -1
  566. package/dist/node_modules/graphql/language/ast.js +0 -1
  567. package/dist/node_modules/graphql/language/blockString.js +0 -3
  568. package/dist/node_modules/graphql/language/characterClasses.js +0 -1
  569. package/dist/node_modules/graphql/language/directiveLocation.js +0 -1
  570. package/dist/node_modules/graphql/language/index.js +0 -1
  571. package/dist/node_modules/graphql/language/kinds.js +0 -1
  572. package/dist/node_modules/graphql/language/lexer.js +0 -3
  573. package/dist/node_modules/graphql/language/location.js +0 -1
  574. package/dist/node_modules/graphql/language/parser.js +0 -1
  575. package/dist/node_modules/graphql/language/predicates.js +0 -1
  576. package/dist/node_modules/graphql/language/printLocation.js +0 -2
  577. package/dist/node_modules/graphql/language/printString.js +0 -1
  578. package/dist/node_modules/graphql/language/printer.js +0 -34
  579. package/dist/node_modules/graphql/language/schemaCoordinateLexer.js +0 -1
  580. package/dist/node_modules/graphql/language/source.js +0 -1
  581. package/dist/node_modules/graphql/language/tokenKind.js +0 -1
  582. package/dist/node_modules/graphql/language/visitor.js +0 -1
  583. package/dist/node_modules/graphql/type/assertName.js +0 -1
  584. package/dist/node_modules/graphql/type/definition.js +0 -1
  585. package/dist/node_modules/graphql/type/directives.js +0 -1
  586. package/dist/node_modules/graphql/type/index.js +0 -1
  587. package/dist/node_modules/graphql/type/introspection.js +0 -3
  588. package/dist/node_modules/graphql/type/scalars.js +0 -1
  589. package/dist/node_modules/graphql/type/schema.js +0 -1
  590. package/dist/node_modules/graphql/type/validate.js +0 -3
  591. package/dist/node_modules/graphql/utilities/TypeInfo.js +0 -1
  592. package/dist/node_modules/graphql/utilities/assertValidName.js +0 -1
  593. package/dist/node_modules/graphql/utilities/astFromValue.js +0 -1
  594. package/dist/node_modules/graphql/utilities/buildASTSchema.js +0 -1
  595. package/dist/node_modules/graphql/utilities/buildClientSchema.js +0 -1
  596. package/dist/node_modules/graphql/utilities/coerceInputValue.js +0 -1
  597. package/dist/node_modules/graphql/utilities/concatAST.js +0 -1
  598. package/dist/node_modules/graphql/utilities/extendSchema.js +0 -1
  599. package/dist/node_modules/graphql/utilities/findBreakingChanges.js +0 -1
  600. package/dist/node_modules/graphql/utilities/getIntrospectionQuery.js +0 -107
  601. package/dist/node_modules/graphql/utilities/getOperationAST.js +0 -1
  602. package/dist/node_modules/graphql/utilities/getOperationRootType.js +0 -1
  603. package/dist/node_modules/graphql/utilities/index.js +0 -1
  604. package/dist/node_modules/graphql/utilities/introspectionFromSchema.js +0 -1
  605. package/dist/node_modules/graphql/utilities/lexicographicSortSchema.js +0 -1
  606. package/dist/node_modules/graphql/utilities/printSchema.js +0 -13
  607. package/dist/node_modules/graphql/utilities/resolveSchemaCoordinate.js +0 -1
  608. package/dist/node_modules/graphql/utilities/separateOperations.js +0 -1
  609. package/dist/node_modules/graphql/utilities/sortValueNode.js +0 -1
  610. package/dist/node_modules/graphql/utilities/stripIgnoredCharacters.js +0 -1
  611. package/dist/node_modules/graphql/utilities/typeComparators.js +0 -1
  612. package/dist/node_modules/graphql/utilities/typeFromAST.js +0 -1
  613. package/dist/node_modules/graphql/utilities/valueFromAST.js +0 -1
  614. package/dist/node_modules/graphql/utilities/valueFromASTUntyped.js +0 -1
  615. package/dist/node_modules/graphql/validation/ValidationContext.js +0 -1
  616. package/dist/node_modules/graphql/validation/index.js +0 -1
  617. package/dist/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js +0 -1
  618. package/dist/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js +0 -1
  619. package/dist/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js +0 -1
  620. package/dist/node_modules/graphql/validation/rules/KnownArgumentNamesRule.js +0 -1
  621. package/dist/node_modules/graphql/validation/rules/KnownDirectivesRule.js +0 -1
  622. package/dist/node_modules/graphql/validation/rules/KnownFragmentNamesRule.js +0 -1
  623. package/dist/node_modules/graphql/validation/rules/KnownTypeNamesRule.js +0 -1
  624. package/dist/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js +0 -1
  625. package/dist/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js +0 -1
  626. package/dist/node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.js +0 -1
  627. package/dist/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js +0 -1
  628. package/dist/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js +0 -1
  629. package/dist/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js +0 -1
  630. package/dist/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js +0 -1
  631. package/dist/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js +0 -1
  632. package/dist/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js +0 -1
  633. package/dist/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js +0 -1
  634. package/dist/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js +0 -1
  635. package/dist/node_modules/graphql/validation/rules/ScalarLeafsRule.js +0 -1
  636. package/dist/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js +0 -1
  637. package/dist/node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.js +0 -1
  638. package/dist/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js +0 -1
  639. package/dist/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js +0 -1
  640. package/dist/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js +0 -1
  641. package/dist/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js +0 -1
  642. package/dist/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js +0 -1
  643. package/dist/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js +0 -1
  644. package/dist/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js +0 -1
  645. package/dist/node_modules/graphql/validation/rules/UniqueOperationNamesRule.js +0 -1
  646. package/dist/node_modules/graphql/validation/rules/UniqueOperationTypesRule.js +0 -1
  647. package/dist/node_modules/graphql/validation/rules/UniqueTypeNamesRule.js +0 -1
  648. package/dist/node_modules/graphql/validation/rules/UniqueVariableNamesRule.js +0 -1
  649. package/dist/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js +0 -1
  650. package/dist/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js +0 -1
  651. package/dist/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js +0 -1
  652. package/dist/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js +0 -1
  653. package/dist/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +0 -1
  654. package/dist/node_modules/graphql/validation/specifiedRules.js +0 -1
  655. package/dist/node_modules/graphql/validation/validate.js +0 -5
  656. package/dist/node_modules/graphql/version.js +0 -1
  657. package/dist/openbanking/docs/openbanking.docblock.js +0 -109
  658. package/dist/presentations.backcompat.js +0 -1
  659. package/dist/presentations.js +0 -1
  660. package/dist/presentations.v2.js +0 -7
  661. package/dist/spec.js +0 -1
  662. package/dist/types/all.js +0 -0
  663. /package/dist/{node_modules/@pothos/plugin-prisma/esm/types.js → integrations/secrets-types.js} +0 -0
@@ -1 +1,112 @@
1
- import{createDefaultTransformEngine as e,registerBasicValidation as t,registerDefaultReactRenderer as n}from"../../presentations.v2.js";import{jsonSchemaForPresentation as r}from"../../presentations.js";function i(e){return!e||typeof e!=`object`?!1:`body`in e&&typeof e.body==`string`}function a(a,o){let s=o.presentations,c=o.presentationsV2;if(s)for(let e of s.list()){let t=`presentation.${e.meta.name.replace(/\./g,`_`)}.v${e.meta.version}`,n=`presentation://${e.meta.name}/v${e.meta.version}`;a.registerResource(t,n,{title:`${e.meta.name} v${e.meta.version}`,description:e.meta.description??`Presentation`},async()=>{if(e.content.kind===`markdown`)return{contents:[{uri:n,mimeType:`text/markdown`,text:e.content.content?e.content.content:`See resource: ${e.content.resourceUri??``}`}]};if(e.content.kind===`data`){let t=r(e);return{contents:[{uri:n,mimeType:`application/json`,text:JSON.stringify(t,null,2)}]}}let t={name:e.meta.name,version:e.meta.version,kind:e.content.kind,description:e.meta.description??``};return{contents:[{uri:n,mimeType:`application/json`,text:JSON.stringify(t,null,2)}]}});for(let i of[{ext:`.md`,target:`markdown`},{ext:`.json`,target:`application/json`},{ext:`.xml`,target:`application/xml`}]){let s=`${t}${i.ext}`,c=`${n}${i.ext}`;o.logger.info(`Registering presentation resource ${c} for ${s}`),a.registerResource(s,c,{title:`${e.meta.name} v${e.meta.version} (${i.ext})`,description:`${e.meta.description??`Presentation`} (${i.ext})`},async()=>{if(e.content.kind===`markdown`&&i.target===`markdown`)return{contents:[{uri:c,mimeType:`text/markdown`,text:e.content.content??`See resource: ${e.content.resourceUri??``}`}]};if(e.content.kind===`data`&&i.target===`application/json`)return{contents:[{uri:c,mimeType:`application/json`,text:JSON.stringify(r(e),null,2)}]};let t=JSON.stringify({meta:e.meta,content:e.content},null,2);return i.target===`application/json`?{contents:[{uri:c,mimeType:`application/json`,text:t}]}:i.target===`application/xml`?{contents:[{uri:c,mimeType:`application/xml`,text:`<presentation name="${e.meta.name}" version="${e.meta.version}"><json>${encodeURIComponent(t)}</json></presentation>`}]}:{contents:[{uri:c,mimeType:`text/markdown`,text:`Unsupported presentation for markdown`}]}})}}if(c&&c.length){let r=t(n(e()));for(let e of c){let t=`presentation.${e.meta.name.replace(/\./g,`_`)}.v${e.meta.version}`,n=`presentation://${e.meta.name}/v${e.meta.version}`;o.logger.info(`Registering presentation descriptor ${n} for ${t}`),a.registerResource(t,n,{title:`${e.meta.name} v${e.meta.version}`,description:e.meta.description??`Presentation`,mimeType:`application/json`},async()=>({contents:[{uri:n,mimeType:`application/json`,text:JSON.stringify({meta:e.meta,source:e.source,targets:e.targets},null,2)}]}));for(let o of[{ext:`.md`,target:`markdown`},{ext:`.json`,target:`application/json`},{ext:`.xml`,target:`application/xml`}]){let s=`${t}${o.ext}`,c=`${n}${o.ext}`;a.registerResource(s,c,{title:`${e.meta.name} v${e.meta.version} (${o.ext})`,description:`${e.meta.description??`Presentation`} (${o.ext})`},async()=>{let t=await r.render(o.target,e);return{contents:[{uri:c,mimeType:i(t)&&t.mimeType?t.mimeType:o.target===`markdown`?`text/markdown`:o.target,text:i(t)&&typeof t.body==`string`?t.body:String(t)}]}})}}}}export{a as registerMcpPresentations};
1
+ import { createDefaultTransformEngine, registerBasicValidation, registerDefaultReactRenderer } from "../../presentations/transform-engine.js";
2
+ import "../../presentations/index.js";
3
+
4
+ //#region src/server/mcp/registerPresentations.ts
5
+ function isEngineRenderOutput(x) {
6
+ if (!x || typeof x !== "object") return false;
7
+ return "body" in x && typeof x.body === "string";
8
+ }
9
+ function registerMcpPresentations(server, ctx) {
10
+ const __presentations = ctx.presentations;
11
+ const __presentationsV2 = ctx.presentationsV2;
12
+ const engine = registerBasicValidation(registerDefaultReactRenderer(createDefaultTransformEngine()));
13
+ if (__presentations) for (const p of __presentations.list()) {
14
+ const baseKey = `presentation.${p.meta.key.replace(/\./g, "_")}.v${p.meta.version}`;
15
+ const baseUri = `presentation://${p.meta.key}/v${p.meta.version}`;
16
+ ctx.logger.info(`Registering presentation ${baseUri} for ${baseKey}`);
17
+ server.registerResource(baseKey, baseUri, {
18
+ title: `${p.meta.key} v${p.meta.version}`,
19
+ description: p.meta.description ?? "Presentation",
20
+ mimeType: "application/json"
21
+ }, async () => {
22
+ return { contents: [{
23
+ uri: baseUri,
24
+ mimeType: "application/json",
25
+ text: JSON.stringify({
26
+ meta: p.meta,
27
+ source: p.source,
28
+ targets: p.targets
29
+ }, null, 2)
30
+ }] };
31
+ });
32
+ for (const v of [
33
+ {
34
+ ext: ".md",
35
+ target: "markdown"
36
+ },
37
+ {
38
+ ext: ".json",
39
+ target: "application/json"
40
+ },
41
+ {
42
+ ext: ".xml",
43
+ target: "application/xml"
44
+ }
45
+ ]) {
46
+ const key = `${baseKey}${v.ext}`;
47
+ const uri = `${baseUri}${v.ext}`;
48
+ server.registerResource(key, uri, {
49
+ title: `${p.meta.key} v${p.meta.version} (${v.ext})`,
50
+ description: `${p.meta.description ?? "Presentation"} (${v.ext})`
51
+ }, async () => {
52
+ const out = await engine.render(v.target, p);
53
+ return { contents: [{
54
+ uri,
55
+ mimeType: isEngineRenderOutput(out) && out.mimeType ? out.mimeType : v.target === "markdown" ? "text/markdown" : v.target,
56
+ text: isEngineRenderOutput(out) && typeof out.body === "string" ? out.body : String(out)
57
+ }] };
58
+ });
59
+ }
60
+ }
61
+ if (__presentationsV2 && __presentationsV2.length) for (const d of __presentationsV2) {
62
+ const baseKey = `presentation.${d.meta.key.replace(/\./g, "_")}.v${d.meta.version}`;
63
+ const baseUri = `presentation://${d.meta.key}/v${d.meta.version}`;
64
+ ctx.logger.info(`Registering presentation descriptor ${baseUri} for ${baseKey}`);
65
+ server.registerResource(baseKey, baseUri, {
66
+ title: `${d.meta.key} v${d.meta.version}`,
67
+ description: d.meta.description ?? "Presentation",
68
+ mimeType: "application/json"
69
+ }, async () => {
70
+ return { contents: [{
71
+ uri: baseUri,
72
+ mimeType: "application/json",
73
+ text: JSON.stringify({
74
+ meta: d.meta,
75
+ source: d.source,
76
+ targets: d.targets
77
+ }, null, 2)
78
+ }] };
79
+ });
80
+ for (const v of [
81
+ {
82
+ ext: ".md",
83
+ target: "markdown"
84
+ },
85
+ {
86
+ ext: ".json",
87
+ target: "application/json"
88
+ },
89
+ {
90
+ ext: ".xml",
91
+ target: "application/xml"
92
+ }
93
+ ]) {
94
+ const key = `${baseKey}${v.ext}`;
95
+ const uri = `${baseUri}${v.ext}`;
96
+ server.registerResource(key, uri, {
97
+ title: `${d.meta.key} v${d.meta.version} (${v.ext})`,
98
+ description: `${d.meta.description ?? "Presentation"} (${v.ext})`
99
+ }, async () => {
100
+ const out = await engine.render(v.target, d);
101
+ return { contents: [{
102
+ uri,
103
+ mimeType: isEngineRenderOutput(out) && out.mimeType ? out.mimeType : v.target === "markdown" ? "text/markdown" : v.target,
104
+ text: isEngineRenderOutput(out) && typeof out.body === "string" ? out.body : String(out)
105
+ }] };
106
+ });
107
+ }
108
+ }
109
+ }
110
+
111
+ //#endregion
112
+ export { registerMcpPresentations };
@@ -0,0 +1,8 @@
1
+ import { PromptRegistry } from "../../promptRegistry.js";
2
+ import { McpCtxFactories } from "./mcpTypes.js";
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+
5
+ //#region src/server/mcp/registerPrompts.d.ts
6
+ declare function registerMcpPrompts(server: McpServer, prompts: PromptRegistry, ctx: Pick<McpCtxFactories, 'promptCtx'>): void;
7
+ //#endregion
8
+ export { registerMcpPrompts };
@@ -1,3 +1,37 @@
1
- import e from"zod";function t(e){let t={};for(let n of e)t[n.name]=n.schema;return t}function n(e,n,r){for(let i of n.list())e.registerPrompt(i.meta.name,{title:i.meta.title,description:i.meta.description,argsSchema:t(i.args)},async e=>{let t=(e,t)=>{let n=e;for(let[e,r]of Object.entries(t))n=n.replace(RegExp(`\\{${e}\\}`,`g`),encodeURIComponent(String(r)));return n};return{messages:[{role:`assistant`,content:{type:`text`,text:(await i.render(i.input.parse(e),{...r.promptCtx(),link:t})).map(e=>e.type===`text`?e.text:`See resource: ${e.title??e.uri}\nURI: ${e.uri}`).join(`
1
+ import z from "zod";
2
2
 
3
- `)}}],description:i.meta.description}})}export{n as registerMcpPrompts};
3
+ //#region src/server/mcp/registerPrompts.ts
4
+ function promptArgsSchemaFromPromptArgs(args) {
5
+ const shape = {};
6
+ for (const a of args) shape[a.name] = a.schema;
7
+ return shape;
8
+ }
9
+ function registerMcpPrompts(server, prompts, ctx) {
10
+ for (const prompt of prompts.list()) server.registerPrompt(prompt.meta.key, {
11
+ title: prompt.meta.title,
12
+ description: prompt.meta.description,
13
+ argsSchema: promptArgsSchemaFromPromptArgs(prompt.args)
14
+ }, async (args) => {
15
+ const link = (tpl, vars) => {
16
+ let out = tpl;
17
+ for (const [k, v] of Object.entries(vars)) out = out.replace(new RegExp(`\\{${k}\\}`, "g"), encodeURIComponent(String(v)));
18
+ return out;
19
+ };
20
+ return {
21
+ messages: [{
22
+ role: "assistant",
23
+ content: {
24
+ type: "text",
25
+ text: (await prompt.render(prompt.input.parse(args), {
26
+ ...ctx.promptCtx(),
27
+ link
28
+ })).map((p) => p.type === "text" ? p.text : `See resource: ${p.title ?? p.uri}\nURI: ${p.uri}`).join("\n\n")
29
+ }
30
+ }],
31
+ description: prompt.meta.description
32
+ };
33
+ });
34
+ }
35
+
36
+ //#endregion
37
+ export { registerMcpPrompts };
@@ -0,0 +1,8 @@
1
+ import { ResourceRegistry } from "../../resources.js";
2
+ import { McpCtxFactories } from "./mcpTypes.js";
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+
5
+ //#region src/server/mcp/registerResources.d.ts
6
+ declare function registerMcpResources(server: McpServer, resources: ResourceRegistry, ctx: Pick<McpCtxFactories, 'logger' | 'resourceCtx'>): void;
7
+ //#endregion
8
+ export { registerMcpResources };
@@ -1 +1,35 @@
1
- import{ResourceTemplate as e}from"@modelcontextprotocol/sdk/server/mcp.js";import{Buffer as t}from"node:buffer";function n(e){return{title:e.meta.title,description:e.meta.description,mimeType:e.meta.mimeType,_meta:{tags:e.meta.tags??[]}}}function r(r,i,a){for(let o of i.listTemplates())a.logger.info(`Registering resource: `+o.meta.uriTemplate),r.registerResource(o.meta.uriTemplate,new e(o.meta.uriTemplate,{list:void 0}),n(o),async(e,n)=>{let r=o.input.parse(n),i=await o.resolve(r,a.resourceCtx());return typeof i.data==`string`?{contents:[{uri:i.uri,mimeType:i.mimeType??o.meta.mimeType,text:i.data}]}:{contents:[{uri:i.uri,mimeType:i.mimeType??o.meta.mimeType,blob:t.from(i.data).toString(`base64`)}]}}),a.logger.info(`Registered resource: `+o.meta.uriTemplate)}export{r as registerMcpResources};
1
+ import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { Buffer } from "node:buffer";
3
+
4
+ //#region src/server/mcp/registerResources.ts
5
+ function mcpResourceMeta(resource) {
6
+ return {
7
+ title: resource.meta.title,
8
+ description: resource.meta.description,
9
+ mimeType: resource.meta.mimeType,
10
+ _meta: { tags: resource.meta.tags ?? [] }
11
+ };
12
+ }
13
+ function registerMcpResources(server, resources, ctx) {
14
+ for (const resource of resources.listTemplates()) {
15
+ ctx.logger.info("Registering resource: " + resource.meta.uriTemplate);
16
+ server.registerResource(resource.meta.uriTemplate, new ResourceTemplate(resource.meta.uriTemplate, { list: void 0 }), mcpResourceMeta(resource), async (_uri, variables) => {
17
+ const parsedArgs = resource.input.parse(variables);
18
+ const out = await resource.resolve(parsedArgs, ctx.resourceCtx());
19
+ if (typeof out.data === "string") return { contents: [{
20
+ uri: out.uri,
21
+ mimeType: out.mimeType ?? resource.meta.mimeType,
22
+ text: out.data
23
+ }] };
24
+ return { contents: [{
25
+ uri: out.uri,
26
+ mimeType: out.mimeType ?? resource.meta.mimeType,
27
+ blob: Buffer.from(out.data).toString("base64")
28
+ }] };
29
+ });
30
+ ctx.logger.info("Registered resource: " + resource.meta.uriTemplate);
31
+ }
32
+ }
33
+
34
+ //#endregion
35
+ export { registerMcpResources };
@@ -0,0 +1,8 @@
1
+ import { OperationSpecRegistry } from "../../operations/registry.js";
2
+ import { McpCtxFactories } from "./mcpTypes.js";
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+
5
+ //#region src/server/mcp/registerTools.d.ts
6
+ declare function registerMcpTools(server: McpServer, ops: OperationSpecRegistry, ctx: Pick<McpCtxFactories, 'toolCtx'>): void;
7
+ //#endregion
8
+ export { registerMcpTools };
@@ -1 +1,22 @@
1
- import{defaultMcpTool as e}from"../../jsonschema.js";function t(t,n,r){for(let i of n.listSpecs()){if(i.meta.kind!==`command`)continue;let a=i.transport?.mcp?.toolName??e(i.meta.name,i.meta.version);t.registerTool(a,{description:i.meta.description,inputSchema:i.io.input?.getZod()},async e=>{let t=await n.execute(i.meta.name,i.meta.version,e??{},r.toolCtx());return{content:[{type:`text`,text:JSON.stringify(t,null,4)}]}})}}export{t as registerMcpTools};
1
+ import { defaultMcpTool } from "../../jsonschema.js";
2
+
3
+ //#region src/server/mcp/registerTools.ts
4
+ function registerMcpTools(server, ops, ctx) {
5
+ for (const spec of ops.listSpecs()) {
6
+ if (spec.meta.kind !== "command") continue;
7
+ const toolName = spec.transport?.mcp?.toolName ?? defaultMcpTool(spec.meta.key, spec.meta.version);
8
+ server.registerTool(toolName, {
9
+ description: spec.meta.description,
10
+ inputSchema: spec.io.input?.getZod()
11
+ }, async (args) => {
12
+ const result = await ops.execute(spec.meta.key, spec.meta.version, args ?? {}, ctx.toolCtx());
13
+ return { content: [{
14
+ type: "text",
15
+ text: JSON.stringify(result, null, 4)
16
+ }] };
17
+ });
18
+ }
19
+ }
20
+
21
+ //#endregion
22
+ export { registerMcpTools };
@@ -0,0 +1,2 @@
1
+ import { createMcpServer } from "./mcp/createMcpServer.js";
2
+ export { createMcpServer };
@@ -1 +1,3 @@
1
- import{createMcpServer as e}from"./mcp/createMcpServer.js";export{e as createMcpServer};
1
+ import { createMcpServer } from "./mcp/createMcpServer.js";
2
+
3
+ export { createMcpServer };
@@ -0,0 +1,40 @@
1
+ import { HandlerCtx } from "../types.js";
2
+ import { OperationSpecRegistry } from "../operations/registry.js";
3
+ import { RestOptions } from "./rest-generic.js";
4
+ import { Elysia } from "elysia";
5
+
6
+ //#region src/server/rest-elysia.d.ts
7
+ /** Mount routes on an Elysia instance */
8
+ declare function elysiaPlugin(app: Elysia, reg: OperationSpecRegistry, ctxFactory: (c: {
9
+ request: Request;
10
+ store: unknown;
11
+ }) => HandlerCtx, options?: RestOptions): Elysia<"", {
12
+ decorator: {};
13
+ store: {};
14
+ derive: {};
15
+ resolve: {};
16
+ }, {
17
+ typebox: {};
18
+ error: {};
19
+ }, {
20
+ schema: {};
21
+ standaloneSchema: {};
22
+ macro: {};
23
+ macroFn: {};
24
+ parser: {};
25
+ response: {};
26
+ }, {}, {
27
+ derive: {};
28
+ resolve: {};
29
+ schema: {};
30
+ standaloneSchema: {};
31
+ response: {};
32
+ }, {
33
+ derive: {};
34
+ resolve: {};
35
+ schema: {};
36
+ standaloneSchema: {};
37
+ response: {};
38
+ }>;
39
+ //#endregion
40
+ export { elysiaPlugin };
@@ -1 +1,20 @@
1
- import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r,i){let a=e(n,e=>r({request:e,store:t.store}),i);for(let e of n.listSpecs()){let n=e.transport?.rest?.method??(e.meta.kind===`query`?`GET`:`POST`),r=(i?.basePath??``)+(e.transport?.rest?.path??`/${e.meta.name.replace(/\./g,`/`)}/v${e.meta.version}`);t[n.toLowerCase()](r,({request:e})=>a(e))}return i?.cors&&t.options(`*`,({request:e})=>a(e)),t}export{t as elysiaPlugin};
1
+ import { createFetchHandler } from "./rest-generic.js";
2
+
3
+ //#region src/server/rest-elysia.ts
4
+ /** Mount routes on an Elysia instance */
5
+ function elysiaPlugin(app, reg, ctxFactory, options) {
6
+ const handler = createFetchHandler(reg, (req) => ctxFactory({
7
+ request: req,
8
+ store: app.store
9
+ }), options);
10
+ for (const spec of reg.listSpecs()) {
11
+ const method = spec.transport?.rest?.method ?? (spec.meta.kind === "query" ? "GET" : "POST");
12
+ const path = (options?.basePath ?? "") + (spec.transport?.rest?.path ?? `/${spec.meta.key.replace(/\./g, "/")}/v${spec.meta.version}`);
13
+ app[method.toLowerCase()](path, ({ request }) => handler(request));
14
+ }
15
+ if (options?.cors) app.options("*", ({ request }) => handler(request));
16
+ return app;
17
+ }
18
+
19
+ //#endregion
20
+ export { elysiaPlugin };
@@ -0,0 +1,16 @@
1
+ import { HandlerCtx } from "../types.js";
2
+ import { OperationSpecRegistry } from "../operations/registry.js";
3
+ import { RestOptions } from "./rest-generic.js";
4
+ import { Request, Router } from "express";
5
+
6
+ //#region src/server/rest-express.d.ts
7
+
8
+ /**
9
+ * Build an Express Router that proxies to the Fetch-style handler.
10
+ * You can mount it at any base path; pass the same basePath in options.
11
+ */
12
+ declare function expressRouter(express: {
13
+ Router: () => Router;
14
+ }, reg: OperationSpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): Router;
15
+ //#endregion
16
+ export { expressRouter };
@@ -1 +1,36 @@
1
- import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r,i){let a=t.Router();e(n,e=>{throw Error(`ctxFactory must be called from route`)},i);for(let t of n.listSpecs()){let o=t.transport?.rest?.method??(t.meta.kind===`query`?`GET`:`POST`),s=(i?.basePath??``)+(t.transport?.rest?.path??`/${t.meta.name.replace(/\./g,`/`)}/v${t.meta.version}`);a[o.toLowerCase()](s,async(t,a)=>{let s=new URL(`${t.protocol}://${t.get(`host`)}${t.originalUrl}`),c=new Request(s.toString(),{method:o,headers:Object.fromEntries(Object.entries(t.headers).map(([e,t])=>[e,String(t)])),body:o===`POST`?JSON.stringify(t.body??{}):void 0}),l=await e(n,()=>r(t),i)(c);a.status(l.status),l.headers.forEach((e,t)=>a.setHeader(t,e));let u=await l.text();a.send(u)})}return i?.cors&&a.options(`*`,(e,t)=>{let n=new Headers;new Response(null,{status:204}).headers.forEach((e,t)=>n.set(t,e)),t.status(204).send()}),a}export{t as expressRouter};
1
+ import { createFetchHandler } from "./rest-generic.js";
2
+
3
+ //#region src/server/rest-express.ts
4
+ /**
5
+ * Build an Express Router that proxies to the Fetch-style handler.
6
+ * You can mount it at any base path; pass the same basePath in options.
7
+ */
8
+ function expressRouter(express, reg, ctxFactory, options) {
9
+ const router = express.Router();
10
+ for (const spec of reg.listSpecs()) {
11
+ const method = spec.transport?.rest?.method ?? (spec.meta.kind === "query" ? "GET" : "POST");
12
+ const path = (options?.basePath ?? "") + (spec.transport?.rest?.path ?? `/${spec.meta.key.replace(/\./g, "/")}/v${spec.meta.version}`);
13
+ router[method.toLowerCase()](path, async (req, res) => {
14
+ const url = new URL(`${req.protocol}://${req.get("host")}${req.originalUrl}`);
15
+ const request = new Request(url.toString(), {
16
+ method,
17
+ headers: Object.fromEntries(Object.entries(req.headers).map(([k, v]) => [k, String(v)])),
18
+ body: method === "POST" ? JSON.stringify(req.body ?? {}) : void 0
19
+ });
20
+ const response = await createFetchHandler(reg, () => ctxFactory(req), options)(request);
21
+ res.status(response.status);
22
+ response.headers.forEach((v, k) => res.setHeader(k, v));
23
+ const text = await response.text();
24
+ res.send(text);
25
+ });
26
+ }
27
+ if (options?.cors) router.options("*", (_req, res) => {
28
+ const h = new Headers();
29
+ new Response(null, { status: 204 }).headers.forEach((v, k) => h.set(k, v));
30
+ res.status(204).send();
31
+ });
32
+ return router;
33
+ }
34
+
35
+ //#endregion
36
+ export { expressRouter };
@@ -0,0 +1,32 @@
1
+ import { HandlerCtx } from "../types.js";
2
+ import { OperationSpecRegistry } from "../operations/registry.js";
3
+
4
+ //#region src/server/rest-generic.d.ts
5
+ interface RestOptions {
6
+ /** Prefix all routes, e.g. "/api" */
7
+ basePath?: string;
8
+ /** If true, handle OPTIONS and set CORS headers */
9
+ cors?: boolean | {
10
+ origin?: string | '*';
11
+ methods?: string[];
12
+ headers?: string[];
13
+ credentials?: boolean;
14
+ maxAge?: number;
15
+ };
16
+ /** JSON spacing in responses (dev only ideally) */
17
+ prettyJson?: number | false;
18
+ /** Map thrown errors to {status, body} */
19
+ onError?: (err: unknown) => {
20
+ status: number;
21
+ body: unknown;
22
+ };
23
+ }
24
+ /**
25
+ * Build a single Fetch-style handler: (req) => Response
26
+ * - Discovers routes from OperationSpecRegistry
27
+ * - Validates with zod via registry.execute()
28
+ * - Handles CORS (optional)
29
+ */
30
+ declare function createFetchHandler(reg: OperationSpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): (req: Request) => Promise<Response>;
31
+ //#endregion
32
+ export { RestOptions, createFetchHandler };
@@ -1 +1,124 @@
1
- import{defaultRestPath as e}from"../jsonschema.js";function t(e){let t={};return t[`access-control-allow-origin`]=typeof e==`object`?e.origin??`*`:`*`,t.vary=`Origin`,typeof e==`object`?(e.methods&&(t[`access-control-allow-methods`]=e.methods.join(`, `)),e.headers&&(t[`access-control-allow-headers`]=e.headers.join(`, `)),e.credentials&&(t[`access-control-allow-credentials`]=`true`),typeof e.maxAge==`number`&&(t[`access-control-max-age`]=String(e.maxAge))):(t[`access-control-allow-methods`]=`GET,POST,OPTIONS`,t[`access-control-allow-headers`]=`content-type,x-idempotency-key,x-trace-id`),t}function n(e,t){return`${(e??``).replace(/\/+$/g,``)}/${t.replace(/^\/+/g,``)}`.replace(/\/{2,}/g,`/`)}function r(r,i,a){let o={basePath:a?.basePath??``,cors:a?.cors??!1,prettyJson:a?.prettyJson??!1,onError:a?.onError},s=r.listSpecs().map(t=>({method:t.transport?.rest?.method??(t.meta.kind===`query`?`GET`:`POST`),path:n(o.basePath,t.transport?.rest?.path??e(t.meta.name,t.meta.version)),name:t.meta.name,version:t.meta.version})),c=new Map;for(let e of s)c.set(`${e.method} ${e.path}`,e);Array.from(new Set(s.map(e=>e.method))).join(`, `);let l=(e,t,n)=>{let r=o.prettyJson?JSON.stringify(t,null,o.prettyJson):JSON.stringify(t),i={"content-type":`application/json; charset=utf-8`};return new Response(r,{status:e,headers:n?{...i,...n}:i})};return async function(e){let n=new URL(e.url),a=`${e.method.toUpperCase()} ${n.pathname}`;if(o.cors&&e.method.toUpperCase()===`OPTIONS`){let e=t(o.cors===!0?{}:o.cors);return new Response(null,{status:204,headers:{...e,"content-length":`0`}})}let s=c.get(a);if(!s){let e={};return o.cors&&Object.assign(e,t(o.cors===!0?{}:o.cors)),l(404,{error:`NotFound`,path:n.pathname},e)}try{let a={};if(s.method===`GET`)if(n.searchParams.has(`input`)){let e=n.searchParams.get(`input`);a=e?JSON.parse(e):{}}else{let e={};for(let[t,r]of n.searchParams.entries())e[t]=r;a=e}else{let t=e.headers.get(`content-type`)||``;if(t.includes(`application/json`))a=await e.json();else if(t.includes(`application/x-www-form-urlencoded`)){let t=await e.formData();a=Object.fromEntries(t.entries())}else if(!t)a={};else return l(415,{error:`UnsupportedMediaType`,contentType:t})}let c=i(e),u=await r.execute(s.name,s.version,a,c),d={};return o.cors&&Object.assign(d,t(o.cors===!0?{}:o.cors)),l(200,u,d)}catch(e){if(o.onError){let n=o.onError(e),r={};return o.cors&&Object.assign(r,t(o.cors===!0?{}:o.cors)),l(n.status,n.body,r)}let n={};return o.cors&&Object.assign(n,t(o.cors===!0?{}:o.cors)),e?.issues?l(400,{error:`ValidationError`,issues:e.issues},n):typeof e?.message==`string`&&e.message.startsWith(`PolicyDenied`)?l(403,{error:`PolicyDenied`},n):l(500,{error:`InternalError`},n)}}}export{r as createFetchHandler};
1
+ import { defaultRestPath } from "../jsonschema.js";
2
+
3
+ //#region src/server/rest-generic.ts
4
+ /** Minimal WHATWG Response polyfill util for Node < 18 (if needed) */
5
+ function corsHeaders(opt) {
6
+ const h = {};
7
+ h["access-control-allow-origin"] = typeof opt === "object" ? opt.origin ?? "*" : "*";
8
+ h["vary"] = "Origin";
9
+ if (typeof opt === "object") {
10
+ if (opt.methods) h["access-control-allow-methods"] = opt.methods.join(", ");
11
+ if (opt.headers) h["access-control-allow-headers"] = opt.headers.join(", ");
12
+ if (opt.credentials) h["access-control-allow-credentials"] = "true";
13
+ if (typeof opt.maxAge === "number") h["access-control-max-age"] = String(opt.maxAge);
14
+ } else {
15
+ h["access-control-allow-methods"] = "GET,POST,OPTIONS";
16
+ h["access-control-allow-headers"] = "content-type,x-idempotency-key,x-trace-id";
17
+ }
18
+ return h;
19
+ }
20
+ function joinPath(a, b) {
21
+ return `${(a ?? "").replace(/\/+$/g, "")}/${b.replace(/^\/+/g, "")}`.replace(/\/{2,}/g, "/");
22
+ }
23
+ /**
24
+ * Build a single Fetch-style handler: (req) => Response
25
+ * - Discovers routes from OperationSpecRegistry
26
+ * - Validates with zod via registry.execute()
27
+ * - Handles CORS (optional)
28
+ */
29
+ function createFetchHandler(reg, ctxFactory, options) {
30
+ const opts = {
31
+ basePath: options?.basePath ?? "",
32
+ cors: options?.cors ?? false,
33
+ prettyJson: options?.prettyJson ?? false,
34
+ onError: options?.onError
35
+ };
36
+ const routes = reg.listSpecs().map((spec) => ({
37
+ method: spec.transport?.rest?.method ?? (spec.meta.kind === "query" ? "GET" : "POST"),
38
+ path: joinPath(opts.basePath, spec.transport?.rest?.path ?? defaultRestPath(spec.meta.key, spec.meta.version)),
39
+ name: spec.meta.key,
40
+ version: spec.meta.version
41
+ }));
42
+ const routeTable = /* @__PURE__ */ new Map();
43
+ for (const r of routes) routeTable.set(`${r.method} ${r.path}`, r);
44
+ const makeJson = (status, data, extraHeaders) => {
45
+ const body = opts.prettyJson ? JSON.stringify(data, null, opts.prettyJson) : JSON.stringify(data);
46
+ const base = { "content-type": "application/json; charset=utf-8" };
47
+ return new Response(body, {
48
+ status,
49
+ headers: extraHeaders ? {
50
+ ...base,
51
+ ...extraHeaders
52
+ } : base
53
+ });
54
+ };
55
+ return async function handle(req) {
56
+ const url = new URL(req.url);
57
+ const key = `${req.method.toUpperCase()} ${url.pathname}`;
58
+ if (opts.cors && req.method.toUpperCase() === "OPTIONS") {
59
+ const h = corsHeaders(opts.cors === true ? {} : opts.cors);
60
+ return new Response(null, {
61
+ status: 204,
62
+ headers: {
63
+ ...h,
64
+ "content-length": "0"
65
+ }
66
+ });
67
+ }
68
+ const route = routeTable.get(key);
69
+ if (!route) {
70
+ const headers = {};
71
+ if (opts.cors) Object.assign(headers, corsHeaders(opts.cors === true ? {} : opts.cors));
72
+ return makeJson(404, {
73
+ error: "NotFound",
74
+ path: url.pathname
75
+ }, headers);
76
+ }
77
+ try {
78
+ let input = {};
79
+ if (route.method === "GET") if (url.searchParams.has("input")) {
80
+ const raw = url.searchParams.get("input");
81
+ input = raw ? JSON.parse(raw) : {};
82
+ } else {
83
+ const obj = {};
84
+ for (const [k, v] of url.searchParams.entries()) obj[k] = v;
85
+ input = obj;
86
+ }
87
+ else {
88
+ const contentType = req.headers.get("content-type") || "";
89
+ if (contentType.includes("application/json")) input = await req.json();
90
+ else if (contentType.includes("application/x-www-form-urlencoded")) {
91
+ const form = await req.formData();
92
+ input = Object.fromEntries(form.entries());
93
+ } else if (!contentType) input = {};
94
+ else return makeJson(415, {
95
+ error: "UnsupportedMediaType",
96
+ contentType
97
+ });
98
+ }
99
+ const ctx = ctxFactory(req);
100
+ const result = await reg.execute(route.name, route.version, input, ctx);
101
+ const headers = {};
102
+ if (opts.cors) Object.assign(headers, corsHeaders(opts.cors === true ? {} : opts.cors));
103
+ return makeJson(200, result, headers);
104
+ } catch (err) {
105
+ if (opts.onError) {
106
+ const mapped = opts.onError(err);
107
+ const headers$1 = {};
108
+ if (opts.cors) Object.assign(headers$1, corsHeaders(opts.cors === true ? {} : opts.cors));
109
+ return makeJson(mapped.status, mapped.body, headers$1);
110
+ }
111
+ const headers = {};
112
+ if (opts.cors) Object.assign(headers, corsHeaders(opts.cors === true ? {} : opts.cors));
113
+ if (err?.issues) return makeJson(400, {
114
+ error: "ValidationError",
115
+ issues: err.issues
116
+ }, headers);
117
+ if (typeof err?.message === "string" && err.message.startsWith("PolicyDenied")) return makeJson(403, { error: "PolicyDenied" }, headers);
118
+ return makeJson(500, { error: "InternalError" }, headers);
119
+ }
120
+ };
121
+ }
122
+
123
+ //#endregion
124
+ export { createFetchHandler };
@@ -0,0 +1,35 @@
1
+ import { HandlerCtx } from "../types.js";
2
+ import { OperationSpecRegistry } from "../operations/registry.js";
3
+ import { RestOptions } from "./rest-generic.js";
4
+
5
+ //#region src/server/rest-next-app.d.ts
6
+
7
+ /**
8
+ * Creates a Next.js App Router route handler for ContractSpec operations.
9
+ *
10
+ * This function returns a handler suitable for `export const { GET, POST }` in a `route.ts` file.
11
+ * It handles:
12
+ * - Path parsing to determine the operation name and version.
13
+ * - Body parsing (JSON).
14
+ * - Context creation via `ctxFactory`.
15
+ * - Execution via `OperationSpecRegistry`.
16
+ * - Response formatting (JSON success/error).
17
+ *
18
+ * @param reg - The OperationSpecRegistry containing the operations.
19
+ * @param ctxFactory - A factory function to build the `HandlerCtx` (e.g., auth, tenant) from the request.
20
+ * @param options - Optional configuration for the REST handler.
21
+ * @returns A function `(req: Request) => Promise<Response>`.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * // app/api/[...route]/route.ts
26
+ * import { makeNextAppHandler } from '@lssm/lib.contracts/server/rest-next-app';
27
+ * import { registry } from '@/lib/registry';
28
+ *
29
+ * const handler = makeNextAppHandler(registry, (req) => ({ actor: 'anonymous' }));
30
+ * export { handler as GET, handler as POST };
31
+ * ```
32
+ */
33
+ declare function makeNextAppHandler(reg: OperationSpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): (req: Request) => Promise<Response>;
34
+ //#endregion
35
+ export { makeNextAppHandler };
@@ -1 +1,38 @@
1
- import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r){let i=e(t,n,r);return async function(e){return i(e)}}export{t as makeNextAppHandler};
1
+ import { createFetchHandler } from "./rest-generic.js";
2
+
3
+ //#region src/server/rest-next-app.ts
4
+ /**
5
+ * Creates a Next.js App Router route handler for ContractSpec operations.
6
+ *
7
+ * This function returns a handler suitable for `export const { GET, POST }` in a `route.ts` file.
8
+ * It handles:
9
+ * - Path parsing to determine the operation name and version.
10
+ * - Body parsing (JSON).
11
+ * - Context creation via `ctxFactory`.
12
+ * - Execution via `OperationSpecRegistry`.
13
+ * - Response formatting (JSON success/error).
14
+ *
15
+ * @param reg - The OperationSpecRegistry containing the operations.
16
+ * @param ctxFactory - A factory function to build the `HandlerCtx` (e.g., auth, tenant) from the request.
17
+ * @param options - Optional configuration for the REST handler.
18
+ * @returns A function `(req: Request) => Promise<Response>`.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * // app/api/[...route]/route.ts
23
+ * import { makeNextAppHandler } from '@lssm/lib.contracts/server/rest-next-app';
24
+ * import { registry } from '@/lib/registry';
25
+ *
26
+ * const handler = makeNextAppHandler(registry, (req) => ({ actor: 'anonymous' }));
27
+ * export { handler as GET, handler as POST };
28
+ * ```
29
+ */
30
+ function makeNextAppHandler(reg, ctxFactory, options) {
31
+ const handler = createFetchHandler(reg, ctxFactory, options);
32
+ return async function requestHandler(req) {
33
+ return handler(req);
34
+ };
35
+ }
36
+
37
+ //#endregion
38
+ export { makeNextAppHandler };
@@ -0,0 +1,11 @@
1
+ import { HandlerCtx } from "../types.js";
2
+ import { OperationSpecRegistry } from "../operations/registry.js";
3
+
4
+ //#region src/server/rest-next-mcp.d.ts
5
+ declare function makeNextMcpServerFromRegistry(reg: OperationSpecRegistry, ctxFactory: () => HandlerCtx): {
6
+ GET: (request: Request) => Promise<Response>;
7
+ POST: (request: Request) => Promise<Response>;
8
+ DELETE: (request: Request) => Promise<Response>;
9
+ };
10
+ //#endregion
11
+ export { makeNextMcpServerFromRegistry };