@lssm/lib.contracts 0.0.0-canary-20251217080011 → 0.0.0-canary-20251219202229

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 (835) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app-config/app-config.feature.d.ts +2 -1
  3. package/dist/app-config/app-config.feature.d.ts.map +1 -0
  4. package/dist/app-config/app-config.feature.js +2 -1
  5. package/dist/app-config/app-config.feature.js.map +1 -0
  6. package/dist/app-config/branding.d.ts +2 -1
  7. package/dist/app-config/branding.d.ts.map +1 -0
  8. package/dist/app-config/contracts.d.ts +52 -51
  9. package/dist/app-config/contracts.d.ts.map +1 -0
  10. package/dist/app-config/contracts.js +56 -57
  11. package/dist/app-config/contracts.js.map +1 -0
  12. package/dist/app-config/docs/app-config.docblock.d.ts +2 -1
  13. package/dist/app-config/docs/app-config.docblock.d.ts.map +1 -0
  14. package/dist/app-config/docs/app-config.docblock.js +2 -1
  15. package/dist/app-config/docs/app-config.docblock.js.map +1 -0
  16. package/dist/app-config/events.d.ts +29 -28
  17. package/dist/app-config/events.d.ts.map +1 -0
  18. package/dist/app-config/events.js +33 -34
  19. package/dist/app-config/events.js.map +1 -0
  20. package/dist/app-config/lifecycle-contracts.d.ts +82 -81
  21. package/dist/app-config/lifecycle-contracts.d.ts.map +1 -0
  22. package/dist/app-config/lifecycle-contracts.js +68 -69
  23. package/dist/app-config/lifecycle-contracts.js.map +1 -0
  24. package/dist/app-config/lifecycle.d.ts +2 -1
  25. package/dist/app-config/lifecycle.d.ts.map +1 -0
  26. package/dist/app-config/runtime.d.ts +2 -1
  27. package/dist/app-config/runtime.d.ts.map +1 -0
  28. package/dist/app-config/runtime.js +2 -1
  29. package/dist/app-config/runtime.js.map +1 -0
  30. package/dist/app-config/spec.d.ts +2 -1
  31. package/dist/app-config/spec.d.ts.map +1 -0
  32. package/dist/app-config/spec.js +2 -1
  33. package/dist/app-config/spec.js.map +1 -0
  34. package/dist/app-config/validation.d.ts +2 -1
  35. package/dist/app-config/validation.d.ts.map +1 -0
  36. package/dist/app-config/validation.js +2 -1
  37. package/dist/app-config/validation.js.map +1 -0
  38. package/dist/capabilities/docs/capabilities.docblock.d.ts +2 -1
  39. package/dist/capabilities/docs/capabilities.docblock.d.ts.map +1 -0
  40. package/dist/capabilities/docs/capabilities.docblock.js +2 -1
  41. package/dist/capabilities/docs/capabilities.docblock.js.map +1 -0
  42. package/dist/capabilities/openbanking.d.ts +2 -1
  43. package/dist/capabilities/openbanking.d.ts.map +1 -0
  44. package/dist/capabilities/openbanking.js +2 -1
  45. package/dist/capabilities/openbanking.js.map +1 -0
  46. package/dist/capabilities.d.ts +2 -1
  47. package/dist/capabilities.d.ts.map +1 -0
  48. package/dist/capabilities.js +2 -1
  49. package/dist/capabilities.js.map +1 -0
  50. package/dist/client/react/drivers/rn-reusables.d.ts +2 -1
  51. package/dist/client/react/drivers/rn-reusables.d.ts.map +1 -0
  52. package/dist/client/react/drivers/rn-reusables.js +2 -1
  53. package/dist/client/react/drivers/rn-reusables.js.map +1 -0
  54. package/dist/client/react/drivers/shadcn.d.ts +2 -1
  55. package/dist/client/react/drivers/shadcn.d.ts.map +1 -0
  56. package/dist/client/react/drivers/shadcn.js +2 -1
  57. package/dist/client/react/drivers/shadcn.js.map +1 -0
  58. package/dist/client/react/feature-render.d.ts +2 -1
  59. package/dist/client/react/feature-render.d.ts.map +1 -0
  60. package/dist/client/react/feature-render.js +2 -1
  61. package/dist/client/react/feature-render.js.map +1 -0
  62. package/dist/client/react/form-render.d.ts +8 -7
  63. package/dist/client/react/form-render.d.ts.map +1 -0
  64. package/dist/client/react/form-render.js +17 -16
  65. package/dist/client/react/form-render.js.map +1 -0
  66. package/dist/contract-registry/schemas.d.ts +2 -1
  67. package/dist/contract-registry/schemas.d.ts.map +1 -0
  68. package/dist/contract-registry/schemas.js +2 -1
  69. package/dist/contract-registry/schemas.js.map +1 -0
  70. package/dist/contract-registry/types.d.ts +2 -1
  71. package/dist/contract-registry/types.d.ts.map +1 -0
  72. package/dist/contracts-adapter-hydration.d.ts +2 -1
  73. package/dist/contracts-adapter-hydration.d.ts.map +1 -0
  74. package/dist/contracts-adapter-hydration.js +2 -1
  75. package/dist/contracts-adapter-hydration.js.map +1 -0
  76. package/dist/contracts-adapter-input.d.ts +2 -1
  77. package/dist/contracts-adapter-input.d.ts.map +1 -0
  78. package/dist/contracts-adapter-input.js +2 -1
  79. package/dist/contracts-adapter-input.js.map +1 -0
  80. package/dist/data-views/docs/data-views.docblock.d.ts +2 -1
  81. package/dist/data-views/docs/data-views.docblock.d.ts.map +1 -0
  82. package/dist/data-views/docs/data-views.docblock.js +2 -1
  83. package/dist/data-views/docs/data-views.docblock.js.map +1 -0
  84. package/dist/data-views/query-generator.d.ts +2 -1
  85. package/dist/data-views/query-generator.d.ts.map +1 -0
  86. package/dist/data-views/query-generator.js +2 -1
  87. package/dist/data-views/query-generator.js.map +1 -0
  88. package/dist/data-views/runtime.d.ts +2 -1
  89. package/dist/data-views/runtime.d.ts.map +1 -0
  90. package/dist/data-views/runtime.js +2 -1
  91. package/dist/data-views/runtime.js.map +1 -0
  92. package/dist/data-views.d.ts +2 -1
  93. package/dist/data-views.d.ts.map +1 -0
  94. package/dist/data-views.js +2 -1
  95. package/dist/data-views.js.map +1 -0
  96. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +2 -1
  97. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts.map +1 -0
  98. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
  99. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
  100. package/dist/docs/index.js +0 -6
  101. package/dist/docs/meta.docs.d.ts +2 -1
  102. package/dist/docs/meta.docs.d.ts.map +1 -0
  103. package/dist/docs/meta.docs.js +5 -1
  104. package/dist/docs/meta.docs.js.map +1 -0
  105. package/dist/docs/presentations.d.ts +2 -1
  106. package/dist/docs/presentations.d.ts.map +1 -0
  107. package/dist/docs/presentations.js +2 -1
  108. package/dist/docs/presentations.js.map +1 -0
  109. package/dist/docs/registry.d.ts +2 -1
  110. package/dist/docs/registry.d.ts.map +1 -0
  111. package/dist/docs/registry.js +2 -1
  112. package/dist/docs/registry.js.map +1 -0
  113. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +2 -1
  114. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts.map +1 -0
  115. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
  116. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
  117. package/dist/docs/tech/contracts/README.docblock.d.ts +2 -1
  118. package/dist/docs/tech/contracts/README.docblock.d.ts.map +1 -0
  119. package/dist/docs/tech/contracts/README.docblock.js +2 -1
  120. package/dist/docs/tech/contracts/README.docblock.js.map +1 -0
  121. package/dist/docs/tech/contracts/create-subscription.docblock.d.ts +2 -1
  122. package/dist/docs/tech/contracts/create-subscription.docblock.d.ts.map +1 -0
  123. package/dist/docs/tech/contracts/create-subscription.docblock.js +2 -1
  124. package/dist/docs/tech/contracts/create-subscription.docblock.js.map +1 -0
  125. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts +2 -1
  126. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts.map +1 -0
  127. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +2 -1
  128. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js.map +1 -0
  129. package/dist/docs/tech/contracts/migrations.docblock.d.ts +2 -1
  130. package/dist/docs/tech/contracts/migrations.docblock.d.ts.map +1 -0
  131. package/dist/docs/tech/contracts/migrations.docblock.js +2 -1
  132. package/dist/docs/tech/contracts/migrations.docblock.js.map +1 -0
  133. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +2 -1
  134. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts.map +1 -0
  135. package/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
  136. package/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
  137. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +2 -1
  138. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts.map +1 -0
  139. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +2 -1
  140. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js.map +1 -0
  141. package/dist/docs/tech/contracts/overlays.docblock.d.ts +2 -1
  142. package/dist/docs/tech/contracts/overlays.docblock.d.ts.map +1 -0
  143. package/dist/docs/tech/contracts/overlays.docblock.js +2 -1
  144. package/dist/docs/tech/contracts/overlays.docblock.js.map +1 -0
  145. package/dist/docs/tech/contracts/tests.docblock.d.ts +2 -1
  146. package/dist/docs/tech/contracts/tests.docblock.d.ts.map +1 -0
  147. package/dist/docs/tech/contracts/tests.docblock.js +2 -1
  148. package/dist/docs/tech/contracts/tests.docblock.js.map +1 -0
  149. package/dist/docs/tech/contracts/themes.docblock.d.ts +2 -1
  150. package/dist/docs/tech/contracts/themes.docblock.d.ts.map +1 -0
  151. package/dist/docs/tech/contracts/themes.docblock.js +2 -1
  152. package/dist/docs/tech/contracts/themes.docblock.js.map +1 -0
  153. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +2 -1
  154. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts.map +1 -0
  155. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +2 -1
  156. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js.map +1 -0
  157. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +2 -1
  158. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts.map +1 -0
  159. package/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
  160. package/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
  161. package/dist/docs/tech/llm/llm-integration.docblock.d.ts +2 -1
  162. package/dist/docs/tech/llm/llm-integration.docblock.d.ts.map +1 -0
  163. package/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
  164. package/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
  165. package/dist/docs/tech/mcp-endpoints.docblock.d.ts +2 -1
  166. package/dist/docs/tech/mcp-endpoints.docblock.d.ts.map +1 -0
  167. package/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
  168. package/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
  169. package/dist/docs/tech/presentation-runtime.docblock.d.ts +2 -1
  170. package/dist/docs/tech/presentation-runtime.docblock.d.ts.map +1 -0
  171. package/dist/docs/tech/presentation-runtime.docblock.js +2 -1
  172. package/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
  173. package/dist/docs/tech/schema/README.docblock.d.ts +2 -1
  174. package/dist/docs/tech/schema/README.docblock.d.ts.map +1 -0
  175. package/dist/docs/tech/schema/README.docblock.js +2 -1
  176. package/dist/docs/tech/schema/README.docblock.js.map +1 -0
  177. package/dist/docs/tech/studio/learning-events.docblock.d.ts +2 -1
  178. package/dist/docs/tech/studio/learning-events.docblock.d.ts.map +1 -0
  179. package/dist/docs/tech/studio/learning-events.docblock.js +2 -1
  180. package/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
  181. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +2 -1
  182. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts.map +1 -0
  183. package/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
  184. package/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
  185. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +2 -1
  186. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts.map +1 -0
  187. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
  188. package/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
  189. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +2 -1
  190. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts.map +1 -0
  191. package/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
  192. package/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
  193. package/dist/docs/tech/studio/project-routing.docblock.d.ts +2 -1
  194. package/dist/docs/tech/studio/project-routing.docblock.d.ts.map +1 -0
  195. package/dist/docs/tech/studio/project-routing.docblock.js +2 -1
  196. package/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
  197. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +2 -1
  198. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts.map +1 -0
  199. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
  200. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
  201. package/dist/docs/tech/studio/team-invitations.docblock.d.ts +2 -1
  202. package/dist/docs/tech/studio/team-invitations.docblock.d.ts.map +1 -0
  203. package/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
  204. package/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
  205. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +2 -1
  206. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts.map +1 -0
  207. package/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
  208. package/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
  209. package/dist/docs/tech/studio/workspaces.docblock.d.ts +2 -1
  210. package/dist/docs/tech/studio/workspaces.docblock.d.ts.map +1 -0
  211. package/dist/docs/tech/studio/workspaces.docblock.js +2 -1
  212. package/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
  213. package/dist/docs/tech/telemetry-ingest.docblock.d.ts +2 -1
  214. package/dist/docs/tech/telemetry-ingest.docblock.d.ts.map +1 -0
  215. package/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
  216. package/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
  217. package/dist/docs/tech/templates/runtime.docblock.d.ts +2 -1
  218. package/dist/docs/tech/templates/runtime.docblock.d.ts.map +1 -0
  219. package/dist/docs/tech/templates/runtime.docblock.js +2 -1
  220. package/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
  221. package/dist/docs/tech/vscode-extension.docblock.d.ts +2 -1
  222. package/dist/docs/tech/vscode-extension.docblock.d.ts.map +1 -0
  223. package/dist/docs/tech/vscode-extension.docblock.js +2 -1
  224. package/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
  225. package/dist/docs/tech/workflows/overview.docblock.d.ts +2 -1
  226. package/dist/docs/tech/workflows/overview.docblock.d.ts.map +1 -0
  227. package/dist/docs/tech/workflows/overview.docblock.js +2 -1
  228. package/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
  229. package/dist/docs/tech-contracts.docs.d.ts +2 -1
  230. package/dist/docs/tech-contracts.docs.d.ts.map +1 -0
  231. package/dist/docs/tech-contracts.docs.js +5 -1
  232. package/dist/docs/tech-contracts.docs.js.map +1 -0
  233. package/dist/docs/types.d.ts +2 -1
  234. package/dist/docs/types.d.ts.map +1 -0
  235. package/dist/events.d.ts +2 -1
  236. package/dist/events.d.ts.map +1 -0
  237. package/dist/events.js +2 -1
  238. package/dist/events.js.map +1 -0
  239. package/dist/experiments/docs/experiments.docblock.d.ts +2 -1
  240. package/dist/experiments/docs/experiments.docblock.d.ts.map +1 -0
  241. package/dist/experiments/docs/experiments.docblock.js +2 -1
  242. package/dist/experiments/docs/experiments.docblock.js.map +1 -0
  243. package/dist/experiments/evaluator.d.ts +2 -1
  244. package/dist/experiments/evaluator.d.ts.map +1 -0
  245. package/dist/experiments/evaluator.js +2 -1
  246. package/dist/experiments/evaluator.js.map +1 -0
  247. package/dist/experiments/spec-resolver.d.ts +2 -1
  248. package/dist/experiments/spec-resolver.d.ts.map +1 -0
  249. package/dist/experiments/spec.d.ts +2 -1
  250. package/dist/experiments/spec.d.ts.map +1 -0
  251. package/dist/experiments/spec.js +2 -1
  252. package/dist/experiments/spec.js.map +1 -0
  253. package/dist/features.d.ts +2 -1
  254. package/dist/features.d.ts.map +1 -0
  255. package/dist/features.js +2 -1
  256. package/dist/features.js.map +1 -0
  257. package/dist/forms/docs/forms.docblock.d.ts +2 -1
  258. package/dist/forms/docs/forms.docblock.d.ts.map +1 -0
  259. package/dist/forms/docs/forms.docblock.js +2 -1
  260. package/dist/forms/docs/forms.docblock.js.map +1 -0
  261. package/dist/forms.d.ts +2 -1
  262. package/dist/forms.d.ts.map +1 -0
  263. package/dist/forms.js +2 -1
  264. package/dist/forms.js.map +1 -0
  265. package/dist/index.js +2 -3
  266. package/dist/install.d.ts +2 -1
  267. package/dist/install.d.ts.map +1 -0
  268. package/dist/install.js +2 -1
  269. package/dist/install.js.map +1 -0
  270. package/dist/integrations/binding.d.ts +2 -1
  271. package/dist/integrations/binding.d.ts.map +1 -0
  272. package/dist/integrations/connection.d.ts +2 -1
  273. package/dist/integrations/connection.d.ts.map +1 -0
  274. package/dist/integrations/contracts.d.ts +104 -103
  275. package/dist/integrations/contracts.d.ts.map +1 -0
  276. package/dist/integrations/contracts.js +65 -66
  277. package/dist/integrations/contracts.js.map +1 -0
  278. package/dist/integrations/docs/integrations.docblock.d.ts +2 -1
  279. package/dist/integrations/docs/integrations.docblock.d.ts.map +1 -0
  280. package/dist/integrations/docs/integrations.docblock.js +2 -1
  281. package/dist/integrations/docs/integrations.docblock.js.map +1 -0
  282. package/dist/integrations/health.d.ts +2 -1
  283. package/dist/integrations/health.d.ts.map +1 -0
  284. package/dist/integrations/health.js +2 -1
  285. package/dist/integrations/health.js.map +1 -0
  286. package/dist/integrations/openbanking/contracts/accounts.d.ts +68 -67
  287. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -0
  288. package/dist/integrations/openbanking/contracts/accounts.js +31 -32
  289. package/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  290. package/dist/integrations/openbanking/contracts/balances.d.ts +2 -1
  291. package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -0
  292. package/dist/integrations/openbanking/contracts/balances.js +18 -19
  293. package/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  294. package/dist/integrations/openbanking/contracts/index.d.ts +2 -1
  295. package/dist/integrations/openbanking/contracts/index.d.ts.map +1 -0
  296. package/dist/integrations/openbanking/contracts/index.js +2 -1
  297. package/dist/integrations/openbanking/contracts/index.js.map +1 -0
  298. package/dist/integrations/openbanking/contracts/transactions.d.ts +50 -49
  299. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -0
  300. package/dist/integrations/openbanking/contracts/transactions.js +32 -33
  301. package/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  302. package/dist/integrations/openbanking/guards.d.ts +2 -1
  303. package/dist/integrations/openbanking/guards.d.ts.map +1 -0
  304. package/dist/integrations/openbanking/guards.js +2 -1
  305. package/dist/integrations/openbanking/guards.js.map +1 -0
  306. package/dist/integrations/openbanking/models.d.ts +2 -1
  307. package/dist/integrations/openbanking/models.d.ts.map +1 -0
  308. package/dist/integrations/openbanking/models.js +60 -61
  309. package/dist/integrations/openbanking/models.js.map +1 -0
  310. package/dist/integrations/openbanking/openbanking.feature.d.ts +2 -1
  311. package/dist/integrations/openbanking/openbanking.feature.d.ts.map +1 -0
  312. package/dist/integrations/openbanking/openbanking.feature.js +2 -1
  313. package/dist/integrations/openbanking/openbanking.feature.js.map +1 -0
  314. package/dist/integrations/openbanking/telemetry.d.ts +2 -1
  315. package/dist/integrations/openbanking/telemetry.d.ts.map +1 -0
  316. package/dist/integrations/openbanking/telemetry.js +2 -1
  317. package/dist/integrations/openbanking/telemetry.js.map +1 -0
  318. package/dist/integrations/providers/calendar.d.ts +2 -1
  319. package/dist/integrations/providers/calendar.d.ts.map +1 -0
  320. package/dist/integrations/providers/elevenlabs.d.ts +2 -1
  321. package/dist/integrations/providers/elevenlabs.d.ts.map +1 -0
  322. package/dist/integrations/providers/elevenlabs.js +2 -1
  323. package/dist/integrations/providers/elevenlabs.js.map +1 -0
  324. package/dist/integrations/providers/email.d.ts +2 -1
  325. package/dist/integrations/providers/email.d.ts.map +1 -0
  326. package/dist/integrations/providers/embedding.d.ts +2 -1
  327. package/dist/integrations/providers/embedding.d.ts.map +1 -0
  328. package/dist/integrations/providers/gcs-storage.d.ts +2 -1
  329. package/dist/integrations/providers/gcs-storage.d.ts.map +1 -0
  330. package/dist/integrations/providers/gcs-storage.js +2 -1
  331. package/dist/integrations/providers/gcs-storage.js.map +1 -0
  332. package/dist/integrations/providers/gmail.d.ts +2 -1
  333. package/dist/integrations/providers/gmail.d.ts.map +1 -0
  334. package/dist/integrations/providers/gmail.js +2 -1
  335. package/dist/integrations/providers/gmail.js.map +1 -0
  336. package/dist/integrations/providers/google-calendar.d.ts +2 -1
  337. package/dist/integrations/providers/google-calendar.d.ts.map +1 -0
  338. package/dist/integrations/providers/google-calendar.js +2 -1
  339. package/dist/integrations/providers/google-calendar.js.map +1 -0
  340. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +2 -1
  341. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +1 -0
  342. package/dist/integrations/providers/impls/elevenlabs-voice.js +2 -1
  343. package/dist/integrations/providers/impls/elevenlabs-voice.js.map +1 -0
  344. package/dist/integrations/providers/impls/gcs-storage.d.ts +2 -1
  345. package/dist/integrations/providers/impls/gcs-storage.d.ts.map +1 -0
  346. package/dist/integrations/providers/impls/gcs-storage.js +2 -1
  347. package/dist/integrations/providers/impls/gcs-storage.js.map +1 -0
  348. package/dist/integrations/providers/impls/gmail-inbound.d.ts +2 -1
  349. package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +1 -0
  350. package/dist/integrations/providers/impls/gmail-inbound.js +2 -1
  351. package/dist/integrations/providers/impls/gmail-inbound.js.map +1 -0
  352. package/dist/integrations/providers/impls/gmail-outbound.d.ts +2 -1
  353. package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +1 -0
  354. package/dist/integrations/providers/impls/gmail-outbound.js +2 -1
  355. package/dist/integrations/providers/impls/gmail-outbound.js.map +1 -0
  356. package/dist/integrations/providers/impls/google-calendar.d.ts +2 -1
  357. package/dist/integrations/providers/impls/google-calendar.d.ts.map +1 -0
  358. package/dist/integrations/providers/impls/google-calendar.js +2 -1
  359. package/dist/integrations/providers/impls/google-calendar.js.map +1 -0
  360. package/dist/integrations/providers/impls/mistral-embedding.d.ts +2 -1
  361. package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +1 -0
  362. package/dist/integrations/providers/impls/mistral-embedding.js +2 -1
  363. package/dist/integrations/providers/impls/mistral-embedding.js.map +1 -0
  364. package/dist/integrations/providers/impls/mistral-llm.d.ts +2 -1
  365. package/dist/integrations/providers/impls/mistral-llm.d.ts.map +1 -0
  366. package/dist/integrations/providers/impls/mistral-llm.js +2 -1
  367. package/dist/integrations/providers/impls/mistral-llm.js.map +1 -0
  368. package/dist/integrations/providers/impls/postmark-email.d.ts +2 -1
  369. package/dist/integrations/providers/impls/postmark-email.d.ts.map +1 -0
  370. package/dist/integrations/providers/impls/postmark-email.js +2 -1
  371. package/dist/integrations/providers/impls/postmark-email.js.map +1 -0
  372. package/dist/integrations/providers/impls/powens-client.d.ts +2 -1
  373. package/dist/integrations/providers/impls/powens-client.d.ts.map +1 -0
  374. package/dist/integrations/providers/impls/powens-client.js +2 -1
  375. package/dist/integrations/providers/impls/powens-client.js.map +1 -0
  376. package/dist/integrations/providers/impls/powens-openbanking.d.ts +2 -1
  377. package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +1 -0
  378. package/dist/integrations/providers/impls/powens-openbanking.js +2 -1
  379. package/dist/integrations/providers/impls/powens-openbanking.js.map +1 -0
  380. package/dist/integrations/providers/impls/provider-factory.d.ts +2 -1
  381. package/dist/integrations/providers/impls/provider-factory.d.ts.map +1 -0
  382. package/dist/integrations/providers/impls/provider-factory.js +2 -1
  383. package/dist/integrations/providers/impls/provider-factory.js.map +1 -0
  384. package/dist/integrations/providers/impls/qdrant-vector.d.ts +2 -1
  385. package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +1 -0
  386. package/dist/integrations/providers/impls/qdrant-vector.js +2 -1
  387. package/dist/integrations/providers/impls/qdrant-vector.js.map +1 -0
  388. package/dist/integrations/providers/impls/stripe-payments.d.ts +2 -1
  389. package/dist/integrations/providers/impls/stripe-payments.d.ts.map +1 -0
  390. package/dist/integrations/providers/impls/stripe-payments.js +2 -1
  391. package/dist/integrations/providers/impls/stripe-payments.js.map +1 -0
  392. package/dist/integrations/providers/impls/twilio-sms.d.ts +2 -1
  393. package/dist/integrations/providers/impls/twilio-sms.d.ts.map +1 -0
  394. package/dist/integrations/providers/impls/twilio-sms.js +2 -1
  395. package/dist/integrations/providers/impls/twilio-sms.js.map +1 -0
  396. package/dist/integrations/providers/llm.d.ts +2 -1
  397. package/dist/integrations/providers/llm.d.ts.map +1 -0
  398. package/dist/integrations/providers/mistral.d.ts +2 -1
  399. package/dist/integrations/providers/mistral.d.ts.map +1 -0
  400. package/dist/integrations/providers/mistral.js +2 -1
  401. package/dist/integrations/providers/mistral.js.map +1 -0
  402. package/dist/integrations/providers/openbanking.d.ts +2 -1
  403. package/dist/integrations/providers/openbanking.d.ts.map +1 -0
  404. package/dist/integrations/providers/payments.d.ts +2 -1
  405. package/dist/integrations/providers/payments.d.ts.map +1 -0
  406. package/dist/integrations/providers/postmark.d.ts +2 -1
  407. package/dist/integrations/providers/postmark.d.ts.map +1 -0
  408. package/dist/integrations/providers/postmark.js +2 -1
  409. package/dist/integrations/providers/postmark.js.map +1 -0
  410. package/dist/integrations/providers/powens.d.ts +2 -1
  411. package/dist/integrations/providers/powens.d.ts.map +1 -0
  412. package/dist/integrations/providers/powens.js +2 -1
  413. package/dist/integrations/providers/powens.js.map +1 -0
  414. package/dist/integrations/providers/qdrant.d.ts +2 -1
  415. package/dist/integrations/providers/qdrant.d.ts.map +1 -0
  416. package/dist/integrations/providers/qdrant.js +2 -1
  417. package/dist/integrations/providers/qdrant.js.map +1 -0
  418. package/dist/integrations/providers/registry.d.ts +2 -1
  419. package/dist/integrations/providers/registry.d.ts.map +1 -0
  420. package/dist/integrations/providers/registry.js +2 -1
  421. package/dist/integrations/providers/registry.js.map +1 -0
  422. package/dist/integrations/providers/sms.d.ts +2 -1
  423. package/dist/integrations/providers/sms.d.ts.map +1 -0
  424. package/dist/integrations/providers/storage.d.ts +2 -1
  425. package/dist/integrations/providers/storage.d.ts.map +1 -0
  426. package/dist/integrations/providers/stripe.d.ts +2 -1
  427. package/dist/integrations/providers/stripe.d.ts.map +1 -0
  428. package/dist/integrations/providers/stripe.js +2 -1
  429. package/dist/integrations/providers/stripe.js.map +1 -0
  430. package/dist/integrations/providers/twilio-sms.d.ts +2 -1
  431. package/dist/integrations/providers/twilio-sms.d.ts.map +1 -0
  432. package/dist/integrations/providers/twilio-sms.js +2 -1
  433. package/dist/integrations/providers/twilio-sms.js.map +1 -0
  434. package/dist/integrations/providers/vector-store.d.ts +2 -1
  435. package/dist/integrations/providers/vector-store.d.ts.map +1 -0
  436. package/dist/integrations/providers/voice.d.ts +2 -1
  437. package/dist/integrations/providers/voice.d.ts.map +1 -0
  438. package/dist/integrations/runtime.d.ts +2 -1
  439. package/dist/integrations/runtime.d.ts.map +1 -0
  440. package/dist/integrations/runtime.js +2 -1
  441. package/dist/integrations/runtime.js.map +1 -0
  442. package/dist/integrations/secrets/aws-secret-manager.d.ts +2 -1
  443. package/dist/integrations/secrets/aws-secret-manager.d.ts.map +1 -0
  444. package/dist/integrations/secrets/aws-secret-manager.js +2 -1
  445. package/dist/integrations/secrets/aws-secret-manager.js.map +1 -0
  446. package/dist/integrations/secrets/env-secret-provider.d.ts +2 -1
  447. package/dist/integrations/secrets/env-secret-provider.d.ts.map +1 -0
  448. package/dist/integrations/secrets/env-secret-provider.js +2 -1
  449. package/dist/integrations/secrets/env-secret-provider.js.map +1 -0
  450. package/dist/integrations/secrets/gcp-secret-manager.d.ts +2 -1
  451. package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +1 -0
  452. package/dist/integrations/secrets/gcp-secret-manager.js +2 -1
  453. package/dist/integrations/secrets/gcp-secret-manager.js.map +1 -0
  454. package/dist/integrations/secrets/manager.d.ts +2 -1
  455. package/dist/integrations/secrets/manager.d.ts.map +1 -0
  456. package/dist/integrations/secrets/manager.js +2 -1
  457. package/dist/integrations/secrets/manager.js.map +1 -0
  458. package/dist/integrations/secrets/provider.d.ts +2 -1
  459. package/dist/integrations/secrets/provider.d.ts.map +1 -0
  460. package/dist/integrations/secrets/provider.js +2 -1
  461. package/dist/integrations/secrets/provider.js.map +1 -0
  462. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +2 -1
  463. package/dist/integrations/secrets/scaleway-secret-manager.d.ts.map +1 -0
  464. package/dist/integrations/secrets/scaleway-secret-manager.js +2 -1
  465. package/dist/integrations/secrets/scaleway-secret-manager.js.map +1 -0
  466. package/dist/integrations/spec.d.ts +2 -1
  467. package/dist/integrations/spec.d.ts.map +1 -0
  468. package/dist/integrations/spec.js +2 -1
  469. package/dist/integrations/spec.js.map +1 -0
  470. package/dist/jobs/define-job.d.ts +2 -1
  471. package/dist/jobs/define-job.d.ts.map +1 -0
  472. package/dist/jobs/define-job.js +2 -1
  473. package/dist/jobs/define-job.js.map +1 -0
  474. package/dist/jobs/gcp-cloud-tasks.d.ts +2 -1
  475. package/dist/jobs/gcp-cloud-tasks.d.ts.map +1 -0
  476. package/dist/jobs/gcp-cloud-tasks.js +2 -1
  477. package/dist/jobs/gcp-cloud-tasks.js.map +1 -0
  478. package/dist/jobs/gcp-pubsub.d.ts +2 -1
  479. package/dist/jobs/gcp-pubsub.d.ts.map +1 -0
  480. package/dist/jobs/gcp-pubsub.js +2 -1
  481. package/dist/jobs/gcp-pubsub.js.map +1 -0
  482. package/dist/jobs/handlers/gmail-sync-handler.d.ts +2 -1
  483. package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +1 -0
  484. package/dist/jobs/handlers/gmail-sync-handler.js +2 -1
  485. package/dist/jobs/handlers/gmail-sync-handler.js.map +1 -0
  486. package/dist/jobs/handlers/index.d.ts +2 -1
  487. package/dist/jobs/handlers/index.d.ts.map +1 -0
  488. package/dist/jobs/handlers/index.js +2 -1
  489. package/dist/jobs/handlers/index.js.map +1 -0
  490. package/dist/jobs/handlers/ping-handler.d.ts +2 -1
  491. package/dist/jobs/handlers/ping-handler.d.ts.map +1 -0
  492. package/dist/jobs/handlers/ping-handler.js +2 -1
  493. package/dist/jobs/handlers/ping-handler.js.map +1 -0
  494. package/dist/jobs/handlers/storage-document-handler.d.ts +2 -1
  495. package/dist/jobs/handlers/storage-document-handler.d.ts.map +1 -0
  496. package/dist/jobs/handlers/storage-document-handler.js +2 -1
  497. package/dist/jobs/handlers/storage-document-handler.js.map +1 -0
  498. package/dist/jobs/memory-queue.d.ts +2 -1
  499. package/dist/jobs/memory-queue.d.ts.map +1 -0
  500. package/dist/jobs/memory-queue.js +2 -1
  501. package/dist/jobs/memory-queue.js.map +1 -0
  502. package/dist/jobs/queue.d.ts +2 -1
  503. package/dist/jobs/queue.d.ts.map +1 -0
  504. package/dist/jobs/queue.js +2 -1
  505. package/dist/jobs/queue.js.map +1 -0
  506. package/dist/jobs/scaleway-sqs-queue.d.ts +2 -1
  507. package/dist/jobs/scaleway-sqs-queue.d.ts.map +1 -0
  508. package/dist/jobs/scaleway-sqs-queue.js +2 -1
  509. package/dist/jobs/scaleway-sqs-queue.js.map +1 -0
  510. package/dist/jsonschema.d.ts +5 -4
  511. package/dist/jsonschema.d.ts.map +1 -0
  512. package/dist/jsonschema.js +2 -1
  513. package/dist/jsonschema.js.map +1 -0
  514. package/dist/knowledge/binding.d.ts +2 -1
  515. package/dist/knowledge/binding.d.ts.map +1 -0
  516. package/dist/knowledge/contracts.d.ts +68 -67
  517. package/dist/knowledge/contracts.d.ts.map +1 -0
  518. package/dist/knowledge/contracts.js +44 -45
  519. package/dist/knowledge/contracts.js.map +1 -0
  520. package/dist/knowledge/docs/knowledge.docblock.d.ts +2 -1
  521. package/dist/knowledge/docs/knowledge.docblock.d.ts.map +1 -0
  522. package/dist/knowledge/docs/knowledge.docblock.js +2 -1
  523. package/dist/knowledge/docs/knowledge.docblock.js.map +1 -0
  524. package/dist/knowledge/ingestion/document-processor.d.ts +2 -1
  525. package/dist/knowledge/ingestion/document-processor.d.ts.map +1 -0
  526. package/dist/knowledge/ingestion/document-processor.js +2 -1
  527. package/dist/knowledge/ingestion/document-processor.js.map +1 -0
  528. package/dist/knowledge/ingestion/embedding-service.d.ts +2 -1
  529. package/dist/knowledge/ingestion/embedding-service.d.ts.map +1 -0
  530. package/dist/knowledge/ingestion/embedding-service.js +2 -1
  531. package/dist/knowledge/ingestion/embedding-service.js.map +1 -0
  532. package/dist/knowledge/ingestion/gmail-adapter.d.ts +2 -1
  533. package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +1 -0
  534. package/dist/knowledge/ingestion/gmail-adapter.js +2 -1
  535. package/dist/knowledge/ingestion/gmail-adapter.js.map +1 -0
  536. package/dist/knowledge/ingestion/storage-adapter.d.ts +2 -1
  537. package/dist/knowledge/ingestion/storage-adapter.d.ts.map +1 -0
  538. package/dist/knowledge/ingestion/storage-adapter.js +2 -1
  539. package/dist/knowledge/ingestion/storage-adapter.js.map +1 -0
  540. package/dist/knowledge/ingestion/vector-indexer.d.ts +2 -1
  541. package/dist/knowledge/ingestion/vector-indexer.d.ts.map +1 -0
  542. package/dist/knowledge/ingestion/vector-indexer.js +2 -1
  543. package/dist/knowledge/ingestion/vector-indexer.js.map +1 -0
  544. package/dist/knowledge/query/service.d.ts +2 -1
  545. package/dist/knowledge/query/service.d.ts.map +1 -0
  546. package/dist/knowledge/query/service.js +2 -1
  547. package/dist/knowledge/query/service.js.map +1 -0
  548. package/dist/knowledge/runtime.d.ts +2 -1
  549. package/dist/knowledge/runtime.d.ts.map +1 -0
  550. package/dist/knowledge/runtime.js +2 -1
  551. package/dist/knowledge/runtime.js.map +1 -0
  552. package/dist/knowledge/source.d.ts +2 -1
  553. package/dist/knowledge/source.d.ts.map +1 -0
  554. package/dist/knowledge/spaces/email-threads.d.ts +2 -1
  555. package/dist/knowledge/spaces/email-threads.d.ts.map +1 -0
  556. package/dist/knowledge/spaces/email-threads.js +2 -1
  557. package/dist/knowledge/spaces/email-threads.js.map +1 -0
  558. package/dist/knowledge/spaces/financial-docs.d.ts +2 -1
  559. package/dist/knowledge/spaces/financial-docs.d.ts.map +1 -0
  560. package/dist/knowledge/spaces/financial-docs.js +2 -1
  561. package/dist/knowledge/spaces/financial-docs.js.map +1 -0
  562. package/dist/knowledge/spaces/financial-overview.d.ts +2 -1
  563. package/dist/knowledge/spaces/financial-overview.d.ts.map +1 -0
  564. package/dist/knowledge/spaces/financial-overview.js +2 -1
  565. package/dist/knowledge/spaces/financial-overview.js.map +1 -0
  566. package/dist/knowledge/spaces/product-canon.d.ts +2 -1
  567. package/dist/knowledge/spaces/product-canon.d.ts.map +1 -0
  568. package/dist/knowledge/spaces/product-canon.js +2 -1
  569. package/dist/knowledge/spaces/product-canon.js.map +1 -0
  570. package/dist/knowledge/spaces/support-faq.d.ts +2 -1
  571. package/dist/knowledge/spaces/support-faq.d.ts.map +1 -0
  572. package/dist/knowledge/spaces/support-faq.js +2 -1
  573. package/dist/knowledge/spaces/support-faq.js.map +1 -0
  574. package/dist/knowledge/spaces/uploaded-docs.d.ts +2 -1
  575. package/dist/knowledge/spaces/uploaded-docs.d.ts.map +1 -0
  576. package/dist/knowledge/spaces/uploaded-docs.js +2 -1
  577. package/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
  578. package/dist/knowledge/spec.d.ts +2 -1
  579. package/dist/knowledge/spec.d.ts.map +1 -0
  580. package/dist/knowledge/spec.js +2 -1
  581. package/dist/knowledge/spec.js.map +1 -0
  582. package/dist/llm/exporters.d.ts +2 -1
  583. package/dist/llm/exporters.d.ts.map +1 -0
  584. package/dist/llm/exporters.js +2 -1
  585. package/dist/llm/exporters.js.map +1 -0
  586. package/dist/llm/prompts.d.ts +2 -1
  587. package/dist/llm/prompts.d.ts.map +1 -0
  588. package/dist/llm/prompts.js +2 -1
  589. package/dist/llm/prompts.js.map +1 -0
  590. package/dist/llm/types.d.ts +2 -1
  591. package/dist/llm/types.d.ts.map +1 -0
  592. package/dist/markdown.d.ts +2 -1
  593. package/dist/markdown.d.ts.map +1 -0
  594. package/dist/markdown.js +2 -1
  595. package/dist/markdown.js.map +1 -0
  596. package/dist/migrations.d.ts +2 -1
  597. package/dist/migrations.d.ts.map +1 -0
  598. package/dist/migrations.js +2 -1
  599. package/dist/migrations.js.map +1 -0
  600. package/dist/onboarding-base.d.ts +31 -30
  601. package/dist/onboarding-base.d.ts.map +1 -0
  602. package/dist/onboarding-base.js +22 -23
  603. package/dist/onboarding-base.js.map +1 -0
  604. package/dist/openapi.d.ts +2 -1
  605. package/dist/openapi.d.ts.map +1 -0
  606. package/dist/openapi.js +2 -1
  607. package/dist/openapi.js.map +1 -0
  608. package/dist/openbanking/docs/openbanking.docblock.d.ts +2 -1
  609. package/dist/openbanking/docs/openbanking.docblock.d.ts.map +1 -0
  610. package/dist/openbanking/docs/openbanking.docblock.js +2 -1
  611. package/dist/openbanking/docs/openbanking.docblock.js.map +1 -0
  612. package/dist/ownership.d.ts +6 -7
  613. package/dist/ownership.d.ts.map +1 -0
  614. package/dist/ownership.js +6 -6
  615. package/dist/ownership.js.map +1 -0
  616. package/dist/policy/docs/policy.docblock.d.ts +2 -1
  617. package/dist/policy/docs/policy.docblock.d.ts.map +1 -0
  618. package/dist/policy/docs/policy.docblock.js +2 -1
  619. package/dist/policy/docs/policy.docblock.js.map +1 -0
  620. package/dist/policy/engine.d.ts +2 -1
  621. package/dist/policy/engine.d.ts.map +1 -0
  622. package/dist/policy/engine.js +2 -1
  623. package/dist/policy/engine.js.map +1 -0
  624. package/dist/policy/opa-adapter.d.ts +2 -1
  625. package/dist/policy/opa-adapter.d.ts.map +1 -0
  626. package/dist/policy/opa-adapter.js +2 -1
  627. package/dist/policy/opa-adapter.js.map +1 -0
  628. package/dist/policy/spec.d.ts +2 -1
  629. package/dist/policy/spec.d.ts.map +1 -0
  630. package/dist/policy/spec.js +2 -1
  631. package/dist/policy/spec.js.map +1 -0
  632. package/dist/presentations/docs/presentations-conventions.docblock.d.ts +2 -1
  633. package/dist/presentations/docs/presentations-conventions.docblock.d.ts.map +1 -0
  634. package/dist/presentations/docs/presentations-conventions.docblock.js +2 -1
  635. package/dist/presentations/docs/presentations-conventions.docblock.js.map +1 -0
  636. package/dist/presentations.backcompat.d.ts +2 -1
  637. package/dist/presentations.backcompat.d.ts.map +1 -0
  638. package/dist/presentations.backcompat.js +2 -1
  639. package/dist/presentations.backcompat.js.map +1 -0
  640. package/dist/presentations.d.ts +5 -4
  641. package/dist/presentations.d.ts.map +1 -0
  642. package/dist/presentations.js +2 -1
  643. package/dist/presentations.js.map +1 -0
  644. package/dist/presentations.v2.d.ts +2 -1
  645. package/dist/presentations.v2.d.ts.map +1 -0
  646. package/dist/presentations.v2.js +2 -1
  647. package/dist/presentations.v2.js.map +1 -0
  648. package/dist/prompt.d.ts +2 -1
  649. package/dist/prompt.d.ts.map +1 -0
  650. package/dist/prompt.js +2 -1
  651. package/dist/prompt.js.map +1 -0
  652. package/dist/promptRegistry.d.ts +2 -1
  653. package/dist/promptRegistry.d.ts.map +1 -0
  654. package/dist/promptRegistry.js +2 -1
  655. package/dist/promptRegistry.js.map +1 -0
  656. package/dist/regenerator/adapters.d.ts +2 -1
  657. package/dist/regenerator/adapters.d.ts.map +1 -0
  658. package/dist/regenerator/docs/regenerator.docblock.d.ts +2 -1
  659. package/dist/regenerator/docs/regenerator.docblock.d.ts.map +1 -0
  660. package/dist/regenerator/docs/regenerator.docblock.js +2 -1
  661. package/dist/regenerator/docs/regenerator.docblock.js.map +1 -0
  662. package/dist/regenerator/executor.d.ts +2 -1
  663. package/dist/regenerator/executor.d.ts.map +1 -0
  664. package/dist/regenerator/executor.js +2 -1
  665. package/dist/regenerator/executor.js.map +1 -0
  666. package/dist/regenerator/service.d.ts +2 -1
  667. package/dist/regenerator/service.d.ts.map +1 -0
  668. package/dist/regenerator/service.js +2 -1
  669. package/dist/regenerator/service.js.map +1 -0
  670. package/dist/regenerator/sinks.d.ts +2 -1
  671. package/dist/regenerator/sinks.d.ts.map +1 -0
  672. package/dist/regenerator/sinks.js +2 -1
  673. package/dist/regenerator/sinks.js.map +1 -0
  674. package/dist/regenerator/types.d.ts +2 -1
  675. package/dist/regenerator/types.d.ts.map +1 -0
  676. package/dist/regenerator/utils.d.ts +2 -1
  677. package/dist/regenerator/utils.d.ts.map +1 -0
  678. package/dist/regenerator/utils.js +2 -1
  679. package/dist/regenerator/utils.js.map +1 -0
  680. package/dist/registry.d.ts +2 -1
  681. package/dist/registry.d.ts.map +1 -0
  682. package/dist/registry.js +2 -1
  683. package/dist/registry.js.map +1 -0
  684. package/dist/resources.d.ts +2 -1
  685. package/dist/resources.d.ts.map +1 -0
  686. package/dist/resources.js +2 -1
  687. package/dist/resources.js.map +1 -0
  688. package/dist/schema/dist/index.js +4684 -6
  689. package/dist/schema/dist/index.js.map +1 -0
  690. package/dist/schema-to-markdown.d.ts +2 -1
  691. package/dist/schema-to-markdown.d.ts.map +1 -0
  692. package/dist/schema-to-markdown.js +2 -1
  693. package/dist/schema-to-markdown.js.map +1 -0
  694. package/dist/server/graphql-pothos.d.ts +2 -1
  695. package/dist/server/graphql-pothos.d.ts.map +1 -0
  696. package/dist/server/graphql-pothos.js +2 -1
  697. package/dist/server/graphql-pothos.js.map +1 -0
  698. package/dist/server/mcp/createMcpServer.d.ts +2 -1
  699. package/dist/server/mcp/createMcpServer.d.ts.map +1 -0
  700. package/dist/server/mcp/createMcpServer.js +2 -1
  701. package/dist/server/mcp/createMcpServer.js.map +1 -0
  702. package/dist/server/mcp/mcpTypes.d.ts +2 -1
  703. package/dist/server/mcp/mcpTypes.d.ts.map +1 -0
  704. package/dist/server/mcp/registerPresentations.d.ts +2 -1
  705. package/dist/server/mcp/registerPresentations.d.ts.map +1 -0
  706. package/dist/server/mcp/registerPresentations.js +2 -1
  707. package/dist/server/mcp/registerPresentations.js.map +1 -0
  708. package/dist/server/mcp/registerPrompts.d.ts +2 -1
  709. package/dist/server/mcp/registerPrompts.d.ts.map +1 -0
  710. package/dist/server/mcp/registerPrompts.js +2 -1
  711. package/dist/server/mcp/registerPrompts.js.map +1 -0
  712. package/dist/server/mcp/registerResources.d.ts +2 -1
  713. package/dist/server/mcp/registerResources.d.ts.map +1 -0
  714. package/dist/server/mcp/registerResources.js +2 -1
  715. package/dist/server/mcp/registerResources.js.map +1 -0
  716. package/dist/server/mcp/registerTools.d.ts +2 -1
  717. package/dist/server/mcp/registerTools.d.ts.map +1 -0
  718. package/dist/server/mcp/registerTools.js +2 -1
  719. package/dist/server/mcp/registerTools.js.map +1 -0
  720. package/dist/server/rest-elysia.d.ts +2 -1
  721. package/dist/server/rest-elysia.d.ts.map +1 -0
  722. package/dist/server/rest-elysia.js +2 -1
  723. package/dist/server/rest-elysia.js.map +1 -0
  724. package/dist/server/rest-express.d.ts +2 -1
  725. package/dist/server/rest-express.d.ts.map +1 -0
  726. package/dist/server/rest-express.js +2 -1
  727. package/dist/server/rest-express.js.map +1 -0
  728. package/dist/server/rest-generic.d.ts +2 -1
  729. package/dist/server/rest-generic.d.ts.map +1 -0
  730. package/dist/server/rest-generic.js +2 -1
  731. package/dist/server/rest-generic.js.map +1 -0
  732. package/dist/server/rest-next-app.d.ts +2 -1
  733. package/dist/server/rest-next-app.d.ts.map +1 -0
  734. package/dist/server/rest-next-app.js +2 -1
  735. package/dist/server/rest-next-app.js.map +1 -0
  736. package/dist/server/rest-next-mcp.d.ts +2 -1
  737. package/dist/server/rest-next-mcp.d.ts.map +1 -0
  738. package/dist/server/rest-next-mcp.js +2 -1
  739. package/dist/server/rest-next-mcp.js.map +1 -0
  740. package/dist/server/rest-next-pages.d.ts +2 -1
  741. package/dist/server/rest-next-pages.d.ts.map +1 -0
  742. package/dist/server/rest-next-pages.js +2 -1
  743. package/dist/server/rest-next-pages.js.map +1 -0
  744. package/dist/spec.d.ts +2 -1
  745. package/dist/spec.d.ts.map +1 -0
  746. package/dist/spec.js +2 -1
  747. package/dist/spec.js.map +1 -0
  748. package/dist/telemetry/anomaly.d.ts +2 -1
  749. package/dist/telemetry/anomaly.d.ts.map +1 -0
  750. package/dist/telemetry/anomaly.js +2 -1
  751. package/dist/telemetry/anomaly.js.map +1 -0
  752. package/dist/telemetry/docs/telemetry.docblock.d.ts +2 -1
  753. package/dist/telemetry/docs/telemetry.docblock.d.ts.map +1 -0
  754. package/dist/telemetry/docs/telemetry.docblock.js +2 -1
  755. package/dist/telemetry/docs/telemetry.docblock.js.map +1 -0
  756. package/dist/telemetry/spec.d.ts +2 -1
  757. package/dist/telemetry/spec.d.ts.map +1 -0
  758. package/dist/telemetry/spec.js +2 -1
  759. package/dist/telemetry/spec.js.map +1 -0
  760. package/dist/telemetry/tracker.d.ts +2 -1
  761. package/dist/telemetry/tracker.d.ts.map +1 -0
  762. package/dist/telemetry/tracker.js +2 -1
  763. package/dist/telemetry/tracker.js.map +1 -0
  764. package/dist/tests/runner.d.ts +2 -1
  765. package/dist/tests/runner.d.ts.map +1 -0
  766. package/dist/tests/runner.js +2 -1
  767. package/dist/tests/runner.js.map +1 -0
  768. package/dist/tests/spec.d.ts +2 -1
  769. package/dist/tests/spec.d.ts.map +1 -0
  770. package/dist/tests/spec.js +2 -1
  771. package/dist/tests/spec.js.map +1 -0
  772. package/dist/themes.d.ts +2 -1
  773. package/dist/themes.d.ts.map +1 -0
  774. package/dist/themes.js +2 -1
  775. package/dist/themes.js.map +1 -0
  776. package/dist/translations/catalog.d.ts +2 -1
  777. package/dist/translations/catalog.d.ts.map +1 -0
  778. package/dist/translations/tenant.d.ts +2 -1
  779. package/dist/translations/tenant.d.ts.map +1 -0
  780. package/dist/types.d.ts +2 -1
  781. package/dist/types.d.ts.map +1 -0
  782. package/dist/workflow/adapters/db-adapter.d.ts +21 -8
  783. package/dist/workflow/adapters/db-adapter.d.ts.map +1 -0
  784. package/dist/workflow/adapters/db-adapter.js +5 -4
  785. package/dist/workflow/adapters/db-adapter.js.map +1 -0
  786. package/dist/workflow/adapters/file-adapter.d.ts +2 -1
  787. package/dist/workflow/adapters/file-adapter.d.ts.map +1 -0
  788. package/dist/workflow/adapters/file-adapter.js +2 -1
  789. package/dist/workflow/adapters/file-adapter.js.map +1 -0
  790. package/dist/workflow/adapters/memory-store.d.ts +2 -1
  791. package/dist/workflow/adapters/memory-store.d.ts.map +1 -0
  792. package/dist/workflow/adapters/memory-store.js +2 -1
  793. package/dist/workflow/adapters/memory-store.js.map +1 -0
  794. package/dist/workflow/expression.d.ts +2 -1
  795. package/dist/workflow/expression.d.ts.map +1 -0
  796. package/dist/workflow/expression.js +2 -1
  797. package/dist/workflow/expression.js.map +1 -0
  798. package/dist/workflow/runner.d.ts +2 -1
  799. package/dist/workflow/runner.d.ts.map +1 -0
  800. package/dist/workflow/runner.js +2 -1
  801. package/dist/workflow/runner.js.map +1 -0
  802. package/dist/workflow/sla-monitor.d.ts +2 -1
  803. package/dist/workflow/sla-monitor.d.ts.map +1 -0
  804. package/dist/workflow/sla-monitor.js +2 -1
  805. package/dist/workflow/sla-monitor.js.map +1 -0
  806. package/dist/workflow/spec.d.ts +2 -1
  807. package/dist/workflow/spec.d.ts.map +1 -0
  808. package/dist/workflow/spec.js +2 -1
  809. package/dist/workflow/spec.js.map +1 -0
  810. package/dist/workflow/state.d.ts +2 -1
  811. package/dist/workflow/state.d.ts.map +1 -0
  812. package/dist/workflow/validation.d.ts +2 -1
  813. package/dist/workflow/validation.d.ts.map +1 -0
  814. package/dist/workflow/validation.js +2 -1
  815. package/dist/workflow/validation.js.map +1 -0
  816. package/package.json +12 -17
  817. package/dist/docs/PUBLISHING.docblock.d.ts +0 -6
  818. package/dist/docs/PUBLISHING.docblock.js +0 -17
  819. package/dist/docs/tech/PHASE_1_QUICKSTART.docblock.d.ts +0 -6
  820. package/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -17
  821. package/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.d.ts +0 -6
  822. package/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -17
  823. package/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.d.ts +0 -6
  824. package/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -17
  825. package/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.d.ts +0 -6
  826. package/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -17
  827. package/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.d.ts +0 -6
  828. package/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -17
  829. package/dist/schema/dist/EnumType.js +0 -2
  830. package/dist/schema/dist/FieldType.js +0 -49
  831. package/dist/schema/dist/ScalarTypeEnum.js +0 -236
  832. package/dist/schema/dist/SchemaModel.js +0 -39
  833. package/dist/schema/dist/entity/defineEntity.js +0 -1
  834. package/dist/schema/dist/entity/index.js +0 -2
  835. package/dist/schema/dist/entity/types.js +0 -1
@@ -211,4 +211,5 @@ function isISODate(str) {
211
211
  }
212
212
 
213
213
  //#endregion
214
- export { schemaToMarkdown, schemaToMarkdownDetail, schemaToMarkdownList, schemaToMarkdownSummary, schemaToMarkdownTable };
214
+ export { schemaToMarkdown, schemaToMarkdownDetail, schemaToMarkdownList, schemaToMarkdownSummary, schemaToMarkdownTable };
215
+ //# sourceMappingURL=schema-to-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-to-markdown.js","names":["lines: string[]","counts: Record<string, number>","current: unknown"],"sources":["../src/schema-to-markdown.ts"],"sourcesContent":["/**\n * Schema-to-Markdown Utilities\n *\n * Generate markdown from SchemaModel definitions and data.\n * Provides automatic table, list, and detail view generation\n * based on schema field introspection.\n */\nimport type { AnySchemaModel, SchemaFieldConfig } from '@lssm/lib.schema';\n\n/**\n * Options for schema-to-markdown generation\n */\nexport interface SchemaMarkdownOptions {\n /** Title for the markdown section */\n title?: string;\n /** Description to include below the title */\n description?: string;\n /** Output format: table for lists, list for simple items, detail for single objects */\n format?: 'table' | 'list' | 'detail' | 'auto';\n /** Maximum number of items to render (for arrays) */\n maxItems?: number;\n /** Only include these fields (if not specified, all fields are included) */\n includeFields?: string[];\n /** Exclude these fields from output */\n excludeFields?: string[];\n /** Custom field labels (field name -> display label) */\n fieldLabels?: Record<string, string>;\n /** Fields to use for summary in list format */\n summaryFields?: string[];\n /** Nesting depth for nested schemas (default: 2) */\n maxDepth?: number;\n}\n\n/**\n * Internal type for field metadata used during rendering\n */\ninterface FieldMeta {\n name: string;\n label: string;\n isOptional: boolean;\n isArray: boolean;\n isNested: boolean;\n}\n\n/**\n * Generate markdown from a SchemaModel and data.\n * Automatically detects array vs object data and formats accordingly.\n */\nexport function schemaToMarkdown(\n schema: AnySchemaModel,\n data: unknown,\n options: SchemaMarkdownOptions = {}\n): string {\n const { format = 'auto', title, description, maxDepth = 2 } = options;\n\n const lines: string[] = [];\n\n // Add title and description\n if (title) {\n lines.push(`# ${title}`, '');\n }\n if (description) {\n lines.push(`> ${description}`, '');\n }\n\n // Determine format based on data type if auto\n const effectiveFormat =\n format === 'auto' ? (Array.isArray(data) ? 'table' : 'detail') : format;\n\n // Generate content based on format\n if (effectiveFormat === 'table' && Array.isArray(data)) {\n lines.push(schemaToMarkdownTable(schema, data, options));\n } else if (effectiveFormat === 'list' && Array.isArray(data)) {\n lines.push(schemaToMarkdownList(schema, data, options));\n } else if (\n !Array.isArray(data) &&\n data !== null &&\n typeof data === 'object'\n ) {\n lines.push(schemaToMarkdownDetail(schema, data, { ...options, maxDepth }));\n } else {\n // Fallback for primitive or null data\n lines.push(`**Data:** ${String(data)}`, '');\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Generate a markdown table from array data using schema fields as columns.\n */\nexport function schemaToMarkdownTable(\n schema: AnySchemaModel,\n items: unknown[],\n options: SchemaMarkdownOptions = {}\n): string {\n const { maxItems = 100, includeFields, excludeFields = [] } = options;\n\n const fields = getFieldMeta(schema, includeFields, excludeFields);\n if (fields.length === 0 || items.length === 0) {\n return '_No data available_\\n';\n }\n\n const limitedItems = items.slice(0, maxItems);\n const lines: string[] = [];\n\n // Table header\n const headers = fields.map((f) => f.label);\n lines.push(`| ${headers.join(' | ')} |`);\n lines.push(`| ${headers.map(() => '---').join(' | ')} |`);\n\n // Table rows\n for (const item of limitedItems) {\n const row = fields.map((f) => formatCellValue(getFieldValue(item, f.name)));\n lines.push(`| ${row.join(' | ')} |`);\n }\n\n // Add truncation notice if needed\n if (items.length > maxItems) {\n lines.push('', `_Showing ${maxItems} of ${items.length} items_`);\n }\n\n lines.push('');\n return lines.join('\\n');\n}\n\n/**\n * Generate a markdown list from array data.\n * Uses summaryFields to create concise list items.\n */\nexport function schemaToMarkdownList(\n schema: AnySchemaModel,\n items: unknown[],\n options: SchemaMarkdownOptions = {}\n): string {\n const {\n maxItems = 50,\n summaryFields,\n includeFields,\n excludeFields = [],\n } = options;\n\n const fields = getFieldMeta(schema, includeFields, excludeFields);\n const displayFields = summaryFields\n ? fields.filter((f) => summaryFields.includes(f.name))\n : fields.slice(0, 3); // Default to first 3 fields\n\n if (displayFields.length === 0 || items.length === 0) {\n return '_No data available_\\n';\n }\n\n const limitedItems = items.slice(0, maxItems);\n const lines: string[] = [];\n\n for (const item of limitedItems) {\n const primaryValue = formatCellValue(\n getFieldValue(item, displayFields[0]?.name ?? 'id')\n );\n const secondaryValues = displayFields\n .slice(1)\n .map((f) => `${f.label}: ${formatCellValue(getFieldValue(item, f.name))}`)\n .join(' · ');\n\n const itemLine = secondaryValues\n ? `- **${primaryValue}** (${secondaryValues})`\n : `- **${primaryValue}**`;\n lines.push(itemLine);\n }\n\n // Add truncation notice if needed\n if (items.length > maxItems) {\n lines.push('', `_Showing ${maxItems} of ${items.length} items_`);\n }\n\n lines.push('');\n return lines.join('\\n');\n}\n\n/**\n * Generate a markdown detail view (key-value pairs) from object data.\n */\nexport function schemaToMarkdownDetail(\n schema: AnySchemaModel,\n item: unknown,\n options: SchemaMarkdownOptions = {}\n): string {\n const { includeFields, excludeFields = [], maxDepth = 2 } = options;\n\n if (item === null || typeof item !== 'object') {\n return '_No data available_\\n';\n }\n\n const fields = getFieldMeta(schema, includeFields, excludeFields);\n if (fields.length === 0) {\n return '_No fields to display_\\n';\n }\n\n const lines: string[] = [];\n\n for (const field of fields) {\n const value = getFieldValue(item, field.name);\n const formattedValue = formatDetailValue(value, maxDepth, 0);\n lines.push(`**${field.label}:** ${formattedValue}`);\n }\n\n lines.push('');\n return lines.join('\\n');\n}\n\n/**\n * Generate markdown summary statistics for numeric fields in array data.\n */\nexport function schemaToMarkdownSummary(\n schema: AnySchemaModel,\n items: unknown[],\n options: { numericFields?: string[]; countByField?: string } = {}\n): string {\n const { numericFields = [], countByField } = options;\n const lines: string[] = [];\n\n lines.push(`**Total Items:** ${items.length}`);\n\n // Numeric field summaries\n for (const fieldName of numericFields) {\n const values = items\n .map((item) => getFieldValue(item, fieldName))\n .filter((v): v is number => typeof v === 'number');\n\n if (values.length > 0) {\n const sum = values.reduce((a, b) => a + b, 0);\n const avg = sum / values.length;\n const min = Math.min(...values);\n const max = Math.max(...values);\n\n lines.push(\n `**${formatFieldName(fieldName)}:** Sum: ${formatNumber(sum)}, Avg: ${formatNumber(avg)}, Min: ${formatNumber(min)}, Max: ${formatNumber(max)}`\n );\n }\n }\n\n // Count by field\n if (countByField) {\n const counts: Record<string, number> = {};\n for (const item of items) {\n const value = String(getFieldValue(item, countByField) ?? 'Unknown');\n counts[value] = (counts[value] ?? 0) + 1;\n }\n\n lines.push('', `**By ${formatFieldName(countByField)}:**`);\n for (const [value, count] of Object.entries(counts)) {\n lines.push(`- ${value}: ${count}`);\n }\n }\n\n lines.push('');\n return lines.join('\\n');\n}\n\n// ============ Helper Functions ============\n\n/**\n * Get field metadata from schema, applying include/exclude filters\n */\nfunction getFieldMeta(\n schema: AnySchemaModel,\n includeFields?: string[],\n excludeFields: string[] = []\n): FieldMeta[] {\n const schemaFields = schema.config.fields;\n const fieldNames = Object.keys(schemaFields);\n\n const filteredFields = fieldNames.filter((name) => {\n if (excludeFields.includes(name)) return false;\n if (includeFields && !includeFields.includes(name)) return false;\n return true;\n });\n\n return filteredFields.map((name) => {\n const fieldConfig = schemaFields[name] as SchemaFieldConfig | undefined;\n const isNested = Boolean(\n fieldConfig?.type &&\n typeof fieldConfig.type === 'object' &&\n 'config' in fieldConfig.type &&\n typeof (fieldConfig.type as { config?: { fields?: unknown } }).config\n ?.fields === 'object'\n );\n return {\n name,\n label: formatFieldName(name),\n isOptional: fieldConfig?.isOptional ?? false,\n isArray: fieldConfig?.isArray === true,\n isNested,\n };\n });\n}\n\n/**\n * Get value from object by field name (supports nested paths)\n */\nfunction getFieldValue(item: unknown, fieldName: string): unknown {\n if (item === null || typeof item !== 'object') return undefined;\n const obj = item as Record<string, unknown>;\n\n // Support dot notation for nested fields\n if (fieldName.includes('.')) {\n const parts = fieldName.split('.');\n let current: unknown = obj;\n for (const part of parts) {\n if (current === null || typeof current !== 'object') return undefined;\n current = (current as Record<string, unknown>)[part];\n }\n return current;\n }\n\n return obj[fieldName];\n}\n\n/**\n * Format a value for table cell display\n */\nfunction formatCellValue(value: unknown): string {\n if (value === null || value === undefined) return '-';\n if (typeof value === 'boolean') return value ? '✓' : '✗';\n if (typeof value === 'number') return formatNumber(value);\n if (value instanceof Date) return formatDate(value);\n if (typeof value === 'string' && isISODate(value))\n return formatDate(new Date(value));\n if (Array.isArray(value)) return `[${value.length} items]`;\n if (typeof value === 'object') return '[Object]';\n\n const str = String(value);\n // Truncate long strings and escape pipe characters for tables\n return str.length > 50 ? `${str.slice(0, 47)}...` : str.replace(/\\|/g, '\\\\|');\n}\n\n/**\n * Format a value for detail view (allows more space)\n */\nfunction formatDetailValue(\n value: unknown,\n maxDepth: number,\n currentDepth: number\n): string {\n if (value === null || value === undefined) return '_none_';\n if (typeof value === 'boolean') return value ? 'Yes' : 'No';\n if (typeof value === 'number') return formatNumber(value);\n if (value instanceof Date) return formatDate(value);\n if (typeof value === 'string' && isISODate(value))\n return formatDate(new Date(value));\n\n if (Array.isArray(value)) {\n if (value.length === 0) return '_empty list_';\n if (currentDepth >= maxDepth) return `[${value.length} items]`;\n\n // For short arrays of primitives, inline them\n if (value.length <= 5 && value.every((v) => typeof v !== 'object')) {\n return value.map((v) => formatCellValue(v)).join(', ');\n }\n return `[${value.length} items]`;\n }\n\n if (typeof value === 'object') {\n if (currentDepth >= maxDepth) return '[Object]';\n // For simple objects, show key count\n const keys = Object.keys(value);\n return `{${keys.length} fields}`;\n }\n\n return String(value);\n}\n\n/**\n * Format field name to human-readable label\n */\nfunction formatFieldName(name: string): string {\n return (\n name\n // Split on camelCase\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // Split on underscores\n .replace(/_/g, ' ')\n // Capitalize first letter\n .replace(/^\\w/, (c) => c.toUpperCase())\n );\n}\n\n/**\n * Format number with locale-aware formatting\n */\nfunction formatNumber(value: number): string {\n // For currency-like values (large numbers), use formatting\n if (Math.abs(value) >= 1000) {\n return new Intl.NumberFormat('en-US', {\n maximumFractionDigits: 2,\n }).format(value);\n }\n // For small numbers, show more precision\n if (Number.isInteger(value)) {\n return String(value);\n }\n return value.toFixed(2);\n}\n\n/**\n * Format date to readable string\n */\nfunction formatDate(date: Date): string {\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n}\n\n/**\n * Check if string is ISO date format\n */\nfunction isISODate(str: string): boolean {\n if (!/^\\d{4}-\\d{2}-\\d{2}/.test(str)) return false;\n const date = new Date(str);\n return !isNaN(date.getTime());\n}\n"],"mappings":"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"}
@@ -28,4 +28,5 @@ import { SchemaTypes } from "@pothos/core";
28
28
  */
29
29
  declare function registerContractsOnBuilder<T extends SchemaTypes>(builder: PothosSchemaTypes.SchemaBuilder<T>, reg: SpecRegistry, resources?: ResourceRegistry): void;
30
30
  //#endregion
31
- export { registerContractsOnBuilder };
31
+ export { registerContractsOnBuilder };
32
+ //# sourceMappingURL=graphql-pothos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-pothos.d.ts","names":[],"sources":["../../src/server/graphql-pothos.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAuCA;;;;;;;;;;;;;;;iBAAgB,qCAAqC,sBAC1C,iBAAA,CAAkB,cAAc,SACpC,0BACO"}
@@ -125,4 +125,5 @@ function registerContractsOnBuilder(builder, reg, resources) {
125
125
  }
126
126
 
127
127
  //#endregion
128
- export { registerContractsOnBuilder };
128
+ export { registerContractsOnBuilder };
129
+ //# sourceMappingURL=graphql-pothos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-pothos.js","names":["acc: Record<string, any>","handlerCtx: HandlerCtx","result: unknown","fieldSettingsFn: QueryFieldThunk<T> | MutationFieldThunk<T>"],"sources":["../../src/server/graphql-pothos.ts"],"sourcesContent":["import type {\n MutationFieldThunk,\n QueryFieldThunk,\n SchemaTypes,\n} from '@pothos/core';\nimport type { HandlerCtx } from '../types';\nimport { defaultGqlField } from '../jsonschema';\nimport type { SpecRegistry } from '../registry';\nimport '@pothos/plugin-prisma';\nimport '@pothos/plugin-complexity';\nimport '@pothos/plugin-relay';\nimport '@pothos/plugin-dataloader';\nimport '@pothos/plugin-tracing';\nimport type { AnySchemaModel } from '@lssm/lib.schema';\nimport type { ResourceRefDescriptor, ResourceRegistry } from '../resources';\nimport { createInputTypeBuilder } from '../contracts-adapter-input';\nimport type { AnyContractSpec } from '../spec';\nimport {\n hydrateResourceIfNeeded,\n parseReturns,\n} from '../contracts-adapter-hydration';\n\n/**\n * Registers all ContractSpecs from a SpecRegistry onto a Pothos SchemaBuilder.\n *\n * This adapter:\n * 1. Discovers output types from specs and registers them as Pothos object types.\n * 2. Maps `ContractSpec` inputs to Pothos input types.\n * 3. Mounts `query` specs as `Query` fields and `command` specs as `Mutation` fields.\n * 4. Wraps the resolver to:\n * - Enforce auth policies (basic check).\n * - Build a `HandlerCtx`.\n * - Execute via `SpecRegistry`.\n * - Hydrate resource references if applicable.\n *\n * @param builder - The Pothos SchemaBuilder instance.\n * @param reg - The SpecRegistry containing operations.\n * @param resources - (Optional) ResourceRegistry for hydrating resource references.\n */\nexport function registerContractsOnBuilder<T extends SchemaTypes>(\n builder: PothosSchemaTypes.SchemaBuilder<T>,\n reg: SpecRegistry,\n resources?: ResourceRegistry\n) {\n const { buildInputFieldArgs } = createInputTypeBuilder(builder);\n\n // Build a map of output types we need to register\n const outputTypeCache = new Map<string, AnySchemaModel>();\n for (const spec of reg.listSpecs()) {\n const out = spec.io.output as\n | AnySchemaModel\n | ResourceRefDescriptor<boolean>;\n if (out && 'getZod' in out && typeof out.getZod === 'function') {\n const model = out as AnySchemaModel;\n const typeName = model.config?.name ?? 'UnknownOutput';\n if (!outputTypeCache.has(typeName)) {\n outputTypeCache.set(typeName, model);\n }\n }\n }\n\n // Register all output types as GraphQL object types\n for (const [typeName, model] of outputTypeCache.entries()) {\n builder.objectType(typeName as any, {\n fields: (t) => {\n const entries = Object.entries(model.config.fields) as [\n string,\n {\n type: any;\n isOptional: boolean;\n isArray?: boolean;\n },\n ][];\n const acc: Record<string, any> = {};\n for (const [key, field] of entries) {\n const fieldType = field.type;\n let gqlType = 'JSON';\n\n // Check if it's a known scalar type\n if (fieldType && typeof fieldType.getPothos === 'function') {\n const pothosInfo = fieldType.getPothos();\n gqlType = pothosInfo.name || 'JSON';\n // Map unsecure types to their secure equivalents\n if (gqlType === 'String_unsecure') gqlType = 'String';\n if (gqlType === 'Int_unsecure') gqlType = 'Int';\n if (gqlType === 'Float_unsecure') gqlType = 'Float';\n if (gqlType === 'Boolean_unsecure') gqlType = 'Boolean';\n if (gqlType === 'ID_unsecure') gqlType = 'ID';\n }\n\n const typeRef = field.isArray\n ? ([gqlType] as never)\n : (gqlType as never);\n acc[key] = t.field({\n type: typeRef,\n nullable: field.isOptional,\n resolve: (parent: any) => parent[key],\n });\n }\n return acc as never;\n },\n });\n }\n\n // For outputs, prefer an explicit GraphQL type name; otherwise use SchemaModel name or resource ref\n function resolveGraphQLTypeName(contractSpec: AnyContractSpec): string {\n const returnsName = contractSpec.transport?.gql?.returns;\n if (returnsName) return returnsName;\n\n const out = contractSpec.io.output ?? {};\n\n // Check if it's a resource ref\n if (\n out &&\n 'kind' in out &&\n out.kind === 'resource_ref' &&\n 'graphQLType' in out &&\n out.graphQLType\n )\n return String(out.graphQLType);\n\n // Check if it's a SchemaModel with a name\n if (out && 'getZod' in out && typeof out.getZod === 'function') {\n const model = out as AnySchemaModel;\n const typeName = model.config?.name;\n if (typeName && outputTypeCache.has(typeName)) {\n return typeName;\n }\n }\n\n return 'JSON';\n }\n\n // parseReturns moved to hydration util\n\n for (const spec of reg.listSpecs()) {\n const fieldName =\n spec.transport?.gql?.field ??\n defaultGqlField(spec.meta.name, spec.meta.version);\n const returnsName = spec.transport?.gql?.returns;\n const byIdField =\n (spec.transport as unknown as { gql?: { byIdField?: string } })?.gql\n ?.byIdField ?? 'id';\n const returnsResource = (\n spec.transport as unknown as { gql?: { resource?: string } }\n )?.gql?.resource;\n const isQuery = spec.meta.kind === 'query';\n\n const graphQLTypeName = resolveGraphQLTypeName(spec);\n const returnsDecl = (\n spec.transport as unknown as { gql?: { returns?: string } }\n )?.gql?.returns;\n const parsed = parseReturns(returnsDecl ?? graphQLTypeName);\n\n const resolveFieldFn = async (_root: any, args: any, ctx: any) => {\n if (spec.policy.auth !== 'anonymous' && !ctx.user)\n throw new Error('Unauthorized');\n const handlerCtx: HandlerCtx = {\n traceId: ctx.logger?.getTraceId?.() ?? undefined,\n userId: ctx.user?.id ?? null,\n organizationId: ctx.session?.activeOrganizationId ?? null,\n actor: ctx.user ? 'user' : 'anonymous',\n channel: 'web',\n eventPublisher: ctx.eventPublisher,\n };\n const parsedInput = spec.io.input?.getZod().parse(args.input ?? {});\n const result: unknown = await reg.execute(\n spec.meta.name,\n spec.meta.version,\n parsedInput,\n handlerCtx\n );\n const out = spec.io.output as unknown;\n if (\n resources &&\n (returnsResource || (out as { kind?: string })?.kind === 'resource_ref')\n ) {\n const varName =\n byIdField ?? (out as { varName?: string })?.varName ?? 'id';\n const template =\n returnsResource ?? (out as { uriTemplate?: string })?.uriTemplate;\n const hydrated = await hydrateResourceIfNeeded(resources, result, {\n template,\n varName,\n returns: parsed,\n });\n if (hydrated !== result) return hydrated as never;\n }\n if (graphQLTypeName) {\n if (parsed.inner === 'Boolean' && !parsed.isList)\n return Boolean((result as { ok?: boolean })?.ok ?? result) as never;\n // fallback to direct\n return result as unknown as never;\n }\n const parsedOut: unknown = (spec.io.output as AnySchemaModel)\n .getZod()\n .parse(result);\n return parsedOut as never;\n };\n\n const fieldSettingsFn: QueryFieldThunk<T> | MutationFieldThunk<T> = (\n t: PothosSchemaTypes.MutationFieldBuilder<T, T['Root']>\n ) => {\n const inputType = buildInputFieldArgs(spec.io.input);\n return t.field({\n type: (parsed.isList ? [parsed.inner] : parsed.inner) as any,\n complexity: () => 10,\n resolve: resolveFieldFn as any,\n args: inputType\n ? {\n input: t.arg({\n type: inputType,\n required: true,\n }),\n }\n : undefined,\n });\n };\n\n if (isQuery) {\n builder.queryField(\n fieldName,\n fieldSettingsFn as never as QueryFieldThunk<T>\n );\n } else {\n builder.mutationField(\n fieldName,\n fieldSettingsFn as MutationFieldThunk<T>\n );\n }\n }\n}\n"],"mappings":"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"}
@@ -12,4 +12,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
12
12
  * ContractSpec exposes:\n+ * - Tools: `command` operations from `SpecRegistry`.\n+ * - Resources: templates from `ResourceRegistry`.\n+ * - Prompts: templates from `PromptRegistry`.\n+ * - Presentations: V1 registry and/or V2 descriptors as read-only resources.\n+ */
13
13
  declare function createMcpServer(server: McpServer, ops: SpecRegistry, resources: ResourceRegistry, prompts: PromptRegistry, ctxFactories: McpCtxFactories): McpServer;
14
14
  //#endregion
15
- export { createMcpServer };
15
+ export { createMcpServer };
16
+ //# sourceMappingURL=createMcpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMcpServer.d.ts","names":[],"sources":["../../../src/server/mcp/createMcpServer.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAcA;;AAEO,iBAFS,eAAA,CAET,MAAA,EADG,SACH,EAAA,GAAA,EAAA,YAAA,EAAA,SAAA,EACM,gBADN,EAAA,OAAA,EAEI,cAFJ,EAAA,YAAA,EAGS,eAHT,CAAA,EAGwB,SAHxB"}
@@ -25,4 +25,5 @@ function createMcpServer(server, ops, resources, prompts, ctxFactories) {
25
25
  }
26
26
 
27
27
  //#endregion
28
- export { createMcpServer };
28
+ export { createMcpServer };
29
+ //# sourceMappingURL=createMcpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMcpServer.js","names":[],"sources":["../../../src/server/mcp/createMcpServer.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { SpecRegistry } from '../../registry';\nimport type { ResourceRegistry } from '../../resources';\nimport type { PromptRegistry } from '../../promptRegistry';\nimport type { McpCtxFactories } from './mcpTypes';\nimport { registerMcpTools } from './registerTools';\nimport { registerMcpResources } from './registerResources';\nimport { registerMcpPrompts } from './registerPrompts';\nimport { registerMcpPresentations } from './registerPresentations';\n\n/**\n * Creates a unified Model Context Protocol (MCP) server exposing operations, resources, prompts,\n * and (optionally) presentations.\\n+ *\n * ContractSpec exposes:\\n+ * - Tools: `command` operations from `SpecRegistry`.\\n+ * - Resources: templates from `ResourceRegistry`.\\n+ * - Prompts: templates from `PromptRegistry`.\\n+ * - Presentations: V1 registry and/or V2 descriptors as read-only resources.\\n+ */\nexport function createMcpServer(\n server: McpServer,\n ops: SpecRegistry,\n resources: ResourceRegistry,\n prompts: PromptRegistry,\n ctxFactories: McpCtxFactories\n) {\n ctxFactories.logger.info('Creating MCP server');\n\n registerMcpTools(server, ops, { toolCtx: ctxFactories.toolCtx });\n registerMcpResources(server, resources, {\n logger: ctxFactories.logger,\n resourceCtx: ctxFactories.resourceCtx,\n });\n registerMcpPresentations(server, {\n logger: ctxFactories.logger,\n presentations: ctxFactories.presentations,\n presentationsV2: ctxFactories.presentationsV2,\n });\n registerMcpPrompts(server, prompts, { promptCtx: ctxFactories.promptCtx });\n\n return server;\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAgB,gBACd,QACA,KACA,WACA,SACA,cACA;AACA,cAAa,OAAO,KAAK,sBAAsB;AAE/C,kBAAiB,QAAQ,KAAK,EAAE,SAAS,aAAa,SAAS,CAAC;AAChE,sBAAqB,QAAQ,WAAW;EACtC,QAAQ,aAAa;EACrB,aAAa,aAAa;EAC3B,CAAC;AACF,0BAAyB,QAAQ;EAC/B,QAAQ,aAAa;EACrB,eAAe,aAAa;EAC5B,iBAAiB,aAAa;EAC/B,CAAC;AACF,oBAAmB,QAAQ,SAAS,EAAE,WAAW,aAAa,WAAW,CAAC;AAE1E,QAAO"}
@@ -26,4 +26,5 @@ interface McpCtxFactories {
26
26
  presentationsV2?: PresentationDescriptorV2[];
27
27
  }
28
28
  //#endregion
29
- export { McpCtxFactories };
29
+ export { McpCtxFactories };
30
+ //# sourceMappingURL=mcpTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpTypes.d.ts","names":[],"sources":["../../../src/server/mcp/mcpTypes.ts"],"sourcesContent":[],"mappings":";;;;;;UAKiB,eAAA;UACP;EADO;EACP,OAAA,EAAA,GAAA,GAGO,UAHP;EAGO;EAiBC,SAAA,EAAA,GAAA,GAAA;IAEE,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAAwB,KAAA,CAAA,EAAA,MAAA,GAAA,IAAA;;;;;;;;;;kBAF1B;;oBAEE"}
@@ -4,4 +4,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  //#region src/server/mcp/registerPresentations.d.ts
5
5
  declare function registerMcpPresentations(server: McpServer, ctx: Pick<McpCtxFactories, 'logger' | 'presentations' | 'presentationsV2'>): void;
6
6
  //#endregion
7
- export { registerMcpPresentations };
7
+ export { registerMcpPresentations };
8
+ //# sourceMappingURL=registerPresentations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerPresentations.d.ts","names":[],"sources":["../../../src/server/mcp/registerPresentations.ts"],"sourcesContent":[],"mappings":";;;;iBAiBgB,wBAAA,SACN,gBACH,KAAK"}
@@ -148,4 +148,5 @@ function registerMcpPresentations(server, ctx) {
148
148
  }
149
149
 
150
150
  //#endregion
151
- export { registerMcpPresentations };
151
+ export { registerMcpPresentations };
152
+ //# sourceMappingURL=registerPresentations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerPresentations.js","names":[],"sources":["../../../src/server/mcp/registerPresentations.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpCtxFactories } from './mcpTypes';\nimport { jsonSchemaForPresentation } from '../../presentations';\nimport {\n createDefaultTransformEngine,\n registerBasicValidation,\n registerDefaultReactRenderer,\n type PresentationDescriptorV2,\n} from '../../presentations.v2';\n\nfunction isEngineRenderOutput(\n x: unknown\n): x is { mimeType?: string; body: string } {\n if (!x || typeof x !== 'object') return false;\n return 'body' in x && typeof (x as { body?: unknown }).body === 'string';\n}\n\nexport function registerMcpPresentations(\n server: McpServer,\n ctx: Pick<McpCtxFactories, 'logger' | 'presentations' | 'presentationsV2'>\n) {\n /* ---------- Presentations as resources (markdown/data) with content negotiation ---------- */\n const __presentations = ctx.presentations;\n const __presentationsV2 = ctx.presentationsV2;\n\n if (__presentations) {\n for (const p of __presentations.list()) {\n const baseKey = `presentation.${p.meta.name.replace(/\\./g, '_')}.v${p.meta.version}`;\n const baseUri = `presentation://${p.meta.name}/v${p.meta.version}`;\n\n server.registerResource(\n baseKey,\n baseUri,\n {\n title: `${p.meta.name} v${p.meta.version}`,\n description: p.meta.description ?? 'Presentation',\n },\n async () => {\n if (p.content.kind === 'markdown') {\n const text = p.content.content\n ? p.content.content\n : `See resource: ${p.content.resourceUri ?? ''}`;\n return {\n contents: [{ uri: baseUri, mimeType: 'text/markdown', text }],\n };\n }\n if (p.content.kind === 'data') {\n const schema = jsonSchemaForPresentation(p);\n return {\n contents: [\n {\n uri: baseUri,\n mimeType: 'application/json',\n text: JSON.stringify(schema, null, 2),\n },\n ],\n };\n }\n // web_component: metadata only for now\n const metaOnly = {\n name: p.meta.name,\n version: p.meta.version,\n kind: p.content.kind,\n description: p.meta.description ?? '',\n };\n return {\n contents: [\n {\n uri: baseUri,\n mimeType: 'application/json',\n text: JSON.stringify(metaOnly, null, 2),\n },\n ],\n };\n }\n );\n\n const variants: {\n ext: string;\n target: 'markdown' | 'application/json' | 'application/xml';\n }[] = [\n { ext: '.md', target: 'markdown' },\n { ext: '.json', target: 'application/json' },\n { ext: '.xml', target: 'application/xml' },\n ];\n\n for (const v of variants) {\n const key = `${baseKey}${v.ext}`;\n const uri = `${baseUri}${v.ext}`;\n\n ctx.logger.info(`Registering presentation resource ${uri} for ${key}`);\n\n server.registerResource(\n key,\n uri,\n {\n title: `${p.meta.name} v${p.meta.version} (${v.ext})`,\n description: `${p.meta.description ?? 'Presentation'} (${v.ext})`,\n },\n async () => {\n if (p.content.kind === 'markdown' && v.target === 'markdown') {\n const text =\n p.content.content ??\n `See resource: ${p.content.resourceUri ?? ''}`;\n return { contents: [{ uri, mimeType: 'text/markdown', text }] };\n }\n\n if (p.content.kind === 'data' && v.target === 'application/json') {\n return {\n contents: [\n {\n uri,\n mimeType: 'application/json',\n text: JSON.stringify(jsonSchemaForPresentation(p), null, 2),\n },\n ],\n };\n }\n\n const jsonText = JSON.stringify(\n { meta: p.meta, content: p.content },\n null,\n 2\n );\n\n if (v.target === 'application/json') {\n return {\n contents: [\n { uri, mimeType: 'application/json', text: jsonText },\n ],\n };\n }\n\n if (v.target === 'application/xml') {\n const xml = `<presentation name=\"${p.meta.name}\" version=\"${p.meta.version}\"><json>${encodeURIComponent(\n jsonText\n )}</json></presentation>`;\n return {\n contents: [{ uri, mimeType: 'application/xml', text: xml }],\n };\n }\n\n return {\n contents: [\n {\n uri,\n mimeType: 'text/markdown',\n text: 'Unsupported presentation for markdown',\n },\n ],\n };\n }\n );\n }\n }\n }\n\n /* ---------- V2 presentations as resources (markdown/json/xml) ---------- */\n if (__presentationsV2 && __presentationsV2.length) {\n const engine = registerBasicValidation(\n registerDefaultReactRenderer(createDefaultTransformEngine())\n );\n\n for (const d of __presentationsV2) {\n const baseKey = `presentation.${d.meta.name.replace(/\\./g, '_')}.v${d.meta.version}`;\n const baseUri = `presentation://${d.meta.name}/v${d.meta.version}`;\n\n ctx.logger.info(\n `Registering presentation descriptor ${baseUri} for ${baseKey}`\n );\n\n server.registerResource(\n baseKey,\n baseUri,\n {\n title: `${d.meta.name} v${d.meta.version}`,\n description: d.meta.description ?? 'Presentation',\n mimeType: 'application/json',\n },\n async () => {\n const jsonText = JSON.stringify(\n { meta: d.meta, source: d.source, targets: d.targets },\n null,\n 2\n );\n return {\n contents: [\n {\n uri: baseUri,\n mimeType: 'application/json',\n text: jsonText,\n },\n ],\n };\n }\n );\n\n const variants: {\n ext: string;\n target: 'markdown' | 'application/json' | 'application/xml';\n }[] = [\n { ext: '.md', target: 'markdown' },\n { ext: '.json', target: 'application/json' },\n { ext: '.xml', target: 'application/xml' },\n ];\n\n for (const v of variants) {\n const key = `${baseKey}${v.ext}`;\n const uri = `${baseUri}${v.ext}`;\n\n server.registerResource(\n key,\n uri,\n {\n title: `${d.meta.name} v${d.meta.version} (${v.ext})`,\n description: `${d.meta.description ?? 'Presentation'} (${v.ext})`,\n },\n async () => {\n const out = await engine.render(v.target, d);\n const mimeType =\n isEngineRenderOutput(out) && out.mimeType\n ? out.mimeType\n : v.target === 'markdown'\n ? 'text/markdown'\n : v.target;\n const text =\n isEngineRenderOutput(out) && typeof out.body === 'string'\n ? out.body\n : String(out);\n return { contents: [{ uri, mimeType, text }] };\n }\n );\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -5,4 +5,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
5
  //#region src/server/mcp/registerPrompts.d.ts
6
6
  declare function registerMcpPrompts(server: McpServer, prompts: PromptRegistry, ctx: Pick<McpCtxFactories, 'promptCtx'>): void;
7
7
  //#endregion
8
- export { registerMcpPrompts };
8
+ export { registerMcpPrompts };
9
+ //# sourceMappingURL=registerPrompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerPrompts.d.ts","names":[],"sources":["../../../src/server/mcp/registerPrompts.ts"],"sourcesContent":[],"mappings":";;;;;iBAegB,kBAAA,SACN,oBACC,qBACJ,KAAK"}
@@ -34,4 +34,5 @@ function registerMcpPrompts(server, prompts, ctx) {
34
34
  }
35
35
 
36
36
  //#endregion
37
- export { registerMcpPrompts };
37
+ export { registerMcpPrompts };
38
+ //# sourceMappingURL=registerPrompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerPrompts.js","names":["shape: Record<string, z.ZodType>"],"sources":["../../../src/server/mcp/registerPrompts.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { PromptRegistry } from '../../promptRegistry';\nimport type { McpCtxFactories } from './mcpTypes';\nimport type { GetPromptResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { ZodRawShapeCompat } from '@modelcontextprotocol/sdk/server/zod-compat.js';\nimport z from 'zod';\n\nfunction promptArgsSchemaFromPromptArgs(\n args: { name: string; schema: z.ZodType }[]\n): ZodRawShapeCompat {\n const shape: Record<string, z.ZodType> = {};\n for (const a of args) shape[a.name] = a.schema;\n return shape as unknown as ZodRawShapeCompat;\n}\n\nexport function registerMcpPrompts(\n server: McpServer,\n prompts: PromptRegistry,\n ctx: Pick<McpCtxFactories, 'promptCtx'>\n) {\n for (const prompt of prompts.list()) {\n server.registerPrompt(\n prompt.meta.name,\n {\n title: prompt.meta.title,\n description: prompt.meta.description,\n // MCP SDK expects a \"raw shape\" of zod schemas (Record<string, ZodSchema>)\n // rather than JSON Schema.\n argsSchema: promptArgsSchemaFromPromptArgs(prompt.args),\n },\n async (args: unknown): Promise<GetPromptResult> => {\n const link = (tpl: string, vars: Record<string, string | number>) => {\n let out = tpl;\n for (const [k, v] of Object.entries(vars))\n out = out.replace(\n new RegExp(`\\\\{${k}\\\\}`, 'g'),\n encodeURIComponent(String(v))\n );\n return out;\n };\n\n const parts = await prompt.render(prompt.input.parse(args), {\n ...ctx.promptCtx(),\n link,\n });\n\n // MCP SDK types represent message content as a single content block.\n // We keep a single assistant message and concatenate all parts as text.\n const text = parts\n .map((p) =>\n p.type === 'text'\n ? p.text\n : `See resource: ${p.title ?? p.uri}\\nURI: ${p.uri}`\n )\n .join('\\n\\n');\n const contents: GetPromptResult['messages'][number]['content'] = {\n type: 'text',\n text,\n };\n\n return {\n messages: [{ role: 'assistant', content: contents }],\n description: prompt.meta.description,\n };\n }\n );\n }\n}\n"],"mappings":";;;AAOA,SAAS,+BACP,MACmB;CACnB,MAAMA,QAAmC,EAAE;AAC3C,MAAK,MAAM,KAAK,KAAM,OAAM,EAAE,QAAQ,EAAE;AACxC,QAAO;;AAGT,SAAgB,mBACd,QACA,SACA,KACA;AACA,MAAK,MAAM,UAAU,QAAQ,MAAM,CACjC,QAAO,eACL,OAAO,KAAK,MACZ;EACE,OAAO,OAAO,KAAK;EACnB,aAAa,OAAO,KAAK;EAGzB,YAAY,+BAA+B,OAAO,KAAK;EACxD,EACD,OAAO,SAA4C;EACjD,MAAM,QAAQ,KAAa,SAA0C;GACnE,IAAI,MAAM;AACV,QAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,KAAK,CACvC,OAAM,IAAI,QACR,IAAI,OAAO,MAAM,EAAE,MAAM,IAAI,EAC7B,mBAAmB,OAAO,EAAE,CAAC,CAC9B;AACH,UAAO;;AAsBT,SAAO;GACL,UAAU,CAAC;IAAE,MAAM;IAAa,SAN+B;KAC/D,MAAM;KACN,OAhBY,MAAM,OAAO,OAAO,OAAO,MAAM,MAAM,KAAK,EAAE;MAC1D,GAAG,IAAI,WAAW;MAClB;MACD,CAAC,EAKC,KAAK,MACJ,EAAE,SAAS,SACP,EAAE,OACF,iBAAiB,EAAE,SAAS,EAAE,IAAI,SAAS,EAAE,MAClD,CACA,KAAK,OAAO;KAId;IAGoD,CAAC;GACpD,aAAa,OAAO,KAAK;GAC1B;GAEJ"}
@@ -5,4 +5,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
5
  //#region src/server/mcp/registerResources.d.ts
6
6
  declare function registerMcpResources(server: McpServer, resources: ResourceRegistry, ctx: Pick<McpCtxFactories, 'logger' | 'resourceCtx'>): void;
7
7
  //#endregion
8
- export { registerMcpResources };
8
+ export { registerMcpResources };
9
+ //# sourceMappingURL=registerResources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerResources.d.ts","names":[],"sources":["../../../src/server/mcp/registerResources.ts"],"sourcesContent":[],"mappings":";;;;;iBAsBgB,oBAAA,SACN,sBACG,uBACN,KAAK"}
@@ -32,4 +32,5 @@ function registerMcpResources(server, resources, ctx) {
32
32
  }
33
33
 
34
34
  //#endregion
35
- export { registerMcpResources };
35
+ export { registerMcpResources };
36
+ //# sourceMappingURL=registerResources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerResources.js","names":[],"sources":["../../../src/server/mcp/registerResources.ts"],"sourcesContent":["import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ResourceRegistry } from '../../resources';\nimport type { McpCtxFactories } from './mcpTypes';\nimport { Buffer } from 'node:buffer';\n\nfunction mcpResourceMeta(resource: {\n meta: {\n title: string;\n description?: string;\n mimeType: string;\n tags?: string[];\n };\n}) {\n return {\n title: resource.meta.title,\n description: resource.meta.description,\n mimeType: resource.meta.mimeType,\n _meta: { tags: resource.meta.tags ?? [] },\n };\n}\n\nexport function registerMcpResources(\n server: McpServer,\n resources: ResourceRegistry,\n ctx: Pick<McpCtxFactories, 'logger' | 'resourceCtx'>\n) {\n for (const resource of resources.listTemplates()) {\n ctx.logger.info('Registering resource: ' + resource.meta.uriTemplate);\n\n server.registerResource(\n // IMPORTANT: must be unique across templates; use full uriTemplate (not just scheme).\n resource.meta.uriTemplate,\n new ResourceTemplate(resource.meta.uriTemplate, { list: undefined }),\n mcpResourceMeta(resource),\n async (_uri, variables) => {\n const parsedArgs = resource.input.parse(variables);\n const out = await resource.resolve(parsedArgs, ctx.resourceCtx());\n\n if (typeof out.data === 'string') {\n return {\n contents: [\n {\n uri: out.uri,\n mimeType: out.mimeType ?? resource.meta.mimeType,\n text: out.data,\n },\n ],\n };\n }\n\n return {\n contents: [\n {\n uri: out.uri,\n mimeType: out.mimeType ?? resource.meta.mimeType,\n blob: Buffer.from(out.data).toString('base64'),\n },\n ],\n };\n }\n );\n\n ctx.logger.info('Registered resource: ' + resource.meta.uriTemplate);\n }\n}\n"],"mappings":";;;;AAMA,SAAS,gBAAgB,UAOtB;AACD,QAAO;EACL,OAAO,SAAS,KAAK;EACrB,aAAa,SAAS,KAAK;EAC3B,UAAU,SAAS,KAAK;EACxB,OAAO,EAAE,MAAM,SAAS,KAAK,QAAQ,EAAE,EAAE;EAC1C;;AAGH,SAAgB,qBACd,QACA,WACA,KACA;AACA,MAAK,MAAM,YAAY,UAAU,eAAe,EAAE;AAChD,MAAI,OAAO,KAAK,2BAA2B,SAAS,KAAK,YAAY;AAErE,SAAO,iBAEL,SAAS,KAAK,aACd,IAAI,iBAAiB,SAAS,KAAK,aAAa,EAAE,MAAM,QAAW,CAAC,EACpE,gBAAgB,SAAS,EACzB,OAAO,MAAM,cAAc;GACzB,MAAM,aAAa,SAAS,MAAM,MAAM,UAAU;GAClD,MAAM,MAAM,MAAM,SAAS,QAAQ,YAAY,IAAI,aAAa,CAAC;AAEjE,OAAI,OAAO,IAAI,SAAS,SACtB,QAAO,EACL,UAAU,CACR;IACE,KAAK,IAAI;IACT,UAAU,IAAI,YAAY,SAAS,KAAK;IACxC,MAAM,IAAI;IACX,CACF,EACF;AAGH,UAAO,EACL,UAAU,CACR;IACE,KAAK,IAAI;IACT,UAAU,IAAI,YAAY,SAAS,KAAK;IACxC,MAAM,OAAO,KAAK,IAAI,KAAK,CAAC,SAAS,SAAS;IAC/C,CACF,EACF;IAEJ;AAED,MAAI,OAAO,KAAK,0BAA0B,SAAS,KAAK,YAAY"}
@@ -5,4 +5,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
5
  //#region src/server/mcp/registerTools.d.ts
6
6
  declare function registerMcpTools(server: McpServer, ops: SpecRegistry, ctx: Pick<McpCtxFactories, 'toolCtx'>): void;
7
7
  //#endregion
8
- export { registerMcpTools };
8
+ export { registerMcpTools };
9
+ //# sourceMappingURL=registerTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerTools.d.ts","names":[],"sources":["../../../src/server/mcp/registerTools.ts"],"sourcesContent":[],"mappings":";;;;;iBAMgB,gBAAA,SACN,gBACH,mBACA,KAAK"}
@@ -19,4 +19,5 @@ function registerMcpTools(server, ops, ctx) {
19
19
  }
20
20
 
21
21
  //#endregion
22
- export { registerMcpTools };
22
+ export { registerMcpTools };
23
+ //# sourceMappingURL=registerTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerTools.js","names":[],"sources":["../../../src/server/mcp/registerTools.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { SpecRegistry } from '../../registry';\nimport { defaultMcpTool } from '../../jsonschema';\nimport type { McpCtxFactories } from './mcpTypes';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nexport function registerMcpTools(\n server: McpServer,\n ops: SpecRegistry,\n ctx: Pick<McpCtxFactories, 'toolCtx'>\n) {\n for (const spec of ops.listSpecs()) {\n if (spec.meta.kind !== 'command') continue; // expose only commands as tools\n\n const toolName =\n spec.transport?.mcp?.toolName ??\n defaultMcpTool(spec.meta.name, spec.meta.version);\n\n server.registerTool(\n toolName,\n {\n description: spec.meta.description,\n inputSchema: spec.io.input?.getZod(),\n },\n async (args: unknown): Promise<CallToolResult> => {\n const result = await ops.execute(\n spec.meta.name,\n spec.meta.version,\n args ?? {},\n ctx.toolCtx()\n );\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 4) }],\n };\n }\n );\n }\n}\n"],"mappings":";;;AAMA,SAAgB,iBACd,QACA,KACA,KACA;AACA,MAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;AAClC,MAAI,KAAK,KAAK,SAAS,UAAW;EAElC,MAAM,WACJ,KAAK,WAAW,KAAK,YACrB,eAAe,KAAK,KAAK,MAAM,KAAK,KAAK,QAAQ;AAEnD,SAAO,aACL,UACA;GACE,aAAa,KAAK,KAAK;GACvB,aAAa,KAAK,GAAG,OAAO,QAAQ;GACrC,EACD,OAAO,SAA2C;GAChD,MAAM,SAAS,MAAM,IAAI,QACvB,KAAK,KAAK,MACV,KAAK,KAAK,SACV,QAAQ,EAAE,EACV,IAAI,SAAS,CACd;AACD,UAAO,EACL,SAAS,CAAC;IAAE,MAAM;IAAQ,MAAM,KAAK,UAAU,QAAQ,MAAM,EAAE;IAAE,CAAC,EACnE;IAEJ"}
@@ -37,4 +37,5 @@ declare function elysiaPlugin(app: Elysia, reg: SpecRegistry, ctxFactory: (c: {
37
37
  response: {};
38
38
  }>;
39
39
  //#endregion
40
- export { elysiaPlugin };
40
+ export { elysiaPlugin };
41
+ //# sourceMappingURL=rest-elysia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-elysia.d.ts","names":[],"sources":["../../src/server/rest-elysia.ts"],"sourcesContent":[],"mappings":";;;;;;;iBAMgB,YAAA,MACT,aACA;EAFS,OAAA,EAGa,OAHD;EACrB,KAAA,EAAA,GAAA;CACA,EAAA,GACgD,UADhD,EAAA,OAAA,CAAA,EAEK,WAFL,CAAA,EAEgB,MAFhB,CAAA,EAAA,EAAA;EACsB,SAAA,EAAA,CAAA,CAAA;EAA0B,KAAA,EAAA,CAAA,CAAA;EAC3C,MAAA,EAAA,CAAA,CAAA;EAAW,OAAA,EAAA,CAAA,CAAA;CAAA,EAAA"}
@@ -17,4 +17,5 @@ function elysiaPlugin(app, reg, ctxFactory, options) {
17
17
  }
18
18
 
19
19
  //#endregion
20
- export { elysiaPlugin };
20
+ export { elysiaPlugin };
21
+ //# sourceMappingURL=rest-elysia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-elysia.js","names":[],"sources":["../../src/server/rest-elysia.ts"],"sourcesContent":["import type { Elysia } from 'elysia';\nimport { createFetchHandler, type RestOptions } from './rest-generic';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\n/** Mount routes on an Elysia instance */\nexport function elysiaPlugin(\n app: Elysia,\n reg: SpecRegistry,\n ctxFactory: (c: { request: Request; store: any }) => HandlerCtx,\n options?: RestOptions\n) {\n const handler = createFetchHandler(\n reg,\n (req) => ctxFactory({ request: req, store: (app as any).store }),\n options\n );\n\n for (const spec of reg.listSpecs()) {\n const method =\n spec.transport?.rest?.method ??\n (spec.meta.kind === 'query' ? 'GET' : 'POST');\n const path =\n (options?.basePath ?? '') +\n (spec.transport?.rest?.path ??\n `/${spec.meta.name.replace(/\\./g, '/')}/v${spec.meta.version}`);\n app[method.toLowerCase() as 'get' | 'post'](path, ({ request }: any) =>\n handler(request)\n );\n }\n\n if (options?.cors) {\n app.options('*', ({ request }: any) => handler(request));\n }\n\n return app;\n}\n"],"mappings":";;;;AAMA,SAAgB,aACd,KACA,KACA,YACA,SACA;CACA,MAAM,UAAU,mBACd,MACC,QAAQ,WAAW;EAAE,SAAS;EAAK,OAAQ,IAAY;EAAO,CAAC,EAChE,QACD;AAED,MAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;EAClC,MAAM,SACJ,KAAK,WAAW,MAAM,WACrB,KAAK,KAAK,SAAS,UAAU,QAAQ;EACxC,MAAM,QACH,SAAS,YAAY,OACrB,KAAK,WAAW,MAAM,QACrB,IAAI,KAAK,KAAK,KAAK,QAAQ,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK;AACzD,MAAI,OAAO,aAAa,EAAoB,OAAO,EAAE,cACnD,QAAQ,QAAQ,CACjB;;AAGH,KAAI,SAAS,KACX,KAAI,QAAQ,MAAM,EAAE,cAAmB,QAAQ,QAAQ,CAAC;AAG1D,QAAO"}
@@ -13,4 +13,5 @@ declare function expressRouter(express: {
13
13
  Router: () => Router;
14
14
  }, reg: SpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): Router;
15
15
  //#endregion
16
- export { expressRouter };
16
+ export { expressRouter };
17
+ //# sourceMappingURL=rest-express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-express.d.ts","names":[],"sources":["../../src/server/rest-express.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAaA;;AAEO,iBAFS,aAAA,CAET,OAAA,EAAA;EACa,MAAA,EAAA,GAAA,GAFO,MAEP;CAAe,EAAA,GAAA,EAD5B,YAC4B,EAAA,UAAA,EAAA,CAAA,GAAA,EAAf,OAAe,EAAA,GAAA,UAAA,EAAA,OAAA,CAAA,EACvB,WADuB,CAAA,EAEhC,MAFgC"}
@@ -36,4 +36,5 @@ function expressRouter(express, reg, ctxFactory, options) {
36
36
  }
37
37
 
38
38
  //#endregion
39
- export { expressRouter };
39
+ export { expressRouter };
40
+ //# sourceMappingURL=rest-express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-express.js","names":[],"sources":["../../src/server/rest-express.ts"],"sourcesContent":["import type {\n Request as ExpressReq,\n Response as ExpressRes,\n Router,\n} from 'express';\nimport { createFetchHandler, type RestOptions } from './rest-generic';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\n/**\n * Build an Express Router that proxies to the Fetch-style handler.\n * You can mount it at any base path; pass the same basePath in options.\n */\nexport function expressRouter(\n express: { Router: () => Router },\n reg: SpecRegistry,\n ctxFactory: (req: ExpressReq) => HandlerCtx,\n options?: RestOptions\n): Router {\n const router = express.Router();\n const fetchHandler = createFetchHandler(\n reg,\n (_r) => {\n // Convert Fetch Request headers -> Express req is provided below\n // We pass the Express req directly via closure\n throw new Error('ctxFactory must be called from route'); // placeholder\n },\n options\n );\n\n // For each spec, create a concrete route so Express can match quickly\n for (const spec of reg.listSpecs()) {\n const method =\n spec.transport?.rest?.method ??\n (spec.meta.kind === 'query' ? 'GET' : 'POST');\n const path =\n (options?.basePath ?? '') +\n (spec.transport?.rest?.path ??\n `/${spec.meta.name.replace(/\\./g, '/')}/v${spec.meta.version}`);\n\n router[method.toLowerCase() as 'get' | 'post'](\n path,\n async (req: ExpressReq, res: ExpressRes) => {\n const url = new URL(\n `${req.protocol}://${req.get('host')}${req.originalUrl}`\n );\n const request = new Request(url.toString(), {\n method,\n headers: Object.fromEntries(\n Object.entries(req.headers).map(([k, v]) => [k, String(v)])\n ),\n body: method === 'POST' ? JSON.stringify(req.body ?? {}) : undefined,\n });\n\n const handler = createFetchHandler(reg, () => ctxFactory(req), options);\n const response = await handler(request);\n\n res.status(response.status);\n response.headers.forEach((v, k) => res.setHeader(k, v));\n const text = await response.text();\n res.send(text);\n }\n );\n }\n\n // Generic OPTIONS for CORS (if enabled)\n if (options?.cors) {\n router.options('*', (_req, res) => {\n const h = new Headers();\n const resp = new Response(null, { status: 204 });\n resp.headers.forEach((v, k) => h.set(k, v));\n res.status(204).send();\n });\n }\n\n return router;\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,cACd,SACA,KACA,YACA,SACQ;CACR,MAAM,SAAS,QAAQ,QAAQ;AACV,oBACnB,MACC,OAAO;AAGN,QAAM,IAAI,MAAM,uCAAuC;IAEzD,QACD;AAGD,MAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;EAClC,MAAM,SACJ,KAAK,WAAW,MAAM,WACrB,KAAK,KAAK,SAAS,UAAU,QAAQ;EACxC,MAAM,QACH,SAAS,YAAY,OACrB,KAAK,WAAW,MAAM,QACrB,IAAI,KAAK,KAAK,KAAK,QAAQ,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK;AAEzD,SAAO,OAAO,aAAa,EACzB,MACA,OAAO,KAAiB,QAAoB;GAC1C,MAAM,MAAM,IAAI,IACd,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,GAAG,IAAI,cAC5C;GACD,MAAM,UAAU,IAAI,QAAQ,IAAI,UAAU,EAAE;IAC1C;IACA,SAAS,OAAO,YACd,OAAO,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAC5D;IACD,MAAM,WAAW,SAAS,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC,GAAG;IAC5D,CAAC;GAGF,MAAM,WAAW,MADD,mBAAmB,WAAW,WAAW,IAAI,EAAE,QAAQ,CACxC,QAAQ;AAEvC,OAAI,OAAO,SAAS,OAAO;AAC3B,YAAS,QAAQ,SAAS,GAAG,MAAM,IAAI,UAAU,GAAG,EAAE,CAAC;GACvD,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,OAAI,KAAK,KAAK;IAEjB;;AAIH,KAAI,SAAS,KACX,QAAO,QAAQ,MAAM,MAAM,QAAQ;EACjC,MAAM,IAAI,IAAI,SAAS;AAEvB,EADa,IAAI,SAAS,MAAM,EAAE,QAAQ,KAAK,CAAC,CAC3C,QAAQ,SAAS,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;AAC3C,MAAI,OAAO,IAAI,CAAC,MAAM;GACtB;AAGJ,QAAO"}
@@ -29,4 +29,5 @@ interface RestOptions {
29
29
  */
30
30
  declare function createFetchHandler(reg: SpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): (req: Request) => Promise<Response>;
31
31
  //#endregion
32
- export { RestOptions, createFetchHandler };
32
+ export { RestOptions, createFetchHandler };
33
+ //# sourceMappingURL=rest-generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-generic.d.ts","names":[],"sources":["../../src/server/rest-generic.ts"],"sourcesContent":[],"mappings":";;;;UAIiB,WAAA;;EAAA,QAAA,CAAA,EAAA,MAAW;EAsDZ;EACT,IAAA,CAAA,EAAA,OAAA,GAAA;IACa,MAAA,CAAA,EAAA,MAAA,GAAA,GAAA;IAAY,OAAA,CAAA,EAAA,MAAA,EAAA;IACpB,OAAA,CAAA,EAAA,MAAA,EAAA;IAiDwB,WAAA,CAAA,EAAA,OAAA;IAAkB,MAAA,CAAA,EAAA,MAAA;EAAR,CAAA;EAAO;;;;;;;;;;;;;;iBApDrC,kBAAA,MACT,gCACa,YAAY,sBACpB,oBAiDwB,YAAU,QAAQ"}
@@ -122,4 +122,5 @@ function createFetchHandler(reg, ctxFactory, options) {
122
122
  }
123
123
 
124
124
  //#endregion
125
- export { createFetchHandler };
125
+ export { createFetchHandler };
126
+ //# sourceMappingURL=rest-generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-generic.js","names":["h: Record<string, string>","opts: Required<Omit<RestOptions, 'onError'>> &\n Pick<RestOptions, 'onError'>","routes: Route[]","base: HeadersInit","headers: HeadersInit","input: any","obj: Record<string, any>","err: any","headers"],"sources":["../../src/server/rest-generic.ts"],"sourcesContent":["import { defaultRestPath } from '../jsonschema';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\nexport interface RestOptions {\n /** Prefix all routes, e.g. \"/api\" */\n basePath?: string;\n /** If true, handle OPTIONS and set CORS headers */\n cors?:\n | boolean\n | {\n origin?: string | '*';\n methods?: string[];\n headers?: string[];\n credentials?: boolean;\n maxAge?: number;\n };\n /** JSON spacing in responses (dev only ideally) */\n prettyJson?: number | false;\n /** Map thrown errors to {status, body} */\n onError?: (err: unknown) => { status: number; body: any };\n}\n\n/** Minimal WHATWG Response polyfill util for Node < 18 (if needed) */\n// export const toResponse = (status: number, data: any, headers?: HeadersInit) =>\n// new Response(JSON.stringify(data), { status, headers: { \"content-type\": \"application/json; charset=utf-8\", ...(headers || {}) } });\n\nfunction corsHeaders(opt: NonNullable<RestOptions['cors']>) {\n const h: Record<string, string> = {};\n const origin = typeof opt === 'object' ? (opt.origin ?? '*') : '*';\n h['access-control-allow-origin'] = origin as string;\n h['vary'] = 'Origin';\n if (typeof opt === 'object') {\n if (opt.methods) h['access-control-allow-methods'] = opt.methods.join(', ');\n if (opt.headers) h['access-control-allow-headers'] = opt.headers.join(', ');\n if (opt.credentials) h['access-control-allow-credentials'] = 'true';\n if (typeof opt.maxAge === 'number')\n h['access-control-max-age'] = String(opt.maxAge);\n } else {\n h['access-control-allow-methods'] = 'GET,POST,OPTIONS';\n h['access-control-allow-headers'] =\n 'content-type,x-idempotency-key,x-trace-id';\n }\n return h;\n}\n\nfunction joinPath(a: string | undefined, b: string) {\n const left = (a ?? '').replace(/\\/+$/g, '');\n const right = b.replace(/^\\/+/g, '');\n return `${left}/${right}`.replace(/\\/{2,}/g, '/');\n}\n\n/**\n * Build a single Fetch-style handler: (req) => Response\n * - Discovers routes from SpecRegistry\n * - Validates with zod via registry.execute()\n * - Handles CORS (optional)\n */\nexport function createFetchHandler(\n reg: SpecRegistry,\n ctxFactory: (req: Request) => HandlerCtx,\n options?: RestOptions\n) {\n const opts: Required<Omit<RestOptions, 'onError'>> &\n Pick<RestOptions, 'onError'> = {\n basePath: options?.basePath ?? '',\n cors: options?.cors ?? false,\n prettyJson: options?.prettyJson ?? false,\n onError: options?.onError,\n };\n\n interface Route {\n method: 'GET' | 'POST';\n path: string; // absolute path including basePath\n name: string;\n version: number;\n }\n\n const routes: Route[] = reg.listSpecs().map((spec) => ({\n method: (spec.transport?.rest?.method ??\n (spec.meta.kind === 'query' ? 'GET' : 'POST')) as 'GET' | 'POST',\n path: joinPath(\n opts.basePath,\n spec.transport?.rest?.path ??\n defaultRestPath(spec.meta.name, spec.meta.version)\n ),\n name: spec.meta.name,\n version: spec.meta.version,\n }));\n\n const routeTable = new Map<string, Route>(); // KEY: METHOD + \" \" + PATH\n for (const r of routes) routeTable.set(`${r.method} ${r.path}`, r);\n\n const allowHeader = Array.from(new Set(routes.map((r) => r.method))).join(\n ', '\n );\n\n const makeJson = (status: number, data: any, extraHeaders?: HeadersInit) => {\n const body = opts.prettyJson\n ? JSON.stringify(data, null, opts.prettyJson)\n : JSON.stringify(data);\n const base: HeadersInit = {\n 'content-type': 'application/json; charset=utf-8',\n };\n return new Response(body, {\n status,\n headers: extraHeaders ? { ...base, ...extraHeaders } : base,\n });\n };\n\n return async function handle(req: Request): Promise<Response> {\n const url = new URL(req.url);\n const key = `${req.method.toUpperCase()} ${url.pathname}`;\n\n // CORS preflight\n if (opts.cors && req.method.toUpperCase() === 'OPTIONS') {\n const h = corsHeaders(opts.cors === true ? {} : opts.cors);\n return new Response(null, {\n status: 204,\n headers: { ...h, 'content-length': '0' },\n });\n }\n\n const route = routeTable.get(key);\n if (!route) {\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n return makeJson(404, { error: 'NotFound', path: url.pathname }, headers);\n }\n\n try {\n let input: any = {};\n if (route.method === 'GET') {\n // Support either flattened query (?a=1&b=x) or ?input=<json>\n if (url.searchParams.has('input')) {\n const raw = url.searchParams.get('input')!;\n input = raw ? JSON.parse(raw) : {};\n } else {\n const obj: Record<string, any> = {};\n for (const [k, v] of url.searchParams.entries()) obj[k] = v;\n input = obj;\n }\n } else {\n const contentType = req.headers.get('content-type') || '';\n if (contentType.includes('application/json')) {\n input = await req.json();\n } else if (contentType.includes('application/x-www-form-urlencoded')) {\n const form = (await req.formData()) as never as FormData;\n input = Object.fromEntries(form.entries());\n } else if (!contentType) {\n input = {};\n } else {\n return makeJson(415, { error: 'UnsupportedMediaType', contentType });\n }\n }\n\n const ctx = ctxFactory(req);\n const result = await reg.execute(route.name, route.version, input, ctx);\n\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n return makeJson(200, result, headers);\n } catch (err: any) {\n if (opts.onError) {\n const mapped = opts.onError(err);\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n return makeJson(mapped.status, mapped.body, headers);\n }\n const headers: HeadersInit = {};\n if (opts.cors)\n Object.assign(\n headers,\n corsHeaders(opts.cors === true ? {} : opts.cors)\n );\n // Basic zod hint\n if (err?.issues)\n return makeJson(\n 400,\n { error: 'ValidationError', issues: err.issues },\n headers\n );\n if (\n typeof err?.message === 'string' &&\n err.message.startsWith('PolicyDenied')\n ) {\n return makeJson(403, { error: 'PolicyDenied' }, headers);\n }\n return makeJson(500, { error: 'InternalError' }, headers);\n }\n };\n}\n"],"mappings":"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"}
@@ -32,4 +32,5 @@ import { RestOptions } from "./rest-generic.js";
32
32
  */
33
33
  declare function makeNextAppHandler(reg: SpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): (req: Request) => Promise<Response>;
34
34
  //#endregion
35
- export { makeNextAppHandler };
35
+ export { makeNextAppHandler };
36
+ //# sourceMappingURL=rest-next-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-next-app.d.ts","names":[],"sources":["../../src/server/rest-next-app.ts"],"sourcesContent":[],"mappings":";;;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,kBAAA,MACT,gCACa,YAAY,sBACpB,oBAGgC,YAAO,QAAA"}
@@ -35,4 +35,5 @@ function makeNextAppHandler(reg, ctxFactory, options) {
35
35
  }
36
36
 
37
37
  //#endregion
38
- export { makeNextAppHandler };
38
+ export { makeNextAppHandler };
39
+ //# sourceMappingURL=rest-next-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-next-app.js","names":[],"sources":["../../src/server/rest-next-app.ts"],"sourcesContent":["import { createFetchHandler, type RestOptions } from './rest-generic';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\n/**\n * Creates a Next.js App Router route handler for ContractSpec operations.\n *\n * This function returns a handler suitable for `export const { GET, POST }` in a `route.ts` file.\n * It handles:\n * - Path parsing to determine the operation name and version.\n * - Body parsing (JSON).\n * - Context creation via `ctxFactory`.\n * - Execution via `SpecRegistry`.\n * - Response formatting (JSON success/error).\n *\n * @param reg - The SpecRegistry containing the operations.\n * @param ctxFactory - A factory function to build the `HandlerCtx` (e.g., auth, tenant) from the request.\n * @param options - Optional configuration for the REST handler.\n * @returns A function `(req: Request) => Promise<Response>`.\n *\n * @example\n * ```ts\n * // app/api/[...route]/route.ts\n * import { makeNextAppHandler } from '@lssm/lib.contracts/server/rest-next-app';\n * import { registry } from '@/lib/registry';\n *\n * const handler = makeNextAppHandler(registry, (req) => ({ actor: 'anonymous' }));\n * export { handler as GET, handler as POST };\n * ```\n */\nexport function makeNextAppHandler(\n reg: SpecRegistry,\n ctxFactory: (req: Request) => HandlerCtx,\n options?: RestOptions\n) {\n const handler = createFetchHandler(reg, ctxFactory, options);\n return async function requestHandler(req: Request) {\n return handler(req);\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,mBACd,KACA,YACA,SACA;CACA,MAAM,UAAU,mBAAmB,KAAK,YAAY,QAAQ;AAC5D,QAAO,eAAe,eAAe,KAAc;AACjD,SAAO,QAAQ,IAAI"}
@@ -8,4 +8,5 @@ declare function makeNextMcpServerFromRegistry(reg: SpecRegistry, ctxFactory: ()
8
8
  DELETE: (request: Request) => Promise<Response>;
9
9
  };
10
10
  //#endregion
11
- export { makeNextMcpServerFromRegistry };
11
+ export { makeNextMcpServerFromRegistry };
12
+ //# sourceMappingURL=rest-next-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-next-mcp.d.ts","names":[],"sources":["../../src/server/rest-next-mcp.ts"],"sourcesContent":[],"mappings":";;;;iBAYgB,6BAAA,MACT,gCACa;;EAFJ,IAAA,EAAA,CAAA,OAAA,SAAA,EAAA,UAA6B,SAAA,CAAA;EACtC,MAAA,EAAA,CAAA,OAAA,SAAA,EAAA,UAAA,SAAA,CAAA;CACa"}
@@ -42,4 +42,5 @@ function makeNextMcpServerFromRegistry(reg, ctxFactory) {
42
42
  }
43
43
 
44
44
  //#endregion
45
- export { makeNextMcpServerFromRegistry };
45
+ export { makeNextMcpServerFromRegistry };
46
+ //# sourceMappingURL=rest-next-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-next-mcp.js","names":[],"sources":["../../src/server/rest-next-mcp.ts"],"sourcesContent":["import type { SpecRegistry } from '../registry';\nimport type { AnySchemaModel } from '@lssm/lib.schema';\nimport type { ContractSpec } from '../spec';\nimport type { HandlerCtx } from '../types';\nimport { createMcpHandler } from 'mcp-handler';\nimport type {\n ReadResourceTemplateCallback,\n ToolCallback,\n} from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { defaultMcpTool, jsonSchemaForSpec } from '../jsonschema';\n\nexport function makeNextMcpServerFromRegistry(\n reg: SpecRegistry,\n ctxFactory: () => HandlerCtx\n) {\n const handler = createMcpHandler(\n (server) => {\n for (const spec of reg.listSpecs()) {\n const { input, output, meta } = jsonSchemaForSpec(\n spec as unknown as ContractSpec<AnySchemaModel, AnySchemaModel>\n );\n\n if (meta.kind === 'query') {\n const resourceName =\n spec.transport?.mcp?.toolName ??\n defaultMcpTool(spec.meta.name, spec.meta.version);\n\n (server as any).registerResource(\n resourceName,\n new ResourceTemplate('users://{userId}/profile', {\n list: undefined,\n }),\n {\n // name: resourceName,\n description: spec.meta.description,\n inputSchema: input,\n },\n (async (uri: URL, args, _req) => {\n const result = await reg.execute(\n spec.meta.name,\n spec.meta.version,\n args ?? {},\n ctxFactory()\n );\n // return { content: [{ type: 'json', json: result }] };\n return { contents: [{ uri: uri.href, text: String(result) }] };\n }) as ReadResourceTemplateCallback\n );\n } else if (meta.kind === 'command') {\n const toolName =\n spec.transport?.mcp?.toolName ??\n defaultMcpTool(spec.meta.name, spec.meta.version);\n\n server.registerTool(\n toolName,\n {\n // name: toolName,\n description: spec.meta.description,\n inputSchema: input as any,\n },\n (async (args: any, _req: any) => {\n const result = await reg.execute(\n spec.meta.name,\n spec.meta.version,\n args ?? {},\n ctxFactory()\n );\n // return { content: [{ type: 'json', json: result }] };\n return { content: [{ type: 'text', text: String(result) }] };\n }) as ToolCallback\n );\n } else {\n throw new Error(`Unsupported kind: ${meta.kind}`);\n }\n }\n },\n {},\n { basePath: '/api' }\n );\n\n return { GET: handler, POST: handler, DELETE: handler };\n}\n"],"mappings":";;;;;AAYA,SAAgB,8BACd,KACA,YACA;CACA,MAAM,UAAU,kBACb,WAAW;AACV,OAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;GAClC,MAAM,EAAE,OAAO,QAAQ,SAAS,kBAC9B,KACD;AAED,OAAI,KAAK,SAAS,SAAS;IACzB,MAAM,eACJ,KAAK,WAAW,KAAK,YACrB,eAAe,KAAK,KAAK,MAAM,KAAK,KAAK,QAAQ;AAEnD,IAAC,OAAe,iBACd,cACA,IAAI,iBAAiB,4BAA4B,EAC/C,MAAM,QACP,CAAC,EACF;KAEE,aAAa,KAAK,KAAK;KACvB,aAAa;KACd,GACA,OAAO,KAAU,MAAM,SAAS;KAC/B,MAAM,SAAS,MAAM,IAAI,QACvB,KAAK,KAAK,MACV,KAAK,KAAK,SACV,QAAQ,EAAE,EACV,YAAY,CACb;AAED,YAAO,EAAE,UAAU,CAAC;MAAE,KAAK,IAAI;MAAM,MAAM,OAAO,OAAO;MAAE,CAAC,EAAE;OAEjE;cACQ,KAAK,SAAS,WAAW;IAClC,MAAM,WACJ,KAAK,WAAW,KAAK,YACrB,eAAe,KAAK,KAAK,MAAM,KAAK,KAAK,QAAQ;AAEnD,WAAO,aACL,UACA;KAEE,aAAa,KAAK,KAAK;KACvB,aAAa;KACd,GACA,OAAO,MAAW,SAAc;KAC/B,MAAM,SAAS,MAAM,IAAI,QACvB,KAAK,KAAK,MACV,KAAK,KAAK,SACV,QAAQ,EAAE,EACV,YAAY,CACb;AAED,YAAO,EAAE,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,OAAO,OAAO;MAAE,CAAC,EAAE;OAE/D;SAED,OAAM,IAAI,MAAM,qBAAqB,KAAK,OAAO;;IAIvD,EAAE,EACF,EAAE,UAAU,QAAQ,CACrB;AAED,QAAO;EAAE,KAAK;EAAS,MAAM;EAAS,QAAQ;EAAS"}
@@ -6,4 +6,5 @@ import { NextApiRequest, NextApiResponse } from "next";
6
6
  //#region src/server/rest-next-pages.d.ts
7
7
  declare function makeNextPagesHandler(reg: SpecRegistry, ctxFactory: (req: NextApiRequest) => HandlerCtx, options?: RestOptions): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
8
8
  //#endregion
9
- export { makeNextPagesHandler };
9
+ export { makeNextPagesHandler };
10
+ //# sourceMappingURL=rest-next-pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-next-pages.d.ts","names":[],"sources":["../../src/server/rest-next-pages.ts"],"sourcesContent":[],"mappings":";;;;;;iBAKgB,oBAAA,MACT,gCACa,mBAAmB,sBAC3B,oBAUyB,qBAAqB,oBAAe"}
@@ -22,4 +22,5 @@ function makeNextPagesHandler(reg, ctxFactory, options) {
22
22
  }
23
23
 
24
24
  //#endregion
25
- export { makeNextPagesHandler };
25
+ export { makeNextPagesHandler };
26
+ //# sourceMappingURL=rest-next-pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-next-pages.js","names":[],"sources":["../../src/server/rest-next-pages.ts"],"sourcesContent":["import type { NextApiRequest, NextApiResponse } from 'next';\nimport { createFetchHandler, type RestOptions } from './rest-generic';\nimport type { SpecRegistry } from '../registry';\nimport type { HandlerCtx } from '../types';\n\nexport function makeNextPagesHandler(\n reg: SpecRegistry,\n ctxFactory: (req: NextApiRequest) => HandlerCtx,\n options?: RestOptions\n) {\n const fetchHandler = createFetchHandler(\n reg,\n (_req: Request) => {\n throw new Error('Use per-request wrapper'); // we wrap below\n },\n options\n );\n\n return async function handler(req: NextApiRequest, res: NextApiResponse) {\n const url = `${req.headers['x-forwarded-proto'] ?? 'http'}://${req.headers.host}${req.url}`;\n const method = req.method?.toUpperCase() || 'GET';\n\n const request = new Request(url, {\n method,\n headers: Object.fromEntries(\n Object.entries(req.headers).map(([k, v]) => [k, String(v)])\n ),\n body: method === 'POST' ? JSON.stringify(req.body ?? {}) : undefined,\n });\n\n const perReqHandler = createFetchHandler(\n reg,\n () => ctxFactory(req),\n options\n );\n const response = await perReqHandler(request);\n\n res.status(response.status);\n response.headers.forEach((v, k) => res.setHeader(k, v));\n const text = await response.text();\n res.send(text);\n };\n}\n"],"mappings":";;;AAKA,SAAgB,qBACd,KACA,YACA,SACA;AACqB,oBACnB,MACC,SAAkB;AACjB,QAAM,IAAI,MAAM,0BAA0B;IAE5C,QACD;AAED,QAAO,eAAe,QAAQ,KAAqB,KAAsB;EACvE,MAAM,MAAM,GAAG,IAAI,QAAQ,wBAAwB,OAAO,KAAK,IAAI,QAAQ,OAAO,IAAI;EACtF,MAAM,SAAS,IAAI,QAAQ,aAAa,IAAI;EAE5C,MAAM,UAAU,IAAI,QAAQ,KAAK;GAC/B;GACA,SAAS,OAAO,YACd,OAAO,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAC5D;GACD,MAAM,WAAW,SAAS,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC,GAAG;GAC5D,CAAC;EAOF,MAAM,WAAW,MALK,mBACpB,WACM,WAAW,IAAI,EACrB,QACD,CACoC,QAAQ;AAE7C,MAAI,OAAO,SAAS,OAAO;AAC3B,WAAS,QAAQ,SAAS,GAAG,MAAM,IAAI,UAAU,GAAG,EAAE,CAAC;EACvD,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,MAAI,KAAK,KAAK"}
package/dist/spec.d.ts CHANGED
@@ -192,4 +192,5 @@ declare const defineQuery: <I extends AnySchemaModel, O extends AnySchemaModel |
192
192
  policy: Omit<ContractSpec<I, O, E>["policy"], "idempotent">;
193
193
  }) => ContractSpec<I, O, E>;
194
194
  //#endregion
195
- export { AnyContractSpec, ContractSpec, EmitDecl, EmitDeclInline, EmitDeclRef, ImplementationRef, ImplementationType, OpKind, TelemetryTrigger, defineCommand, defineQuery, isEmitDeclRef };
195
+ export { AnyContractSpec, ContractSpec, EmitDecl, EmitDeclInline, EmitDeclRef, ImplementationRef, ImplementationType, OpKind, TelemetryTrigger, defineCommand, defineQuery, isEmitDeclRef };
196
+ //# sourceMappingURL=spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.d.ts","names":[],"sources":["../src/spec.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAiCA;AAUA;AAKA;AAUY,KA3CA,MAAA,GA2CQ,SAAG,GAAA,OAAA;AACvB;AAEA;AAgBA;AACgB,KA1DJ,kBAAA,GA0DI,SAAA,GAAA,WAAA,GAAA,MAAA,GAAA,MAAA,GAAA,SAAA,GAAA,MAAA,GAAA,OAAA;;;;;AAYN,UAzDO,iBAAA,CAyDP;EAEK;EAEH,IAAA,EAAA,MAAA;EAEF;EAQE,IAAA,EAnEJ,kBAmEI;EAKD;EAEC,WAAA,CAAA,EAAA,MAAA;;AA2BG,UA/FE,WAAA,CA+FF;EAKA,GAAA,EAnGR,SAmGQ,CAnGE,cAmGF,CAAA;EAMH,IAAA,EAAA,MAAA;;AASE,UA9GG,cAAA,CA8GH;EAGJ,IAAA,EAAA,MAAA;EAsCU,OAAA,EAAA,MAAA;EAAiB,IAAA,EAAA,MAAA;EAGzB,OAAA,EAtJD,cAsJgB;;;;;;AASd,KAzJD,QAAA,GAAW,WA2KrB,GA3KmC,cA2KnC;AAjBU,cAzJC,aAyJD,EAAA,CAAA,CAAA,EAzJqB,QAyJrB,EAAA,GAAA,CAAA,IAzJqC,WAyJrC;AACA,UAxJK,gBAAA,CAwJL;EAAiB,KAAA,EAAA;IACR,IAAA,EAAA,MAAA;IAEK,OAAA,CAAA,EAAA,MAAA;EAAG,CAAA;EAAG,UAAA,CAAA,EAAA,CAAA,IAAA,EAAA;IAAnB,KAAA,EAAA,OAAA;IAAL,MAAA,CAAA,EAAA,OAAA;IACoB,KAAA,CAAA,EAAA,OAAA;EAAG,CAAA,EAAA,GAtJvB,MAsJuB,CAAA,MAAA,EAAA,OAAA,CAAA;;;;;;;;;AAGf,UA/IC,YA+ID,CAAA,cA9IA,cA8IA,EAAA,eA7IC,cA6ID,GA7IkB,qBA6IlB,CAAA,OAAA,CAAA,EAAA,eAAA,SA5IU,QA4IV,EAAA,GAAA,SAAA,GAAA,SA3ID,QA2IC,EAAA,GAAA,SAAA,CAAA,CAAA;EAAG,IAAA,EAAA;IAAG;IAAnB,IAAA,EAAA,MAAA;IAAY;IAeF,OAAA,EAAA,MAaX;IAZU;IACA,IAAA,EAnJF,MAmJE;IAAiB;IACR,SAAA,EAlJN,SAkJM;IAEK;IAAG,MAAA,EAlJjB,KAkJiB,EAAA;IAAG;IAAnB,IAAA,EAhJH,GAgJG,EAAA;IAAL;IACoB,WAAA,EAAA,MAAA;IAAG;IAAG,IAAA,EAAA,MAAA;IAAnB;IAAL,OAAA,EAAA,MAAA;IACoB;IAAG,KAAA,CAAA,EA1IrB,KA0IqB;EAAG,CAAA;EAAnB,EAAA,EAAA;IAAL;IAEI,KAAA,EAvIL,KAuIK,GAAA,IAAA;IAAG;IAAG,MAAA,EArIV,MAqIU;IAAnB;IAAY,MAAA,CAAA,EAnIF,MAmIE,CAAA,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;eA1GA;;;;;eAKA;;;;;YAMH;;;;;;;cAQE;cACA;;UAGJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAsCU;;KAGR,eAAA,GAAkB,aAC5B,gBACA,iBAAiB;;;;;cAON,0BACD,0BACA,iBAAiB,mDACR,0CAEb,KAAK,aAAa,GAAG,GAAG;QACtB,KAAK,aAAa,GAAG,GAAG;UACtB,KAAK,aAAa,GAAG,GAAG;MAEjC,aAAa,GAAG,GAAG;;;;;cAeT,wBACD,0BACA,iBAAiB,mDACR,0CAEb,KAAK,aAAa,GAAG,GAAG;QACtB,KAAK,aAAa,GAAG,GAAG;UACtB,KAAK,aAAa,GAAG,GAAG;MAEjC,aAAa,GAAG,GAAG"}
package/dist/spec.js CHANGED
@@ -32,4 +32,5 @@ const defineQuery = (spec) => ({
32
32
  });
33
33
 
34
34
  //#endregion
35
- export { defineCommand, defineQuery, isEmitDeclRef };
35
+ export { defineCommand, defineQuery, isEmitDeclRef };
36
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","names":[],"sources":["../src/spec.ts"],"sourcesContent":["/**\n * ContractSpec: a single source of truth describing one operation (command/query).\n * It carries narrative context for humans/agents AND machine-typed input/output/policy.\n */\nimport type { EventSpec } from './events';\nimport type { AnySchemaModel } from '@lssm/lib.schema';\nimport type { ResourceRefDescriptor } from './resources';\nimport type { Owner, Stability, Tag } from './ownership';\nimport type { DocId } from './docs/registry';\nimport type { PolicyRef } from './policy/spec';\nimport type { TestSpecRef } from './tests/spec';\n\n/**\n * Distinguishes between state-changing operations (command) and read-only operations (query).\n */\nexport type OpKind = 'command' | 'query';\n\n/**\n * Type of implementation artifact.\n */\nexport type ImplementationType =\n | 'handler'\n | 'component'\n | 'form'\n | 'test'\n | 'service'\n | 'hook'\n | 'other';\n\n/**\n * Reference to an implementation file for a spec.\n * Used for explicit implementation mapping.\n */\nexport interface ImplementationRef {\n /** Path to implementation file (relative to workspace root) */\n path: string;\n /** Type of implementation artifact */\n type: ImplementationType;\n /** Optional human-readable description */\n description?: string;\n}\n\n// preferred: reference a declared event\nexport interface EmitDeclRef {\n ref: EventSpec<AnySchemaModel>;\n when: string;\n}\n// inline (fallback)\nexport interface EmitDeclInline {\n name: string;\n version: number;\n when: string;\n payload: AnySchemaModel;\n}\n/**\n * Declaration of an event that an operation may emit.\n * Can be a reference to an `EventSpec` or an inline definition.\n */\nexport type EmitDecl = EmitDeclRef | EmitDeclInline;\nexport const isEmitDeclRef = (e: EmitDecl): e is EmitDeclRef => 'ref' in e;\n\nexport interface TelemetryTrigger {\n event: { name: string; version?: number };\n properties?: (args: {\n input: unknown;\n output?: unknown;\n error?: unknown;\n }) => Record<string, unknown>;\n}\n\n/**\n * The core specification interface for any operation (Command or Query).\n *\n * @template Input - The Zod-backed schema model for the input payload.\n * @template Output - The Zod-backed schema model for the output payload, or a resource reference.\n * @template Events - Tuple of events that this operation may emit.\n */\nexport interface ContractSpec<\n Input extends AnySchemaModel,\n Output extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n Events extends readonly EmitDecl[] | undefined =\n | readonly EmitDecl[]\n | undefined,\n> {\n meta: {\n /** Fully-qualified op name (e.g., \"sigil.beginSignup\") */\n name: string;\n /** Breaking changes => bump version */\n version: number;\n /** \"command\" changes state; \"query\" is read-only/idempotent */\n kind: OpKind;\n /** Lifecycle marker for comms & tooling */\n stability: Stability;\n /** Owners for CODEOWNERS / on-call / approvals */\n owners: Owner[];\n /** Search tags, grouping, docs navigation */\n tags: Tag[];\n /** Short human-friendly summary */\n description: string;\n /** Business goal: why this exists */\n goal: string;\n /** Background, constraints, scope edges (feeds docs & LLM context) */\n context: string;\n /** Optional doc block id for this operation. */\n docId?: DocId;\n };\n\n io: {\n /** Zod schema for input payload */\n input: Input | null;\n /** Zod schema for output payload */\n output: Output;\n /** Named, typed errors this op may throw (optional) */\n errors?: Record<\n string,\n {\n description: string;\n http?: number; // suggested HTTP status if surfaced over REST\n gqlCode?: string; // suggested GraphQL error code\n when: string; // human-readable condition\n }\n >;\n };\n\n policy: {\n /** Minimal auth category allowed to call this op */\n auth: 'anonymous' | 'user' | 'admin';\n /** Idempotency hint. Queries default true; commands default false. */\n idempotent?: boolean;\n /** Soft rate limit suggestion; adapter enforces via limiter */\n rateLimit?: { rpm: number; key: 'user' | 'org' | 'global' };\n /** Feature flags that must be ON for this op to run */\n flags?: string[];\n /** Whether a human must approve before action (e.g., risky commands) */\n escalate?: 'human_review' | null;\n /** JSONPath-like pointers to redact from logs/prompts */\n pii?: string[];\n /** Referenced policy specs governing access */\n policies?: PolicyRef[];\n /** Field-level overrides referencing policy specs */\n fieldPolicies?: {\n field: string;\n actions: ('read' | 'write')[];\n policy?: PolicyRef;\n }[];\n };\n\n sideEffects?: {\n /** Declared events this op may emit; runtime will guard against others */\n emits?: Events;\n /** Analytics intents (names); the service decides the sink */\n analytics?: string[];\n /** Audit intents (labels); the service decides storage */\n audit?: string[];\n };\n\n telemetry?: {\n success?: TelemetryTrigger;\n failure?: TelemetryTrigger;\n };\n\n tests?: TestSpecRef[];\n\n transport?: {\n rest?: {\n /** Override HTTP method (default: POST for commands, GET for queries) */\n method?: 'GET' | 'POST';\n /** Override path (default derived from meta.name/version) */\n path?: string;\n };\n gql?: {\n /** Override field name (default: dots→underscores + _vN) */\n field?: string;\n returns?: string;\n // byIdField?: string;\n // resource?: string;\n };\n mcp?: {\n /** Override tool identifier (default: \"<name>.v<version>\") */\n toolName?: string;\n };\n };\n\n acceptance?: {\n /** Gherkin-lite scenarios for docs & auto tests */\n scenarios?: {\n name: string;\n given: string[];\n when: string[];\n then: string[];\n }[];\n /** Request/response examples (used for docs & snapshot tests) */\n examples?: { name: string; input: unknown; output: unknown }[];\n };\n\n /**\n * Explicit implementation file mappings.\n * Used for tracking and verifying that this spec is correctly implemented.\n */\n implementations?: ImplementationRef[];\n}\n\nexport type AnyContractSpec = ContractSpec<\n AnySchemaModel,\n AnySchemaModel | ResourceRefDescriptor<boolean>\n>;\n\n/**\n * Helper to define a Command (write operation).\n * Sets `kind: 'command'` and defaults `idempotent: false`.\n */\nexport const defineCommand = <\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n E extends readonly EmitDecl[] | undefined = undefined,\n>(\n spec: Omit<ContractSpec<I, O, E>, 'meta' | 'policy'> & {\n meta: Omit<ContractSpec<I, O, E>['meta'], 'kind'>;\n policy: Omit<ContractSpec<I, O, E>['policy'], 'idempotent'>;\n }\n): ContractSpec<I, O, E> => ({\n ...spec,\n meta: { ...spec.meta, kind: 'command' as const },\n policy: {\n ...spec.policy,\n idempotent:\n (spec.policy as never as ContractSpec<never, never, never>)?.['policy']\n ?.idempotent ?? false,\n },\n});\n\n/**\n * Helper to define a Query (read-only operation).\n * Sets `kind: 'query'` and forces `idempotent: true`.\n */\nexport const defineQuery = <\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n E extends readonly EmitDecl[] | undefined = undefined,\n>(\n spec: Omit<ContractSpec<I, O, E>, 'meta' | 'policy'> & {\n meta: Omit<ContractSpec<I, O, E>['meta'], 'kind'>;\n policy: Omit<ContractSpec<I, O, E>['policy'], 'idempotent'>;\n }\n): ContractSpec<I, O, E> => ({\n ...spec,\n meta: { ...spec.meta, kind: 'query' as const },\n policy: { ...spec.policy, idempotent: true },\n});\n"],"mappings":";AA2DA,MAAa,iBAAiB,MAAkC,SAAS;;;;;AAwJzE,MAAa,iBAKX,UAI2B;CAC3B,GAAG;CACH,MAAM;EAAE,GAAG,KAAK;EAAM,MAAM;EAAoB;CAChD,QAAQ;EACN,GAAG,KAAK;EACR,YACG,KAAK,SAAwD,WAC1D,cAAc;EACrB;CACF;;;;;AAMD,MAAa,eAKX,UAI2B;CAC3B,GAAG;CACH,MAAM;EAAE,GAAG,KAAK;EAAM,MAAM;EAAkB;CAC9C,QAAQ;EAAE,GAAG,KAAK;EAAQ,YAAY;EAAM;CAC7C"}
@@ -24,4 +24,5 @@ declare class TelemetryAnomalyMonitor {
24
24
  reset(): void;
25
25
  }
26
26
  //#endregion
27
- export { TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions };
27
+ export { TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions };
28
+ //# sourceMappingURL=anomaly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly.d.ts","names":[],"sources":["../../src/telemetry/anomaly.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,qBAAA;YACL;EADK,SAAA,EAEJ,+BADD;EAOK,MAAA,EAAA,MAAA;EAKJ,KAAA,EAAA,MAAA,GAAA,SAAA;;;UALI,8BAAA;sBACK;cACR;;cAGD,uBAAA;;;;wBAKU;oBAKH"}
@@ -45,4 +45,5 @@ var TelemetryAnomalyMonitor = class {
45
45
  };
46
46
 
47
47
  //#endregion
48
- export { TelemetryAnomalyMonitor };
48
+ export { TelemetryAnomalyMonitor };
49
+ //# sourceMappingURL=anomaly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly.js","names":[],"sources":["../../src/telemetry/anomaly.ts"],"sourcesContent":["import type { TelemetryDispatch } from './tracker';\nimport type { TelemetryAnomalyDetectionConfig } from './spec';\n\nexport interface TelemetryAnomalyEvent {\n dispatch: TelemetryDispatch;\n threshold: TelemetryAnomalyDetectionConfig;\n metric: string;\n value: number | undefined;\n type: 'min' | 'max';\n}\n\nexport interface TelemetryAnomalyMonitorOptions {\n onAnomaly?: (event: TelemetryAnomalyEvent) => void;\n now?: () => Date;\n}\n\nexport class TelemetryAnomalyMonitor {\n private readonly onAnomaly?: (event: TelemetryAnomalyEvent) => void;\n private readonly now: () => Date;\n private readonly samples = new Map<string, number>();\n\n constructor(options: TelemetryAnomalyMonitorOptions = {}) {\n this.onAnomaly = options.onAnomaly;\n this.now = options.now ?? (() => new Date());\n }\n\n observe(dispatch: TelemetryDispatch) {\n const anomalyConfig = dispatch.definition.anomalyDetection;\n if (!anomalyConfig?.enabled) return;\n if (!anomalyConfig.thresholds?.length) return;\n\n const eventKey = `${dispatch.name}.v${dispatch.version}`;\n const count = this.samples.get(eventKey) ?? 0;\n const newCount = count + 1;\n this.samples.set(eventKey, newCount);\n\n if (\n typeof anomalyConfig.minimumSample === 'number' &&\n newCount < anomalyConfig.minimumSample\n ) {\n return;\n }\n\n for (const threshold of anomalyConfig.thresholds) {\n const value = this.extractMetric(dispatch, threshold.metric);\n if (typeof value !== 'number') continue;\n if (typeof threshold.min === 'number' && value < threshold.min) {\n this.emit(dispatch, anomalyConfig, threshold.metric, value, 'min');\n }\n if (typeof threshold.max === 'number' && value > threshold.max) {\n this.emit(dispatch, anomalyConfig, threshold.metric, value, 'max');\n }\n }\n }\n\n private extractMetric(dispatch: TelemetryDispatch, metric: string) {\n const value = dispatch.properties[metric];\n if (typeof value === 'number') return value;\n if (typeof value === 'object' && value !== null && 'value' in value) {\n const maybeNumber = (value as Record<string, unknown>).value;\n return typeof maybeNumber === 'number' ? maybeNumber : undefined;\n }\n return undefined;\n }\n\n private emit(\n dispatch: TelemetryDispatch,\n threshold: TelemetryAnomalyDetectionConfig,\n metric: string,\n value: number,\n type: 'min' | 'max'\n ) {\n this.onAnomaly?.({\n dispatch,\n threshold,\n metric,\n value,\n type,\n });\n }\n\n reset() {\n this.samples.clear();\n }\n}\n"],"mappings":";AAgBA,IAAa,0BAAb,MAAqC;CACnC,AAAiB;CACjB,AAAiB;CACjB,AAAiB,0BAAU,IAAI,KAAqB;CAEpD,YAAY,UAA0C,EAAE,EAAE;AACxD,OAAK,YAAY,QAAQ;AACzB,OAAK,MAAM,QAAQ,8BAAc,IAAI,MAAM;;CAG7C,QAAQ,UAA6B;EACnC,MAAM,gBAAgB,SAAS,WAAW;AAC1C,MAAI,CAAC,eAAe,QAAS;AAC7B,MAAI,CAAC,cAAc,YAAY,OAAQ;EAEvC,MAAM,WAAW,GAAG,SAAS,KAAK,IAAI,SAAS;EAE/C,MAAM,YADQ,KAAK,QAAQ,IAAI,SAAS,IAAI,KACnB;AACzB,OAAK,QAAQ,IAAI,UAAU,SAAS;AAEpC,MACE,OAAO,cAAc,kBAAkB,YACvC,WAAW,cAAc,cAEzB;AAGF,OAAK,MAAM,aAAa,cAAc,YAAY;GAChD,MAAM,QAAQ,KAAK,cAAc,UAAU,UAAU,OAAO;AAC5D,OAAI,OAAO,UAAU,SAAU;AAC/B,OAAI,OAAO,UAAU,QAAQ,YAAY,QAAQ,UAAU,IACzD,MAAK,KAAK,UAAU,eAAe,UAAU,QAAQ,OAAO,MAAM;AAEpE,OAAI,OAAO,UAAU,QAAQ,YAAY,QAAQ,UAAU,IACzD,MAAK,KAAK,UAAU,eAAe,UAAU,QAAQ,OAAO,MAAM;;;CAKxE,AAAQ,cAAc,UAA6B,QAAgB;EACjE,MAAM,QAAQ,SAAS,WAAW;AAClC,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,WAAW,OAAO;GACnE,MAAM,cAAe,MAAkC;AACvD,UAAO,OAAO,gBAAgB,WAAW,cAAc;;;CAK3D,AAAQ,KACN,UACA,WACA,QACA,OACA,MACA;AACA,OAAK,YAAY;GACf;GACA;GACA;GACA;GACA;GACD,CAAC;;CAGJ,QAAQ;AACN,OAAK,QAAQ,OAAO"}
@@ -3,4 +3,5 @@ import { DocBlock } from "@lssm/lib.contracts/docs";
3
3
  //#region src/telemetry/docs/telemetry.docblock.d.ts
4
4
  declare const tech_contracts_telemetry_DocBlocks: DocBlock[];
5
5
  //#endregion
6
- export { tech_contracts_telemetry_DocBlocks };
6
+ export { tech_contracts_telemetry_DocBlocks };
7
+ //# sourceMappingURL=telemetry.docblock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.docblock.d.ts","names":[],"sources":["../../../src/telemetry/docs/telemetry.docblock.ts"],"sourcesContent":[],"mappings":";;;cAGa,oCAAoC"}
@@ -19,4 +19,5 @@ const tech_contracts_telemetry_DocBlocks = [{
19
19
  registerDocBlocks(tech_contracts_telemetry_DocBlocks);
20
20
 
21
21
  //#endregion
22
- export { tech_contracts_telemetry_DocBlocks };
22
+ export { tech_contracts_telemetry_DocBlocks };
23
+ //# sourceMappingURL=telemetry.docblock.js.map