@lssm/lib.contracts 0.0.0-canary-20251120170226

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 (623) hide show
  1. package/README.md +98 -0
  2. package/dist/app-config/branding.d.ts +56 -0
  3. package/dist/app-config/branding.d.ts.map +1 -0
  4. package/dist/app-config/branding.js +0 -0
  5. package/dist/app-config/contracts.d.ts +245 -0
  6. package/dist/app-config/contracts.d.ts.map +1 -0
  7. package/dist/app-config/contracts.js +2 -0
  8. package/dist/app-config/contracts.js.map +1 -0
  9. package/dist/app-config/events.d.ts +123 -0
  10. package/dist/app-config/events.d.ts.map +1 -0
  11. package/dist/app-config/events.js +2 -0
  12. package/dist/app-config/events.js.map +1 -0
  13. package/dist/app-config/index.d.ts +8 -0
  14. package/dist/app-config/index.js +1 -0
  15. package/dist/app-config/lifecycle-contracts.d.ts +383 -0
  16. package/dist/app-config/lifecycle-contracts.d.ts.map +1 -0
  17. package/dist/app-config/lifecycle-contracts.js +2 -0
  18. package/dist/app-config/lifecycle-contracts.js.map +1 -0
  19. package/dist/app-config/lifecycle.d.ts +28 -0
  20. package/dist/app-config/lifecycle.d.ts.map +1 -0
  21. package/dist/app-config/lifecycle.js +0 -0
  22. package/dist/app-config/runtime.d.ts +115 -0
  23. package/dist/app-config/runtime.d.ts.map +1 -0
  24. package/dist/app-config/runtime.js +2 -0
  25. package/dist/app-config/runtime.js.map +1 -0
  26. package/dist/app-config/spec.d.ts +176 -0
  27. package/dist/app-config/spec.d.ts.map +1 -0
  28. package/dist/app-config/spec.js +2 -0
  29. package/dist/app-config/spec.js.map +1 -0
  30. package/dist/app-config/validation.d.ts +48 -0
  31. package/dist/app-config/validation.d.ts.map +1 -0
  32. package/dist/app-config/validation.js +2 -0
  33. package/dist/app-config/validation.js.map +1 -0
  34. package/dist/capabilities/openbanking.d.ts +10 -0
  35. package/dist/capabilities/openbanking.d.ts.map +1 -0
  36. package/dist/capabilities/openbanking.js +2 -0
  37. package/dist/capabilities/openbanking.js.map +1 -0
  38. package/dist/capabilities.d.ts +45 -0
  39. package/dist/capabilities.d.ts.map +1 -0
  40. package/dist/capabilities.js +2 -0
  41. package/dist/capabilities.js.map +1 -0
  42. package/dist/client/index.d.ts +6 -0
  43. package/dist/client/index.js +1 -0
  44. package/dist/client/react/drivers/rn-reusables.d.ts +23 -0
  45. package/dist/client/react/drivers/rn-reusables.d.ts.map +1 -0
  46. package/dist/client/react/drivers/rn-reusables.js +2 -0
  47. package/dist/client/react/drivers/rn-reusables.js.map +1 -0
  48. package/dist/client/react/drivers/shadcn.d.ts +13 -0
  49. package/dist/client/react/drivers/shadcn.d.ts.map +1 -0
  50. package/dist/client/react/drivers/shadcn.js +2 -0
  51. package/dist/client/react/drivers/shadcn.js.map +1 -0
  52. package/dist/client/react/feature-render.d.ts +21 -0
  53. package/dist/client/react/feature-render.d.ts.map +1 -0
  54. package/dist/client/react/feature-render.js +2 -0
  55. package/dist/client/react/feature-render.js.map +1 -0
  56. package/dist/client/react/form-render.d.ts +92 -0
  57. package/dist/client/react/form-render.d.ts.map +1 -0
  58. package/dist/client/react/form-render.js +2 -0
  59. package/dist/client/react/form-render.js.map +1 -0
  60. package/dist/client/react/index.d.ts +5 -0
  61. package/dist/client/react/index.js +1 -0
  62. package/dist/contracts-adapter-hydration.d.ts +16 -0
  63. package/dist/contracts-adapter-hydration.d.ts.map +1 -0
  64. package/dist/contracts-adapter-hydration.js +2 -0
  65. package/dist/contracts-adapter-hydration.js.map +1 -0
  66. package/dist/contracts-adapter-input.d.ts +11 -0
  67. package/dist/contracts-adapter-input.d.ts.map +1 -0
  68. package/dist/contracts-adapter-input.js +2 -0
  69. package/dist/contracts-adapter-input.js.map +1 -0
  70. package/dist/data-views/query-generator.d.ts +40 -0
  71. package/dist/data-views/query-generator.d.ts.map +1 -0
  72. package/dist/data-views/query-generator.js +2 -0
  73. package/dist/data-views/query-generator.js.map +1 -0
  74. package/dist/data-views/runtime.d.ts +27 -0
  75. package/dist/data-views/runtime.d.ts.map +1 -0
  76. package/dist/data-views/runtime.js +2 -0
  77. package/dist/data-views/runtime.js.map +1 -0
  78. package/dist/data-views.d.ts +132 -0
  79. package/dist/data-views.d.ts.map +1 -0
  80. package/dist/data-views.js +2 -0
  81. package/dist/data-views.js.map +1 -0
  82. package/dist/events.d.ts +45 -0
  83. package/dist/events.d.ts.map +1 -0
  84. package/dist/events.js +2 -0
  85. package/dist/events.js.map +1 -0
  86. package/dist/experiments/evaluator.d.ts +38 -0
  87. package/dist/experiments/evaluator.d.ts.map +1 -0
  88. package/dist/experiments/evaluator.js +2 -0
  89. package/dist/experiments/evaluator.js.map +1 -0
  90. package/dist/experiments/spec.d.ts +90 -0
  91. package/dist/experiments/spec.d.ts.map +1 -0
  92. package/dist/experiments/spec.js +2 -0
  93. package/dist/experiments/spec.js.map +1 -0
  94. package/dist/features.d.ts +88 -0
  95. package/dist/features.d.ts.map +1 -0
  96. package/dist/features.js +2 -0
  97. package/dist/features.js.map +1 -0
  98. package/dist/forms.d.ts +259 -0
  99. package/dist/forms.d.ts.map +1 -0
  100. package/dist/forms.js +2 -0
  101. package/dist/forms.js.map +1 -0
  102. package/dist/graphql-federation/dist/index.js +2 -0
  103. package/dist/graphql-federation/dist/index.js.map +1 -0
  104. package/dist/index.d.ts +129 -0
  105. package/dist/index.js +1 -0
  106. package/dist/install.d.ts +77 -0
  107. package/dist/install.d.ts.map +1 -0
  108. package/dist/install.js +2 -0
  109. package/dist/install.js.map +1 -0
  110. package/dist/integrations/binding.d.ts +18 -0
  111. package/dist/integrations/binding.d.ts.map +1 -0
  112. package/dist/integrations/binding.js +0 -0
  113. package/dist/integrations/connection.d.ts +52 -0
  114. package/dist/integrations/connection.d.ts.map +1 -0
  115. package/dist/integrations/connection.js +0 -0
  116. package/dist/integrations/contracts.d.ts +436 -0
  117. package/dist/integrations/contracts.d.ts.map +1 -0
  118. package/dist/integrations/contracts.js +2 -0
  119. package/dist/integrations/contracts.js.map +1 -0
  120. package/dist/integrations/health.d.ts +22 -0
  121. package/dist/integrations/health.d.ts.map +1 -0
  122. package/dist/integrations/health.js +2 -0
  123. package/dist/integrations/health.js.map +1 -0
  124. package/dist/integrations/index.d.ts +53 -0
  125. package/dist/integrations/index.js +1 -0
  126. package/dist/integrations/openbanking/contracts/accounts.d.ts +288 -0
  127. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -0
  128. package/dist/integrations/openbanking/contracts/accounts.js +2 -0
  129. package/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
  130. package/dist/integrations/openbanking/contracts/balances.d.ts +164 -0
  131. package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -0
  132. package/dist/integrations/openbanking/contracts/balances.js +2 -0
  133. package/dist/integrations/openbanking/contracts/balances.js.map +1 -0
  134. package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
  135. package/dist/integrations/openbanking/contracts/index.d.ts.map +1 -0
  136. package/dist/integrations/openbanking/contracts/index.js +2 -0
  137. package/dist/integrations/openbanking/contracts/index.js.map +1 -0
  138. package/dist/integrations/openbanking/contracts/transactions.d.ts +212 -0
  139. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -0
  140. package/dist/integrations/openbanking/contracts/transactions.js +2 -0
  141. package/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
  142. package/dist/integrations/openbanking/guards.d.ts +13 -0
  143. package/dist/integrations/openbanking/guards.d.ts.map +1 -0
  144. package/dist/integrations/openbanking/guards.js +2 -0
  145. package/dist/integrations/openbanking/guards.js.map +1 -0
  146. package/dist/integrations/openbanking/models.d.ts +229 -0
  147. package/dist/integrations/openbanking/models.d.ts.map +1 -0
  148. package/dist/integrations/openbanking/models.js +2 -0
  149. package/dist/integrations/openbanking/models.js.map +1 -0
  150. package/dist/integrations/openbanking/telemetry.d.ts +16 -0
  151. package/dist/integrations/openbanking/telemetry.d.ts.map +1 -0
  152. package/dist/integrations/openbanking/telemetry.js +2 -0
  153. package/dist/integrations/openbanking/telemetry.js.map +1 -0
  154. package/dist/integrations/providers/calendar.d.ts +79 -0
  155. package/dist/integrations/providers/calendar.d.ts.map +1 -0
  156. package/dist/integrations/providers/calendar.js +0 -0
  157. package/dist/integrations/providers/elevenlabs.d.ts +8 -0
  158. package/dist/integrations/providers/elevenlabs.d.ts.map +1 -0
  159. package/dist/integrations/providers/elevenlabs.js +2 -0
  160. package/dist/integrations/providers/elevenlabs.js.map +1 -0
  161. package/dist/integrations/providers/email.d.ts +87 -0
  162. package/dist/integrations/providers/email.d.ts.map +1 -0
  163. package/dist/integrations/providers/email.js +0 -0
  164. package/dist/integrations/providers/embedding.d.ts +25 -0
  165. package/dist/integrations/providers/embedding.d.ts.map +1 -0
  166. package/dist/integrations/providers/embedding.js +0 -0
  167. package/dist/integrations/providers/gcs-storage.d.ts +8 -0
  168. package/dist/integrations/providers/gcs-storage.d.ts.map +1 -0
  169. package/dist/integrations/providers/gcs-storage.js +2 -0
  170. package/dist/integrations/providers/gcs-storage.js.map +1 -0
  171. package/dist/integrations/providers/gmail.d.ts +8 -0
  172. package/dist/integrations/providers/gmail.d.ts.map +1 -0
  173. package/dist/integrations/providers/gmail.js +2 -0
  174. package/dist/integrations/providers/gmail.js.map +1 -0
  175. package/dist/integrations/providers/google-calendar.d.ts +8 -0
  176. package/dist/integrations/providers/google-calendar.d.ts.map +1 -0
  177. package/dist/integrations/providers/google-calendar.js +2 -0
  178. package/dist/integrations/providers/google-calendar.js.map +1 -0
  179. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +21 -0
  180. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +1 -0
  181. package/dist/integrations/providers/impls/elevenlabs-voice.js +2 -0
  182. package/dist/integrations/providers/impls/elevenlabs-voice.js.map +1 -0
  183. package/dist/integrations/providers/impls/gcs-storage.d.ts +25 -0
  184. package/dist/integrations/providers/impls/gcs-storage.d.ts.map +1 -0
  185. package/dist/integrations/providers/impls/gcs-storage.js +2 -0
  186. package/dist/integrations/providers/impls/gcs-storage.js.map +1 -0
  187. package/dist/integrations/providers/impls/gmail-inbound.d.ts +27 -0
  188. package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +1 -0
  189. package/dist/integrations/providers/impls/gmail-inbound.js +2 -0
  190. package/dist/integrations/providers/impls/gmail-inbound.js.map +1 -0
  191. package/dist/integrations/providers/impls/gmail-outbound.d.ts +19 -0
  192. package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +1 -0
  193. package/dist/integrations/providers/impls/gmail-outbound.js +7 -0
  194. package/dist/integrations/providers/impls/gmail-outbound.js.map +1 -0
  195. package/dist/integrations/providers/impls/google-calendar.d.ts +24 -0
  196. package/dist/integrations/providers/impls/google-calendar.d.ts.map +1 -0
  197. package/dist/integrations/providers/impls/google-calendar.js +2 -0
  198. package/dist/integrations/providers/impls/google-calendar.js.map +1 -0
  199. package/dist/integrations/providers/impls/index.d.ts +15 -0
  200. package/dist/integrations/providers/impls/index.js +1 -0
  201. package/dist/integrations/providers/impls/mistral-embedding.d.ts +24 -0
  202. package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +1 -0
  203. package/dist/integrations/providers/impls/mistral-embedding.js +2 -0
  204. package/dist/integrations/providers/impls/mistral-embedding.js.map +1 -0
  205. package/dist/integrations/providers/impls/mistral-llm.d.ts +32 -0
  206. package/dist/integrations/providers/impls/mistral-llm.d.ts.map +1 -0
  207. package/dist/integrations/providers/impls/mistral-llm.js +2 -0
  208. package/dist/integrations/providers/impls/mistral-llm.js.map +1 -0
  209. package/dist/integrations/providers/impls/postmark-email.d.ts +20 -0
  210. package/dist/integrations/providers/impls/postmark-email.d.ts.map +1 -0
  211. package/dist/integrations/providers/impls/postmark-email.js +2 -0
  212. package/dist/integrations/providers/impls/postmark-email.js.map +1 -0
  213. package/dist/integrations/providers/impls/powens-client.d.ts +125 -0
  214. package/dist/integrations/providers/impls/powens-client.d.ts.map +1 -0
  215. package/dist/integrations/providers/impls/powens-client.js +2 -0
  216. package/dist/integrations/providers/impls/powens-client.js.map +1 -0
  217. package/dist/integrations/providers/impls/powens-openbanking.d.ts +28 -0
  218. package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +1 -0
  219. package/dist/integrations/providers/impls/powens-openbanking.js +2 -0
  220. package/dist/integrations/providers/impls/powens-openbanking.js.map +1 -0
  221. package/dist/integrations/providers/impls/provider-factory.d.ts +27 -0
  222. package/dist/integrations/providers/impls/provider-factory.d.ts.map +1 -0
  223. package/dist/integrations/providers/impls/provider-factory.js +2 -0
  224. package/dist/integrations/providers/impls/provider-factory.js.map +1 -0
  225. package/dist/integrations/providers/impls/qdrant-vector.d.ts +25 -0
  226. package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +1 -0
  227. package/dist/integrations/providers/impls/qdrant-vector.js +2 -0
  228. package/dist/integrations/providers/impls/qdrant-vector.js.map +1 -0
  229. package/dist/integrations/providers/impls/stripe-payments.d.ts +29 -0
  230. package/dist/integrations/providers/impls/stripe-payments.d.ts.map +1 -0
  231. package/dist/integrations/providers/impls/stripe-payments.js +2 -0
  232. package/dist/integrations/providers/impls/stripe-payments.js.map +1 -0
  233. package/dist/integrations/providers/impls/twilio-sms.d.ts +21 -0
  234. package/dist/integrations/providers/impls/twilio-sms.d.ts.map +1 -0
  235. package/dist/integrations/providers/impls/twilio-sms.js +2 -0
  236. package/dist/integrations/providers/impls/twilio-sms.js.map +1 -0
  237. package/dist/integrations/providers/index.d.ts +36 -0
  238. package/dist/integrations/providers/index.js +1 -0
  239. package/dist/integrations/providers/llm.d.ts +83 -0
  240. package/dist/integrations/providers/llm.d.ts.map +1 -0
  241. package/dist/integrations/providers/llm.js +0 -0
  242. package/dist/integrations/providers/mistral.d.ts +8 -0
  243. package/dist/integrations/providers/mistral.d.ts.map +1 -0
  244. package/dist/integrations/providers/mistral.js +2 -0
  245. package/dist/integrations/providers/mistral.js.map +1 -0
  246. package/dist/integrations/providers/openbanking.d.ts +129 -0
  247. package/dist/integrations/providers/openbanking.d.ts.map +1 -0
  248. package/dist/integrations/providers/openbanking.js +0 -0
  249. package/dist/integrations/providers/payments.d.ts +110 -0
  250. package/dist/integrations/providers/payments.d.ts.map +1 -0
  251. package/dist/integrations/providers/payments.js +0 -0
  252. package/dist/integrations/providers/postmark.d.ts +8 -0
  253. package/dist/integrations/providers/postmark.d.ts.map +1 -0
  254. package/dist/integrations/providers/postmark.js +2 -0
  255. package/dist/integrations/providers/postmark.js.map +1 -0
  256. package/dist/integrations/providers/powens.d.ts +8 -0
  257. package/dist/integrations/providers/powens.d.ts.map +1 -0
  258. package/dist/integrations/providers/powens.js +2 -0
  259. package/dist/integrations/providers/powens.js.map +1 -0
  260. package/dist/integrations/providers/qdrant.d.ts +8 -0
  261. package/dist/integrations/providers/qdrant.d.ts.map +1 -0
  262. package/dist/integrations/providers/qdrant.js +2 -0
  263. package/dist/integrations/providers/qdrant.js.map +1 -0
  264. package/dist/integrations/providers/sms.d.ts +35 -0
  265. package/dist/integrations/providers/sms.d.ts.map +1 -0
  266. package/dist/integrations/providers/sms.js +0 -0
  267. package/dist/integrations/providers/storage.d.ts +61 -0
  268. package/dist/integrations/providers/storage.d.ts.map +1 -0
  269. package/dist/integrations/providers/storage.js +0 -0
  270. package/dist/integrations/providers/stripe.d.ts +8 -0
  271. package/dist/integrations/providers/stripe.d.ts.map +1 -0
  272. package/dist/integrations/providers/stripe.js +2 -0
  273. package/dist/integrations/providers/stripe.js.map +1 -0
  274. package/dist/integrations/providers/twilio-sms.d.ts +8 -0
  275. package/dist/integrations/providers/twilio-sms.d.ts.map +1 -0
  276. package/dist/integrations/providers/twilio-sms.js +2 -0
  277. package/dist/integrations/providers/twilio-sms.js.map +1 -0
  278. package/dist/integrations/providers/vector-store.d.ts +44 -0
  279. package/dist/integrations/providers/vector-store.d.ts.map +1 -0
  280. package/dist/integrations/providers/vector-store.js +0 -0
  281. package/dist/integrations/providers/voice.d.ts +35 -0
  282. package/dist/integrations/providers/voice.d.ts.map +1 -0
  283. package/dist/integrations/providers/voice.js +0 -0
  284. package/dist/integrations/runtime.d.ts +100 -0
  285. package/dist/integrations/runtime.d.ts.map +1 -0
  286. package/dist/integrations/runtime.js +2 -0
  287. package/dist/integrations/runtime.js.map +1 -0
  288. package/dist/integrations/secrets/env-secret-provider.d.ts +32 -0
  289. package/dist/integrations/secrets/env-secret-provider.d.ts.map +1 -0
  290. package/dist/integrations/secrets/env-secret-provider.js +2 -0
  291. package/dist/integrations/secrets/env-secret-provider.js.map +1 -0
  292. package/dist/integrations/secrets/gcp-secret-manager.d.ts +33 -0
  293. package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +1 -0
  294. package/dist/integrations/secrets/gcp-secret-manager.js +2 -0
  295. package/dist/integrations/secrets/gcp-secret-manager.js.map +1 -0
  296. package/dist/integrations/secrets/index.d.ts +5 -0
  297. package/dist/integrations/secrets/index.js +1 -0
  298. package/dist/integrations/secrets/manager.d.ts +48 -0
  299. package/dist/integrations/secrets/manager.d.ts.map +1 -0
  300. package/dist/integrations/secrets/manager.js +2 -0
  301. package/dist/integrations/secrets/manager.js.map +1 -0
  302. package/dist/integrations/secrets/provider.d.ts +53 -0
  303. package/dist/integrations/secrets/provider.d.ts.map +1 -0
  304. package/dist/integrations/secrets/provider.js +2 -0
  305. package/dist/integrations/secrets/provider.js.map +1 -0
  306. package/dist/integrations/spec.d.ts +80 -0
  307. package/dist/integrations/spec.d.ts.map +1 -0
  308. package/dist/integrations/spec.js +2 -0
  309. package/dist/integrations/spec.js.map +1 -0
  310. package/dist/jobs/gcp-cloud-tasks.d.ts +42 -0
  311. package/dist/jobs/gcp-cloud-tasks.d.ts.map +1 -0
  312. package/dist/jobs/gcp-cloud-tasks.js +2 -0
  313. package/dist/jobs/gcp-cloud-tasks.js.map +1 -0
  314. package/dist/jobs/gcp-pubsub.d.ts +26 -0
  315. package/dist/jobs/gcp-pubsub.d.ts.map +1 -0
  316. package/dist/jobs/gcp-pubsub.js +2 -0
  317. package/dist/jobs/gcp-pubsub.js.map +1 -0
  318. package/dist/jobs/handlers/gmail-sync-handler.d.ts +10 -0
  319. package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +1 -0
  320. package/dist/jobs/handlers/gmail-sync-handler.js +2 -0
  321. package/dist/jobs/handlers/gmail-sync-handler.js.map +1 -0
  322. package/dist/jobs/handlers/index.d.ts +3 -0
  323. package/dist/jobs/handlers/index.js +1 -0
  324. package/dist/jobs/handlers/storage-document-handler.d.ts +13 -0
  325. package/dist/jobs/handlers/storage-document-handler.d.ts.map +1 -0
  326. package/dist/jobs/handlers/storage-document-handler.js +2 -0
  327. package/dist/jobs/handlers/storage-document-handler.js.map +1 -0
  328. package/dist/jobs/index.d.ts +7 -0
  329. package/dist/jobs/index.js +1 -0
  330. package/dist/jobs/memory-queue.d.ts +19 -0
  331. package/dist/jobs/memory-queue.d.ts.map +1 -0
  332. package/dist/jobs/memory-queue.js +2 -0
  333. package/dist/jobs/memory-queue.js.map +1 -0
  334. package/dist/jobs/queue.d.ts +27 -0
  335. package/dist/jobs/queue.d.ts.map +1 -0
  336. package/dist/jobs/queue.js +0 -0
  337. package/dist/jsonschema.d.ts +27 -0
  338. package/dist/jsonschema.d.ts.map +1 -0
  339. package/dist/jsonschema.js +2 -0
  340. package/dist/jsonschema.js.map +1 -0
  341. package/dist/knowledge/binding.d.ts +26 -0
  342. package/dist/knowledge/binding.d.ts.map +1 -0
  343. package/dist/knowledge/binding.js +0 -0
  344. package/dist/knowledge/contracts.d.ts +317 -0
  345. package/dist/knowledge/contracts.d.ts.map +1 -0
  346. package/dist/knowledge/contracts.js +2 -0
  347. package/dist/knowledge/contracts.js.map +1 -0
  348. package/dist/knowledge/index.d.ts +10 -0
  349. package/dist/knowledge/index.js +1 -0
  350. package/dist/knowledge/ingestion/document-processor.d.ts +25 -0
  351. package/dist/knowledge/ingestion/document-processor.d.ts.map +1 -0
  352. package/dist/knowledge/ingestion/document-processor.js +2 -0
  353. package/dist/knowledge/ingestion/document-processor.js.map +1 -0
  354. package/dist/knowledge/ingestion/embedding-service.d.ts +13 -0
  355. package/dist/knowledge/ingestion/embedding-service.d.ts.map +1 -0
  356. package/dist/knowledge/ingestion/embedding-service.js +2 -0
  357. package/dist/knowledge/ingestion/embedding-service.js.map +1 -0
  358. package/dist/knowledge/ingestion/gmail-adapter.d.ts +19 -0
  359. package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +1 -0
  360. package/dist/knowledge/ingestion/gmail-adapter.js +7 -0
  361. package/dist/knowledge/ingestion/gmail-adapter.js.map +1 -0
  362. package/dist/knowledge/ingestion/index.d.ts +6 -0
  363. package/dist/knowledge/ingestion/index.js +1 -0
  364. package/dist/knowledge/ingestion/storage-adapter.d.ts +16 -0
  365. package/dist/knowledge/ingestion/storage-adapter.d.ts.map +1 -0
  366. package/dist/knowledge/ingestion/storage-adapter.js +2 -0
  367. package/dist/knowledge/ingestion/storage-adapter.js.map +1 -0
  368. package/dist/knowledge/ingestion/vector-indexer.d.ts +19 -0
  369. package/dist/knowledge/ingestion/vector-indexer.d.ts.map +1 -0
  370. package/dist/knowledge/ingestion/vector-indexer.js +2 -0
  371. package/dist/knowledge/ingestion/vector-indexer.js.map +1 -0
  372. package/dist/knowledge/query/index.d.ts +2 -0
  373. package/dist/knowledge/query/index.js +1 -0
  374. package/dist/knowledge/query/service.d.ts +30 -0
  375. package/dist/knowledge/query/service.d.ts.map +1 -0
  376. package/dist/knowledge/query/service.js +4 -0
  377. package/dist/knowledge/query/service.js.map +1 -0
  378. package/dist/knowledge/runtime.d.ts +33 -0
  379. package/dist/knowledge/runtime.d.ts.map +1 -0
  380. package/dist/knowledge/runtime.js +2 -0
  381. package/dist/knowledge/runtime.js.map +1 -0
  382. package/dist/knowledge/source.d.ts +33 -0
  383. package/dist/knowledge/source.d.ts.map +1 -0
  384. package/dist/knowledge/source.js +0 -0
  385. package/dist/knowledge/spaces/email-threads.d.ts +8 -0
  386. package/dist/knowledge/spaces/email-threads.d.ts.map +1 -0
  387. package/dist/knowledge/spaces/email-threads.js +2 -0
  388. package/dist/knowledge/spaces/email-threads.js.map +1 -0
  389. package/dist/knowledge/spaces/financial-docs.d.ts +8 -0
  390. package/dist/knowledge/spaces/financial-docs.d.ts.map +1 -0
  391. package/dist/knowledge/spaces/financial-docs.js +2 -0
  392. package/dist/knowledge/spaces/financial-docs.js.map +1 -0
  393. package/dist/knowledge/spaces/financial-overview.d.ts +8 -0
  394. package/dist/knowledge/spaces/financial-overview.d.ts.map +1 -0
  395. package/dist/knowledge/spaces/financial-overview.js +2 -0
  396. package/dist/knowledge/spaces/financial-overview.js.map +1 -0
  397. package/dist/knowledge/spaces/index.d.ts +7 -0
  398. package/dist/knowledge/spaces/index.js +1 -0
  399. package/dist/knowledge/spaces/product-canon.d.ts +8 -0
  400. package/dist/knowledge/spaces/product-canon.d.ts.map +1 -0
  401. package/dist/knowledge/spaces/product-canon.js +2 -0
  402. package/dist/knowledge/spaces/product-canon.js.map +1 -0
  403. package/dist/knowledge/spaces/support-faq.d.ts +8 -0
  404. package/dist/knowledge/spaces/support-faq.d.ts.map +1 -0
  405. package/dist/knowledge/spaces/support-faq.js +2 -0
  406. package/dist/knowledge/spaces/support-faq.js.map +1 -0
  407. package/dist/knowledge/spaces/uploaded-docs.d.ts +8 -0
  408. package/dist/knowledge/spaces/uploaded-docs.d.ts.map +1 -0
  409. package/dist/knowledge/spaces/uploaded-docs.js +2 -0
  410. package/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
  411. package/dist/knowledge/spec.d.ts +53 -0
  412. package/dist/knowledge/spec.d.ts.map +1 -0
  413. package/dist/knowledge/spec.js +2 -0
  414. package/dist/knowledge/spec.js.map +1 -0
  415. package/dist/markdown.d.ts +22 -0
  416. package/dist/markdown.d.ts.map +1 -0
  417. package/dist/markdown.js +4 -0
  418. package/dist/markdown.js.map +1 -0
  419. package/dist/migrations.d.ts +53 -0
  420. package/dist/migrations.d.ts.map +1 -0
  421. package/dist/migrations.js +2 -0
  422. package/dist/migrations.js.map +1 -0
  423. package/dist/onboarding-base.d.ts +138 -0
  424. package/dist/onboarding-base.d.ts.map +1 -0
  425. package/dist/onboarding-base.js +2 -0
  426. package/dist/onboarding-base.js.map +1 -0
  427. package/dist/ownership.d.ts +76 -0
  428. package/dist/ownership.d.ts.map +1 -0
  429. package/dist/ownership.js +2 -0
  430. package/dist/ownership.js.map +1 -0
  431. package/dist/policy/engine.d.ts +40 -0
  432. package/dist/policy/engine.d.ts.map +1 -0
  433. package/dist/policy/engine.js +2 -0
  434. package/dist/policy/engine.js.map +1 -0
  435. package/dist/policy/opa-adapter.d.ts +46 -0
  436. package/dist/policy/opa-adapter.d.ts.map +1 -0
  437. package/dist/policy/opa-adapter.js +2 -0
  438. package/dist/policy/opa-adapter.js.map +1 -0
  439. package/dist/policy/spec.d.ts +115 -0
  440. package/dist/policy/spec.d.ts.map +1 -0
  441. package/dist/policy/spec.js +2 -0
  442. package/dist/policy/spec.js.map +1 -0
  443. package/dist/presentations.backcompat.d.ts +8 -0
  444. package/dist/presentations.backcompat.d.ts.map +1 -0
  445. package/dist/presentations.backcompat.js +2 -0
  446. package/dist/presentations.backcompat.js.map +1 -0
  447. package/dist/presentations.d.ts +97 -0
  448. package/dist/presentations.d.ts.map +1 -0
  449. package/dist/presentations.js +2 -0
  450. package/dist/presentations.js.map +1 -0
  451. package/dist/presentations.v2.d.ts +96 -0
  452. package/dist/presentations.v2.d.ts.map +1 -0
  453. package/dist/presentations.v2.js +2 -0
  454. package/dist/presentations.v2.js.map +1 -0
  455. package/dist/prompt.d.ts +61 -0
  456. package/dist/prompt.d.ts.map +1 -0
  457. package/dist/prompt.js +2 -0
  458. package/dist/prompt.js.map +1 -0
  459. package/dist/promptRegistry.d.ts +16 -0
  460. package/dist/promptRegistry.d.ts.map +1 -0
  461. package/dist/promptRegistry.js +2 -0
  462. package/dist/promptRegistry.js.map +1 -0
  463. package/dist/regenerator/adapters.d.ts +20 -0
  464. package/dist/regenerator/adapters.d.ts.map +1 -0
  465. package/dist/regenerator/adapters.js +0 -0
  466. package/dist/regenerator/executor.d.ts +71 -0
  467. package/dist/regenerator/executor.d.ts.map +1 -0
  468. package/dist/regenerator/executor.js +2 -0
  469. package/dist/regenerator/executor.js.map +1 -0
  470. package/dist/regenerator/index.d.ts +7 -0
  471. package/dist/regenerator/index.js +1 -0
  472. package/dist/regenerator/service.d.ts +34 -0
  473. package/dist/regenerator/service.d.ts.map +1 -0
  474. package/dist/regenerator/service.js +2 -0
  475. package/dist/regenerator/service.js.map +1 -0
  476. package/dist/regenerator/sinks.d.ts +27 -0
  477. package/dist/regenerator/sinks.d.ts.map +1 -0
  478. package/dist/regenerator/sinks.js +2 -0
  479. package/dist/regenerator/sinks.js.map +1 -0
  480. package/dist/regenerator/types.d.ts +108 -0
  481. package/dist/regenerator/types.d.ts.map +1 -0
  482. package/dist/regenerator/types.js +0 -0
  483. package/dist/regenerator/utils.d.ts +10 -0
  484. package/dist/regenerator/utils.d.ts.map +1 -0
  485. package/dist/regenerator/utils.js +2 -0
  486. package/dist/regenerator/utils.js.map +1 -0
  487. package/dist/registry.d.ts +73 -0
  488. package/dist/registry.d.ts.map +1 -0
  489. package/dist/registry.js +2 -0
  490. package/dist/registry.js.map +1 -0
  491. package/dist/resources.d.ts +65 -0
  492. package/dist/resources.d.ts.map +1 -0
  493. package/dist/resources.js +2 -0
  494. package/dist/resources.js.map +1 -0
  495. package/dist/schema/dist/EnumType.js +1 -0
  496. package/dist/schema/dist/FieldType.js +2 -0
  497. package/dist/schema/dist/FieldType.js.map +1 -0
  498. package/dist/schema/dist/ScalarTypeEnum.js +2 -0
  499. package/dist/schema/dist/ScalarTypeEnum.js.map +1 -0
  500. package/dist/schema/dist/SchemaModel.js +2 -0
  501. package/dist/schema/dist/SchemaModel.js.map +1 -0
  502. package/dist/schema/dist/index.js +1 -0
  503. package/dist/server/graphql-pothos.d.ts +32 -0
  504. package/dist/server/graphql-pothos.d.ts.map +1 -0
  505. package/dist/server/graphql-pothos.js +2 -0
  506. package/dist/server/graphql-pothos.js.map +1 -0
  507. package/dist/server/graphql-schema-export.d.ts +7 -0
  508. package/dist/server/graphql-schema-export.d.ts.map +1 -0
  509. package/dist/server/graphql-schema-export.js +2 -0
  510. package/dist/server/graphql-schema-export.js.map +1 -0
  511. package/dist/server/index.d.ts +9 -0
  512. package/dist/server/index.js +1 -0
  513. package/dist/server/provider-mcp.d.ts +52 -0
  514. package/dist/server/provider-mcp.d.ts.map +1 -0
  515. package/dist/server/provider-mcp.js +2 -0
  516. package/dist/server/provider-mcp.js.map +1 -0
  517. package/dist/server/rest-elysia.d.ts +41 -0
  518. package/dist/server/rest-elysia.d.ts.map +1 -0
  519. package/dist/server/rest-elysia.js +2 -0
  520. package/dist/server/rest-elysia.js.map +1 -0
  521. package/dist/server/rest-express.d.ts +17 -0
  522. package/dist/server/rest-express.d.ts.map +1 -0
  523. package/dist/server/rest-express.js +2 -0
  524. package/dist/server/rest-express.js.map +1 -0
  525. package/dist/server/rest-generic.d.ts +33 -0
  526. package/dist/server/rest-generic.d.ts.map +1 -0
  527. package/dist/server/rest-generic.js +2 -0
  528. package/dist/server/rest-generic.js.map +1 -0
  529. package/dist/server/rest-next-app.d.ts +36 -0
  530. package/dist/server/rest-next-app.d.ts.map +1 -0
  531. package/dist/server/rest-next-app.js +2 -0
  532. package/dist/server/rest-next-app.js.map +1 -0
  533. package/dist/server/rest-next-mcp.d.ts +12 -0
  534. package/dist/server/rest-next-mcp.d.ts.map +1 -0
  535. package/dist/server/rest-next-mcp.js +2 -0
  536. package/dist/server/rest-next-mcp.js.map +1 -0
  537. package/dist/server/rest-next-pages.d.ts +10 -0
  538. package/dist/server/rest-next-pages.d.ts.map +1 -0
  539. package/dist/server/rest-next-pages.js +2 -0
  540. package/dist/server/rest-next-pages.js.map +1 -0
  541. package/dist/spec.d.ts +172 -0
  542. package/dist/spec.d.ts.map +1 -0
  543. package/dist/spec.js +2 -0
  544. package/dist/spec.js.map +1 -0
  545. package/dist/telemetry/anomaly.d.ts +28 -0
  546. package/dist/telemetry/anomaly.d.ts.map +1 -0
  547. package/dist/telemetry/anomaly.js +2 -0
  548. package/dist/telemetry/anomaly.js.map +1 -0
  549. package/dist/telemetry/index.d.ts +4 -0
  550. package/dist/telemetry/index.js +1 -0
  551. package/dist/telemetry/spec.d.ts +99 -0
  552. package/dist/telemetry/spec.d.ts.map +1 -0
  553. package/dist/telemetry/spec.js +2 -0
  554. package/dist/telemetry/spec.js.map +1 -0
  555. package/dist/telemetry/tracker.d.ts +52 -0
  556. package/dist/telemetry/tracker.d.ts.map +1 -0
  557. package/dist/telemetry/tracker.js +2 -0
  558. package/dist/telemetry/tracker.js.map +1 -0
  559. package/dist/tests/index.d.ts +3 -0
  560. package/dist/tests/index.js +1 -0
  561. package/dist/tests/runner.d.ts +44 -0
  562. package/dist/tests/runner.d.ts.map +1 -0
  563. package/dist/tests/runner.js +2 -0
  564. package/dist/tests/runner.js.map +1 -0
  565. package/dist/tests/spec.d.ts +90 -0
  566. package/dist/tests/spec.d.ts.map +1 -0
  567. package/dist/tests/spec.js +2 -0
  568. package/dist/tests/spec.js.map +1 -0
  569. package/dist/themes.d.ts +56 -0
  570. package/dist/themes.d.ts.map +1 -0
  571. package/dist/themes.js +2 -0
  572. package/dist/themes.js.map +1 -0
  573. package/dist/translations/catalog.d.ts +29 -0
  574. package/dist/translations/catalog.d.ts.map +1 -0
  575. package/dist/translations/catalog.js +0 -0
  576. package/dist/translations/tenant.d.ts +16 -0
  577. package/dist/translations/tenant.d.ts.map +1 -0
  578. package/dist/translations/tenant.js +0 -0
  579. package/dist/types/all.d.ts +60 -0
  580. package/dist/types/all.js +0 -0
  581. package/dist/types.d.ts +86 -0
  582. package/dist/types.d.ts.map +1 -0
  583. package/dist/types.js +0 -0
  584. package/dist/workflow/adapters/db-adapter.d.ts +35 -0
  585. package/dist/workflow/adapters/db-adapter.d.ts.map +1 -0
  586. package/dist/workflow/adapters/db-adapter.js +2 -0
  587. package/dist/workflow/adapters/db-adapter.js.map +1 -0
  588. package/dist/workflow/adapters/file-adapter.d.ts +15 -0
  589. package/dist/workflow/adapters/file-adapter.d.ts.map +1 -0
  590. package/dist/workflow/adapters/file-adapter.js +2 -0
  591. package/dist/workflow/adapters/file-adapter.js.map +1 -0
  592. package/dist/workflow/adapters/index.d.ts +4 -0
  593. package/dist/workflow/adapters/index.js +1 -0
  594. package/dist/workflow/adapters/memory-store.d.ts +19 -0
  595. package/dist/workflow/adapters/memory-store.d.ts.map +1 -0
  596. package/dist/workflow/adapters/memory-store.js +2 -0
  597. package/dist/workflow/adapters/memory-store.js.map +1 -0
  598. package/dist/workflow/expression.d.ts +10 -0
  599. package/dist/workflow/expression.d.ts.map +1 -0
  600. package/dist/workflow/expression.js +2 -0
  601. package/dist/workflow/expression.js.map +1 -0
  602. package/dist/workflow/index.d.ts +10 -0
  603. package/dist/workflow/index.js +1 -0
  604. package/dist/workflow/runner.d.ts +75 -0
  605. package/dist/workflow/runner.d.ts.map +1 -0
  606. package/dist/workflow/runner.js +2 -0
  607. package/dist/workflow/runner.js.map +1 -0
  608. package/dist/workflow/sla-monitor.d.ts +21 -0
  609. package/dist/workflow/sla-monitor.d.ts.map +1 -0
  610. package/dist/workflow/sla-monitor.js +2 -0
  611. package/dist/workflow/sla-monitor.js.map +1 -0
  612. package/dist/workflow/spec.d.ts +100 -0
  613. package/dist/workflow/spec.d.ts.map +1 -0
  614. package/dist/workflow/spec.js +2 -0
  615. package/dist/workflow/spec.js.map +1 -0
  616. package/dist/workflow/state.d.ts +36 -0
  617. package/dist/workflow/state.d.ts.map +1 -0
  618. package/dist/workflow/state.js +0 -0
  619. package/dist/workflow/validation.d.ts +29 -0
  620. package/dist/workflow/validation.d.ts.map +1 -0
  621. package/dist/workflow/validation.js +2 -0
  622. package/dist/workflow/validation.js.map +1 -0
  623. package/package.json +403 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sinks.js","names":["executor: ProposalExecutor","options: ExecutorSinkOptions"],"sources":["../../src/regenerator/sinks.ts"],"sourcesContent":["import type { ProposalSink, RegenerationContext, SpecChangeProposal } from './types';\nimport { ProposalExecutor } from './executor';\nimport type { ProposalExecutionResult } from './executor';\n\nexport interface ExecutorResultPayload {\n context: RegenerationContext;\n proposal: SpecChangeProposal;\n result: ProposalExecutionResult;\n}\n\nexport interface ExecutorSinkLogger {\n info?: (message: string, meta?: Record<string, unknown>) => void;\n error?: (message: string, error: Error, meta?: Record<string, unknown>) => void;\n}\n\nexport interface ExecutorSinkOptions {\n dryRun?: boolean;\n onResult?: (payload: ExecutorResultPayload) => void | Promise<void>;\n logger?: ExecutorSinkLogger;\n}\n\nexport class ExecutorProposalSink implements ProposalSink {\n constructor(\n private readonly executor: ProposalExecutor,\n private readonly options: ExecutorSinkOptions = {}\n ) {}\n\n async submit(\n context: RegenerationContext,\n proposal: SpecChangeProposal\n ): Promise<void> {\n const dryRun = this.options.dryRun ?? false;\n try {\n const result = await this.executor.execute(context, proposal, { dryRun });\n if (this.options.logger?.info) {\n this.options.logger.info('[regenerator] proposal executed', {\n proposalId: proposal.id,\n contextId: context.id,\n status: result.status,\n });\n }\n if (this.options.onResult) {\n await this.options.onResult({ context, proposal, result });\n }\n } catch (error) {\n if (this.options.logger?.error) {\n this.options.logger.error(\n '[regenerator] proposal execution failed',\n error instanceof Error ? error : new Error(String(error)),\n { proposalId: proposal.id, contextId: context.id }\n );\n }\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n}\n\n\n\n\n\n\n\n"],"mappings":"AAqBA,IAAa,EAAb,KAA0D,CACxD,YACE,EACA,EAAgD,EAAE,CAClD,CAFiB,KAAA,SAAA,EACA,KAAA,QAAA,EAGnB,MAAM,OACJ,EACA,EACe,CACf,IAAM,EAAS,KAAK,QAAQ,QAAU,GACtC,GAAI,CACF,IAAM,EAAS,MAAM,KAAK,SAAS,QAAQ,EAAS,EAAU,CAAE,SAAQ,CAAC,CACrE,KAAK,QAAQ,QAAQ,MACvB,KAAK,QAAQ,OAAO,KAAK,kCAAmC,CAC1D,WAAY,EAAS,GACrB,UAAW,EAAQ,GACnB,OAAQ,EAAO,OAChB,CAAC,CAEA,KAAK,QAAQ,UACf,MAAM,KAAK,QAAQ,SAAS,CAAE,UAAS,WAAU,SAAQ,CAAC,OAErD,EAAO,CAQd,MAPI,KAAK,QAAQ,QAAQ,OACvB,KAAK,QAAQ,OAAO,MAClB,0CACA,aAAiB,MAAQ,EAAY,MAAM,OAAO,EAAM,CAAC,CACzD,CAAE,WAAY,EAAS,GAAI,UAAW,EAAQ,GAAI,CACnD,CAEG,aAAiB,MAAQ,EAAY,MAAM,OAAO,EAAM,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { TelemetrySpec } from "../telemetry/spec.js";
2
+ import { AppBlueprintSpec, TenantAppConfig } from "../app-config/spec.js";
3
+ import { ResolvedAppConfig } from "../app-config/runtime.js";
4
+
5
+ //#region src/regenerator/types.d.ts
6
+ type RegeneratorSignal = TelemetrySignalEnvelope | ErrorSignalEnvelope | BehaviorSignalEnvelope;
7
+ interface TelemetrySignalEnvelope {
8
+ type: 'telemetry';
9
+ contextId: string;
10
+ signal: TelemetrySignal;
11
+ }
12
+ interface TelemetrySignal {
13
+ eventName: string;
14
+ eventVersion: number;
15
+ count: number;
16
+ windowStart: Date;
17
+ windowEnd: Date;
18
+ anomalyScore?: number;
19
+ classification?: 'normal' | 'warning' | 'critical';
20
+ metadata?: Record<string, unknown>;
21
+ telemetrySpec?: TelemetrySpec;
22
+ }
23
+ interface ErrorSignalEnvelope {
24
+ type: 'error';
25
+ contextId: string;
26
+ signal: ErrorSignal;
27
+ }
28
+ interface ErrorSignal {
29
+ id: string;
30
+ classification: 'runtime' | 'policy' | 'workflow' | 'unknown';
31
+ message: string;
32
+ occurredAt: Date;
33
+ count: number;
34
+ metadata?: Record<string, unknown>;
35
+ }
36
+ interface BehaviorSignalEnvelope {
37
+ type: 'behavior';
38
+ contextId: string;
39
+ signal: BehaviorSignal;
40
+ }
41
+ interface BehaviorSignal {
42
+ feature: string;
43
+ metric: 'usage' | 'conversion' | 'latency' | 'custom';
44
+ value: number;
45
+ baseline?: number;
46
+ windowStart: Date;
47
+ windowEnd: Date;
48
+ metadata?: Record<string, unknown>;
49
+ }
50
+ interface SpecChangeProposal {
51
+ id: string;
52
+ title: string;
53
+ summary: string;
54
+ confidence: ProposalConfidence;
55
+ rationale: string[];
56
+ target: ProposalTarget;
57
+ diff?: string;
58
+ actions: ProposalAction[];
59
+ blockers?: ProposalBlocker[];
60
+ createdAt: Date;
61
+ signalIds: string[];
62
+ }
63
+ type ProposalConfidence = 'low' | 'medium' | 'high';
64
+ interface ProposalTarget {
65
+ specType: 'workflow' | 'capability' | 'policy' | 'dataView' | 'telemetry' | 'experiment' | 'theme' | 'unknown';
66
+ reference: {
67
+ name: string;
68
+ version?: number;
69
+ };
70
+ tenantScoped?: boolean;
71
+ }
72
+ type ProposalAction = {
73
+ kind: 'update_blueprint';
74
+ summary: string;
75
+ } | {
76
+ kind: 'update_tenant_config';
77
+ summary: string;
78
+ } | {
79
+ kind: 'run_tests';
80
+ tests: string[];
81
+ } | {
82
+ kind: 'run_migrations';
83
+ migrations: string[];
84
+ } | {
85
+ kind: 'trigger_regeneration';
86
+ summary?: string;
87
+ };
88
+ interface ProposalBlocker {
89
+ description: string;
90
+ kind: 'missing_context' | 'insufficient_data' | 'user_feedback' | 'manual_review';
91
+ }
92
+ interface RegenerationContext {
93
+ id: string;
94
+ blueprint: AppBlueprintSpec;
95
+ tenantConfig: TenantAppConfig;
96
+ resolved: ResolvedAppConfig;
97
+ }
98
+ interface RegenerationRule {
99
+ readonly id: string;
100
+ readonly description: string;
101
+ evaluate(context: RegenerationContext, signals: RegeneratorSignal[]): Promise<SpecChangeProposal[]>;
102
+ }
103
+ interface ProposalSink {
104
+ submit(context: RegenerationContext, proposal: SpecChangeProposal): Promise<void>;
105
+ }
106
+ //#endregion
107
+ export { BehaviorSignal, BehaviorSignalEnvelope, ErrorSignal, ErrorSignalEnvelope, ProposalAction, ProposalBlocker, ProposalConfidence, ProposalSink, ProposalTarget, RegenerationContext, RegenerationRule, RegeneratorSignal, SpecChangeProposal, TelemetrySignal, TelemetrySignalEnvelope };
108
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/regenerator/types.ts"],"sourcesContent":[],"mappings":";;;;;KAOY,iBAAA,GACR,0BACA,sBACA;UAEa,uBAAA;EALL,IAAA,EAAA,WAAA;EACR,SAAA,EAAA,MAAA;EACA,MAAA,EAMM,eANN;;AACsB,UAQT,eAAA,CARS;EAET,SAAA,EAAA,MAAA;EAMA,YAAA,EAAA,MAAe;EAIjB,KAAA,EAAA,MAAA;EACF,WAAA,EADE,IACF;EAGA,SAAA,EAHA,IAGA;EACK,YAAA,CAAA,EAAA,MAAA;EAAa,cAAA,CAAA,EAAA,QAAA,GAAA,SAAA,GAAA,UAAA;EAGd,QAAA,CAAA,EAJJ,MAII,CAAA,MAAmB,EAAA,OAAA,CAAA;EAMnB,aAAA,CAAW,EATV,aAaJ;AAKd;AAMiB,UArBA,mBAAA,CAqBc;EAKhB,IAAA,EAAA,OAAA;EACF,SAAA,EAAA,MAAA;EACA,MAAA,EAzBH,WAyBG;;AAGI,UAzBA,WAAA,CAyBkB;EAIrB,EAAA,EAAA,MAAA;EAEJ,cAAA,EAAA,SAAA,GAAA,QAAA,GAAA,UAAA,GAAA,SAAA;EAEC,OAAA,EAAA,MAAA;EACE,UAAA,EA9BC,IA8BD;EACA,KAAA,EAAA,MAAA;EAAI,QAAA,CAAA,EA7BJ,MA6BI,CAAA,MAAA,EAAA,OAAA,CAAA;AAIjB;AAEiB,UAhCA,sBAAA,CAgCc;EAiBnB,IAAA,EAAA,UAAA;EAsBK,SAAA,EAAA,MAAA;EAKA,MAAA,EAzEP,cAyE0B;;AAGpB,UAzEC,cAAA,CAyED;EACJ,OAAA,EAAA,MAAA;EAAiB,MAAA,EAAA,OAAA,GAAA,YAAA,GAAA,SAAA,GAAA,QAAA;EAGZ,KAAA,EAAA,MAAA;EAIJ,QAAA,CAAA,EAAA,MAAA;EACA,WAAA,EA7EE,IA6EF;EACA,SAAA,EA7EA,IA6EA;EAAR,QAAA,CAAA,EA5EQ,MA4ER,CAAA,MAAA,EAAA,OAAA,CAAA;;AAGY,UA5EA,kBAAA,CA4EY;EAEhB,EAAA,EAAA,MAAA;EACC,KAAA,EAAA,MAAA;EACT,OAAA,EAAA,MAAA;EAAO,UAAA,EA5EE,kBA4EF;;UA1EF;;WAEC;aACE;aACA;;;KAID,kBAAA;UAEK,cAAA;;;;;;;;KAiBL,cAAA;;;;;;;;;;;;;;;;UAsBK,eAAA;;;;UAKA,mBAAA;;aAEJ;gBACG;YACJ;;UAGK,gBAAA;;;oBAIJ,8BACA,sBACR,QAAQ;;UAGI,YAAA;kBAEJ,+BACC,qBACT"}
File without changes
@@ -0,0 +1,10 @@
1
+ import { BehaviorSignal, BehaviorSignalEnvelope, ErrorSignal, ErrorSignalEnvelope, TelemetrySignal, TelemetrySignalEnvelope } from "./types.js";
2
+
3
+ //#region src/regenerator/utils.d.ts
4
+ type Clock = () => Date;
5
+ declare function telemetryToEnvelope(contextId: string, signal: TelemetrySignal, clock: Clock): TelemetrySignalEnvelope;
6
+ declare function errorToEnvelope(contextId: string, signal: ErrorSignal, clock: Clock): ErrorSignalEnvelope;
7
+ declare function behaviorToEnvelope(contextId: string, signal: BehaviorSignal, clock: Clock): BehaviorSignalEnvelope;
8
+ //#endregion
9
+ export { behaviorToEnvelope, errorToEnvelope, telemetryToEnvelope };
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/regenerator/utils.ts"],"sourcesContent":[],"mappings":";;;KASK,KAAA,SAAc;iBAEH,mBAAA,4BAEN,wBACD,QACN;AANE,iBAcW,eAAA,CAdO,SAAA,EAAA,MAAA,EAAA,MAAA,EAgBb,WAhBa,EAAA,KAAA,EAiBd,KAjBc,CAAA,EAkBpB,mBAlBoB;AAEP,iBAwBA,kBAAA,CAxBmB,SAAA,EAAA,MAAA,EAAA,MAAA,EA0BzB,cA1ByB,EAAA,KAAA,EA2B1B,KA3B0B,CAAA,EA4BhC,sBA5BgC"}
@@ -0,0 +1,2 @@
1
+ function e(e,t,n){return{type:`telemetry`,contextId:e,signal:r(t,n)}}function t(e,t,n){return{type:`error`,contextId:e,signal:i(t,n)}}function n(e,t,n){return{type:`behavior`,contextId:e,signal:a(t,n)}}function r(e,t){return{...e,windowStart:o(e.windowStart,t),windowEnd:o(e.windowEnd,t)}}function i(e,t){return{...e,occurredAt:o(e.occurredAt,t)}}function a(e,t){return{...e,windowStart:o(e.windowStart,t),windowEnd:o(e.windowEnd,t)}}function o(e,t){if(e instanceof Date)return e;let n=new Date(e);return Number.isNaN(n.getTime())?t():n}export{n as behaviorToEnvelope,t as errorToEnvelope,e as telemetryToEnvelope};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/regenerator/utils.ts"],"sourcesContent":["import type {\n BehaviorSignal,\n BehaviorSignalEnvelope,\n ErrorSignal,\n ErrorSignalEnvelope,\n TelemetrySignal,\n TelemetrySignalEnvelope,\n} from './types';\n\ntype Clock = () => Date;\n\nexport function telemetryToEnvelope(\n contextId: string,\n signal: TelemetrySignal,\n clock: Clock\n): TelemetrySignalEnvelope {\n return {\n type: 'telemetry',\n contextId,\n signal: normalizeTelemetryDates(signal, clock),\n };\n}\n\nexport function errorToEnvelope(\n contextId: string,\n signal: ErrorSignal,\n clock: Clock\n): ErrorSignalEnvelope {\n return {\n type: 'error',\n contextId,\n signal: normalizeErrorDates(signal, clock),\n };\n}\n\nexport function behaviorToEnvelope(\n contextId: string,\n signal: BehaviorSignal,\n clock: Clock\n): BehaviorSignalEnvelope {\n return {\n type: 'behavior',\n contextId,\n signal: normalizeBehaviorDates(signal, clock),\n };\n}\n\nfunction normalizeTelemetryDates(\n signal: TelemetrySignal,\n clock: Clock\n): TelemetrySignal {\n return {\n ...signal,\n windowStart: toDate(signal.windowStart, clock),\n windowEnd: toDate(signal.windowEnd, clock),\n };\n}\n\nfunction normalizeErrorDates(\n signal: ErrorSignal,\n clock: Clock\n): ErrorSignal {\n return {\n ...signal,\n occurredAt: toDate(signal.occurredAt, clock),\n };\n}\n\nfunction normalizeBehaviorDates(\n signal: BehaviorSignal,\n clock: Clock\n): BehaviorSignal {\n return {\n ...signal,\n windowStart: toDate(signal.windowStart, clock),\n windowEnd: toDate(signal.windowEnd, clock),\n };\n}\n\nfunction toDate(value: Date | string, clock: Clock): Date {\n if (value instanceof Date) return value;\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return clock();\n }\n return parsed;\n}\n\n\n\n\n\n\n\n"],"mappings":"AAWA,SAAgB,EACd,EACA,EACA,EACyB,CACzB,MAAO,CACL,KAAM,YACN,YACA,OAAQ,EAAwB,EAAQ,EAAM,CAC/C,CAGH,SAAgB,EACd,EACA,EACA,EACqB,CACrB,MAAO,CACL,KAAM,QACN,YACA,OAAQ,EAAoB,EAAQ,EAAM,CAC3C,CAGH,SAAgB,EACd,EACA,EACA,EACwB,CACxB,MAAO,CACL,KAAM,WACN,YACA,OAAQ,EAAuB,EAAQ,EAAM,CAC9C,CAGH,SAAS,EACP,EACA,EACiB,CACjB,MAAO,CACL,GAAG,EACH,YAAa,EAAO,EAAO,YAAa,EAAM,CAC9C,UAAW,EAAO,EAAO,UAAW,EAAM,CAC3C,CAGH,SAAS,EACP,EACA,EACa,CACb,MAAO,CACL,GAAG,EACH,WAAY,EAAO,EAAO,WAAY,EAAM,CAC7C,CAGH,SAAS,EACP,EACA,EACgB,CAChB,MAAO,CACL,GAAG,EACH,YAAa,EAAO,EAAO,YAAa,EAAM,CAC9C,UAAW,EAAO,EAAO,UAAW,EAAM,CAC3C,CAGH,SAAS,EAAO,EAAsB,EAAoB,CACxD,GAAI,aAAiB,KAAM,OAAO,EAClC,IAAM,EAAS,IAAI,KAAK,EAAM,CAI9B,OAHI,OAAO,MAAM,EAAO,SAAS,CAAC,CACzB,GAAO,CAET"}
@@ -0,0 +1,73 @@
1
+ import { ResourceRefDescriptor } from "./resources.js";
2
+ import { ContractSpec } from "./spec.js";
3
+ import { HandlerCtx } from "./types.js";
4
+ import { HandlerFor } from "./install.js";
5
+ import { AnySchemaModel } from "@lssm/lib.schema";
6
+
7
+ //#region src/registry.d.ts
8
+
9
+ type OperationKey = `${string}.v${number}`;
10
+ declare function opKey(name: string, version: number): OperationKey;
11
+ type AnySpec = ContractSpec<AnySchemaModel, AnySchemaModel | ResourceRefDescriptor<boolean>>;
12
+ type AnyHandler = (args: any, ctx: HandlerCtx) => Promise<unknown>;
13
+ /**
14
+ * In-memory registry for ContractSpecs and their bound handlers.
15
+ * Provides validation, policy enforcement, and guarded event emission at execute time.
16
+ */
17
+ declare class SpecRegistry {
18
+ private specs;
19
+ private handlers;
20
+ /**
21
+ * Registers a ContractSpec definition.
22
+ *
23
+ * @param spec - The contract specification to register.
24
+ * @returns The registry instance for chaining.
25
+ * @throws If a spec with the same name and version is already registered.
26
+ */
27
+ register<I extends AnySchemaModel, O extends AnySchemaModel | ResourceRefDescriptor<boolean>>(spec: ContractSpec<I, O>): this;
28
+ /**
29
+ * Binds a runtime handler implementation to a previously registered spec.
30
+ *
31
+ * @param spec - The spec to bind to.
32
+ * @param handler - The async function implementing the business logic.
33
+ * @returns The registry instance for chaining.
34
+ * @throws If the spec is not found or a handler is already bound.
35
+ */
36
+ bind<I extends AnySchemaModel, O extends AnySchemaModel | ResourceRefDescriptor<boolean>>(spec: ContractSpec<I, O>, handler: HandlerFor<ContractSpec<I, O>>): this;
37
+ /**
38
+ * Retrieves a registered spec by name and version.
39
+ * If version is omitted, returns the highest version found.
40
+ *
41
+ * @param name - Operation name.
42
+ * @param version - (Optional) Specific version.
43
+ */
44
+ getSpec(name: string, version?: number): AnySpec | undefined;
45
+ /**
46
+ * Retrieves the bound handler for a spec.
47
+ */
48
+ getHandler(name: string, version?: number): AnyHandler | undefined;
49
+ /** Iterate all registered specs. */
50
+ listSpecs(): AnySpec[];
51
+ /** Iterate all bound operations (spec+handler). */
52
+ listBound(): {
53
+ spec: AnySpec;
54
+ handler: AnyHandler;
55
+ }[];
56
+ /**
57
+ * Execute an operation by name/version with full runtime protections:
58
+ * 1. Validates input against Zod schema.
59
+ * 2. Enforces policy (Auth, RBAC, Rate Limits) via PDP.
60
+ * 3. Guards event emission to ensure only declared events are sent.
61
+ * 4. Validates output against Zod schema (if applicable).
62
+ * 5. Tracks telemetry (success/failure).
63
+ *
64
+ * @param name - Operation name.
65
+ * @param version - Operation version (optional, defaults to latest).
66
+ * @param rawInput - The raw input payload (e.g. from JSON body).
67
+ * @param ctx - The runtime context (actor, tenant, etc.).
68
+ */
69
+ execute(name: string, version: number | undefined, rawInput: unknown, ctx: HandlerCtx): Promise<unknown>;
70
+ }
71
+ //#endregion
72
+ export { OperationKey, SpecRegistry, opKey };
73
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","names":[],"sources":["../src/registry.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAyBe,KANH,YAAA,GAMG,GAAA,MAAA,KAAA,MAAA,EAAA;AAAY,iBAJX,KAAA,CAIW,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAJ2B,YAI3B;AAAA,KAAtB,OAAA,GAAU,YAIA,CAHb,cAGgD,EAFhD,cAEuD,GAFtC,qBAEsC,CAAA,OAAA,CAAA,CAAA;AAMzD,KANK,UAAA,GAMQ,CAAY,IAAA,EAAA,GAAA,EAAA,GAAA,EANU,UAMV,EAAA,GANyB,OAMzB,CAAA,OAAA,CAAA;;;;;AAcC,cAdb,YAAA,CAca;EAAhB,QAAA,KAAA;EAgBI,QAAA,QAAA;EACA;;;;;;;EACoC,QAAA,CAAA,UApBpC,cAoBoC,EAAA,UAnBpC,cAmBoC,GAnBnB,qBAmBmB,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,EAlBxC,YAkBwC,CAlB3B,CAkB2B,EAlBxB,CAkBwB,CAAA,CAAA,EAAA,IAAA;EAAX;;;;;;;;EA2E3B,IAAA,CAAA,UA7EE,cA6EF,EAAA,UA5EE,cA4EF,GA5EmB,qBA4EnB,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,EA3EF,YA2EE,CA3EW,CA2EX,EA3Ec,CA2Ed,CAAA,EAAA,OAAA,EA3E2B,UA2E3B,CA3EsC,YA2EtC,CA3EmD,CA2EnD,EA3EsD,CA2EtD,CAAA,CAAA,CAAA,EAAA,IAAA;;;;;;;;2CAzD+B;;;;8CAkBG;;eAO/B;;;UAKQ;aAAkB;;;;;;;;;;;;;;;6EA0BhC,aACJ"}
@@ -0,0 +1,2 @@
1
+ import{eventKey as e}from"./events.js";import{isEmitDeclRef as t}from"./spec.js";function n(e,t){return`${e}.v${t}`}var r=class{specs=new Map;handlers=new Map;register(e){let t=n(e.meta.name,e.meta.version);if(this.specs.has(t))throw Error(`Duplicate spec ${t}`);return this.specs.set(t,e),this}bind(e,t){let r=n(e.meta.name,e.meta.version);if(!this.specs.has(r))throw Error(`Cannot bind; spec not found: ${r}`);if(this.handlers.has(r))throw Error(`Handler already bound for ${r}`);return this.handlers.set(r,t),this}getSpec(e,t){if(t!=null)return this.specs.get(n(e,t));let r,i=-1/0;for(let[t,n]of this.specs.entries())t.startsWith(`${e}.v`)&&n.meta.version>i&&(i=n.meta.version,r=n);return r}getHandler(e,t){let r=this.getSpec(e,t);if(r)return this.handlers.get(n(r.meta.name,r.meta.version))}listSpecs(){return[...this.specs.values()]}listBound(){let e=[];for(let[t,n]of this.specs.entries()){let r=this.handlers.get(t);r&&e.push({spec:n,handler:r})}return e}async execute(r,i,a,o){let s=this.getSpec(r,i);if(!s)throw Error(`Spec not found for ${r}${i?`.v${i}`:``}`);let c=n(s.meta.name,s.meta.version),l=this.handlers.get(c);if(!l)throw Error(`No handler bound for ${c}`);let u=s.io.input?.getZod().parse(a);if(o.decide){let[e,t]=s.meta.name.split(`.`),n=await o.decide({service:e,command:t,version:s.meta.version,actor:o.actor??`anonymous`,channel:o.channel,roles:o.roles,organizationId:o.organizationId,userId:o.userId,flags:[]});if(n.effect===`deny`)throw Error(`PolicyDenied: ${s.meta.name}.v${s.meta.version}`);if(n.rateLimit&&o.rateLimit){let e=n.rateLimit.key??`default`,t=n.rateLimit.rpm??60;await o.rateLimit(e,1,t)}}let d=new Map;if(s.sideEffects?.emits)for(let e of s.sideEffects.emits)t(e)?d.set(`${e.ref.name}.v${e.ref.version}`,e.ref.payload):d.set(`${e.name}.v${e.version}`,e.payload);let f=async(t,r,i)=>{let a=e(t,r),c=d.get(a);if(!c)throw Error(`UndeclaredEvent: ${a} not allowed by ${n(s.meta.name,s.meta.version)}`);let l=c.getZod().parse(i);await o.eventPublisher?.({name:t,version:r,payload:l,traceId:o.traceId})};o.appConfig&&(o.branding||=o.appConfig.branding,o.translation?o.translation.config||(o.translation={...o.translation,config:o.appConfig.translation}):o.translation={config:o.appConfig.translation});let p=o.telemetry,m=async(e,t)=>{if(!(!p||!e?.event))try{let n=e.properties?.(t)??{};await p.track(e.event.name,e.event.version??1,n,{tenantId:o.organizationId??void 0,organizationId:o.organizationId,userId:o.userId,actor:o.actor,channel:o.channel,metadata:o.traceId?{traceId:o.traceId}:void 0})}catch{}},h;try{h=await l(u,{...o,__emitGuard__:f})}catch(e){throw s.telemetry?.failure&&await m(s.telemetry.failure,{input:u??a,error:e}),e}s.telemetry?.success&&await m(s.telemetry.success,{input:u??a,output:h});let g=s.io.output;return g?.getZod?g.getZod().parse(h):h}};export{r as SpecRegistry,n as opKey};
2
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","names":["key: OperationKey","found: AnySpec | undefined","out: { spec: AnySpec; handler: AnyHandler }[]","key","result: unknown"],"sources":["../src/registry.ts"],"sourcesContent":["/**\n * SpecRegistry:\n * - Registers ContractSpecs (unique by name+version)\n * - Binds runtime handlers to specs\n * - Provides lookup, iteration, and a safe execute() with validation/policy/enforcement\n *\n * Includes a minimal OpRegistry shim for backward-compat (deprecated).\n */\nimport {\n type ContractSpec,\n type TelemetryTrigger,\n isEmitDeclRef,\n} from './spec';\nimport type { ResourceRefDescriptor } from './resources';\nimport type { HandlerCtx } from './types';\nimport { eventKey } from './events';\nimport type { AnySchemaModel, ZodSchemaModel } from '@lssm/lib.schema';\nimport type { HandlerFor } from './install';\n\nexport type OperationKey = `${string}.v${number}`;\n\nexport function opKey(name: string, version: number): OperationKey {\n return `${name}.v${version}`;\n}\n\ntype AnySpec = ContractSpec<\n AnySchemaModel,\n AnySchemaModel | ResourceRefDescriptor<boolean>\n>;\ntype AnyHandler = (args: any, ctx: HandlerCtx) => Promise<unknown>;\n\n/**\n * In-memory registry for ContractSpecs and their bound handlers.\n * Provides validation, policy enforcement, and guarded event emission at execute time.\n */\nexport class SpecRegistry {\n private specs = new Map<OperationKey, AnySpec>();\n private handlers = new Map<OperationKey, AnyHandler>();\n\n /**\n * Registers a ContractSpec definition.\n *\n * @param spec - The contract specification to register.\n * @returns The registry instance for chaining.\n * @throws If a spec with the same name and version is already registered.\n */\n register<\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n >(spec: ContractSpec<I, O>): this {\n const key = opKey(spec.meta.name, spec.meta.version);\n if (this.specs.has(key)) throw new Error(`Duplicate spec ${key}`);\n this.specs.set(key, spec as AnySpec);\n return this;\n }\n\n /**\n * Binds a runtime handler implementation to a previously registered spec.\n *\n * @param spec - The spec to bind to.\n * @param handler - The async function implementing the business logic.\n * @returns The registry instance for chaining.\n * @throws If the spec is not found or a handler is already bound.\n */\n bind<\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n >(spec: ContractSpec<I, O>, handler: HandlerFor<ContractSpec<I, O>>): this {\n const key: OperationKey = opKey(spec.meta.name, spec.meta.version);\n\n if (!this.specs.has(key))\n throw new Error(`Cannot bind; spec not found: ${key}`);\n if (this.handlers.has(key))\n throw new Error(`Handler already bound for ${key}`);\n this.handlers.set(key, handler);\n return this;\n }\n\n /**\n * Retrieves a registered spec by name and version.\n * If version is omitted, returns the highest version found.\n *\n * @param name - Operation name.\n * @param version - (Optional) Specific version.\n */\n getSpec(name: string, version?: number): AnySpec | undefined {\n if (version != null) return this.specs.get(opKey(name, version));\n // find highest version by scanning keys of the same name\n let found: AnySpec | undefined;\n let maxV = -Infinity;\n for (const [k, s] of this.specs.entries()) {\n if (!k.startsWith(`${name}.v`)) continue;\n if (s.meta.version > maxV) {\n maxV = s.meta.version;\n found = s;\n }\n }\n return found;\n }\n\n /**\n * Retrieves the bound handler for a spec.\n */\n getHandler(name: string, version?: number): AnyHandler | undefined {\n const spec = this.getSpec(name, version);\n if (!spec) return undefined;\n return this.handlers.get(opKey(spec.meta.name, spec.meta.version));\n }\n\n /** Iterate all registered specs. */\n listSpecs(): AnySpec[] {\n return [...this.specs.values()];\n }\n\n /** Iterate all bound operations (spec+handler). */\n listBound(): { spec: AnySpec; handler: AnyHandler }[] {\n const out: { spec: AnySpec; handler: AnyHandler }[] = [];\n for (const [k, spec] of this.specs.entries()) {\n const h = this.handlers.get(k);\n if (h) out.push({ spec, handler: h });\n }\n return out;\n }\n\n /**\n * Execute an operation by name/version with full runtime protections:\n * 1. Validates input against Zod schema.\n * 2. Enforces policy (Auth, RBAC, Rate Limits) via PDP.\n * 3. Guards event emission to ensure only declared events are sent.\n * 4. Validates output against Zod schema (if applicable).\n * 5. Tracks telemetry (success/failure).\n *\n * @param name - Operation name.\n * @param version - Operation version (optional, defaults to latest).\n * @param rawInput - The raw input payload (e.g. from JSON body).\n * @param ctx - The runtime context (actor, tenant, etc.).\n */\n async execute(\n name: string,\n version: number | undefined,\n rawInput: unknown,\n ctx: HandlerCtx\n ): Promise<unknown> {\n const spec = this.getSpec(name, version);\n if (!spec)\n throw new Error(\n `Spec not found for ${name}${version ? `.v${version}` : ''}`\n );\n\n const key = opKey(spec.meta.name, spec.meta.version);\n const handler = this.handlers.get(key);\n if (!handler) throw new Error(`No handler bound for ${key}`);\n\n // 1) Validate input\n const parsedInput = spec.io.input?.getZod().parse(rawInput);\n\n // 2) Policy enforcement\n if (ctx.decide) {\n const [service, command] = spec.meta.name.split('.');\n const decision = await ctx.decide({\n service: service!,\n command: command!,\n version: spec.meta.version,\n actor: ctx.actor ?? 'anonymous',\n channel: ctx.channel,\n roles: ctx.roles,\n organizationId: ctx.organizationId,\n userId: ctx.userId,\n flags: [], // adapter may fill flags from request\n });\n if (decision.effect === 'deny') {\n throw new Error(\n `PolicyDenied: ${spec.meta.name}.v${spec.meta.version}`\n );\n }\n if (decision.rateLimit && ctx.rateLimit) {\n const key = decision.rateLimit.key ?? 'default';\n const rpm = decision.rateLimit.rpm ?? 60;\n await ctx.rateLimit(key, 1, rpm);\n }\n // escalations are advisory; adapter may short-circuit if needed\n }\n\n // 3) Event emission guard\n const allowedEvents = new Map<string, AnySchemaModel>();\n if (spec.sideEffects?.emits) {\n for (const e of spec.sideEffects.emits) {\n if (isEmitDeclRef(e)) {\n allowedEvents.set(`${e.ref.name}.v${e.ref.version}`, e.ref.payload);\n } else {\n allowedEvents.set(`${e.name}.v${e.version}`, e.payload);\n }\n }\n }\n\n const emitGuard = async (\n eventName: string,\n eventVersion: number,\n payload: unknown\n ) => {\n const key2 = eventKey(eventName, eventVersion);\n const schema = allowedEvents.get(key2);\n if (!schema)\n throw new Error(\n `UndeclaredEvent: ${key2} not allowed by ${opKey(spec.meta.name, spec.meta.version)}`\n );\n const parsed = schema.getZod().parse(payload);\n // Delegate to service publisher if present\n await ctx.eventPublisher?.({\n name: eventName,\n version: eventVersion,\n payload: parsed,\n traceId: ctx.traceId,\n });\n };\n\n // 4) Execute handler with guarded ctx\n if (ctx.appConfig) {\n if (!ctx.branding) {\n ctx.branding = ctx.appConfig.branding;\n }\n if (!ctx.translation) {\n ctx.translation = { config: ctx.appConfig.translation };\n } else if (!ctx.translation.config) {\n ctx.translation = {\n ...ctx.translation,\n config: ctx.appConfig.translation,\n };\n }\n }\n const telemetryContext = ctx.telemetry;\n const trackTelemetry = async (\n trigger: TelemetryTrigger | undefined,\n details: { input: unknown; output?: unknown; error?: unknown }\n ) => {\n if (!telemetryContext || !trigger?.event) return;\n try {\n const props = trigger.properties?.(details) ?? {};\n await telemetryContext.track(\n trigger.event.name,\n trigger.event.version ?? 1,\n props,\n {\n tenantId: ctx.organizationId ?? undefined,\n organizationId: ctx.organizationId,\n userId: ctx.userId,\n actor: ctx.actor,\n channel: ctx.channel,\n metadata: ctx.traceId ? { traceId: ctx.traceId } : undefined,\n }\n );\n } catch (_error) {\n // Best-effort telemetry: swallow errors to avoid breaking the handler.\n }\n };\n\n let result: unknown;\n try {\n result = await handler(parsedInput, {\n ...ctx,\n __emitGuard__: emitGuard,\n });\n } catch (error) {\n if (spec.telemetry?.failure) {\n await trackTelemetry(spec.telemetry.failure, {\n input: parsedInput ?? rawInput,\n error,\n });\n }\n throw error;\n }\n\n if (spec.telemetry?.success) {\n await trackTelemetry(spec.telemetry.success, {\n input: parsedInput ?? rawInput,\n output: result,\n });\n }\n\n // 5) Validate output when the spec declares a SchemaModel output.\n const outputModel = spec.io.output as\n | AnySchemaModel\n | ResourceRefDescriptor<boolean>;\n if ((outputModel as AnySchemaModel)?.getZod) {\n const parsedOutput = (outputModel as AnySchemaModel)\n .getZod()\n .parse(result);\n return parsedOutput;\n }\n // ResourceRefDescriptor path: adapter may hydrate entity; leave as-is\n return result;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { Tag } from "./ownership.js";
2
+ import { z } from "zod";
3
+
4
+ //#region src/resources.d.ts
5
+ interface ResourceMeta {
6
+ /** URI scheme, e.g. "content://doc/{id}" or "marketplace://offers/{city}/{tag}" */
7
+ uriTemplate: string;
8
+ /** Human title for discovery */
9
+ title: string;
10
+ /** Short description */
11
+ description?: string;
12
+ /** MIME type for resource body */
13
+ mimeType: string;
14
+ /** Tags for filtering/grouping */
15
+ tags?: Tag[];
16
+ }
17
+ interface ResourceTemplateSpec<I extends z.ZodType> {
18
+ meta: ResourceMeta;
19
+ /** Arguments to materialize the URI (zod validates input) */
20
+ input: I;
21
+ /**
22
+ * Resolve returns the resource body and a resolved URI.
23
+ * It MUST be read-only (no side effects).
24
+ */
25
+ resolve: (args: z.infer<I>, ctx: {
26
+ userId?: string | null;
27
+ orgId?: string | null;
28
+ locale?: string;
29
+ }) => Promise<{
30
+ uri: string;
31
+ mimeType?: string;
32
+ data: Uint8Array | string;
33
+ }>;
34
+ }
35
+ declare function defineResourceTemplate<I extends z.ZodType>(spec: ResourceTemplateSpec<I>): ResourceTemplateSpec<I>;
36
+ declare class ResourceRegistry {
37
+ private templates;
38
+ register<I extends z.ZodType>(tmpl: ResourceTemplateSpec<I>): this;
39
+ listTemplates(): ResourceTemplateSpec<any>[];
40
+ /** Try to match a concrete URI to a template by naive pattern substitution */
41
+ match(uri: string): {
42
+ tmpl: ResourceTemplateSpec<any>;
43
+ params: Record<string, string>;
44
+ } | undefined;
45
+ }
46
+ interface ResourceRefDescriptor<Many extends boolean> {
47
+ kind: 'resource_ref';
48
+ /** URI template, e.g. 'strit://spot/{id}' */
49
+ uriTemplate: string;
50
+ /** Variable name inside result payload to substitute into template; defaults to 'id' */
51
+ varName?: string;
52
+ /** Optional GraphQL type name to use when exposing over GraphQL (e.g., 'Spot') */
53
+ graphQLType: string;
54
+ /** Cardinality: when present and true, the handler returns an array of resources */
55
+ many: Many;
56
+ }
57
+ declare function resourceRef<Many extends boolean>(uriTemplate: string, opts: {
58
+ varName?: string;
59
+ graphQLType: string;
60
+ many: Many;
61
+ }): ResourceRefDescriptor<Many>;
62
+ declare function isResourceRef(x: unknown): x is ResourceRefDescriptor<boolean>;
63
+ //#endregion
64
+ export { ResourceMeta, ResourceRefDescriptor, ResourceRegistry, ResourceTemplateSpec, defineResourceTemplate, isResourceRef, resourceRef };
65
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","names":[],"sources":["../src/resources.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,YAAA;;EAAA,WAAA,EAAA,MAAY;EAaZ;EAAiC,KAAA,EAAA,MAAA;EAC1C;EAEC,WAAA,CAAA,EAAA,MAAA;EAMS;EAAN,QAAA,EAAA,MAAA;EAE2C;EAAhD,IAAA,CAAA,EAdE,GAcF,EAAA;;AAGS,UAdC,oBAcqB,CAAA,UAdU,CAAA,CAAE,OAcZ,CAAA,CAAA;EAAa,IAAA,EAb3C,YAa2C;EACtB;EAArB,KAAA,EAZC,CAYD;EACgB;;;AAIxB;EAGuB,OAAA,EAAA,CAAA,IAAA,EAdb,CAAA,CAAE,KAcW,CAdL,CAcK,CAAA,EAAA,GAAA,EAAA;IAAoC,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAArB,KAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAKvB,MAAA,CAAA,EAAA,MAAA;EASD,CAAA,EAAA,GA1BP,OA0BO,CAAA;IAAmC,GAAA,EAAA,MAAA;IAAM,QAAA,CAAA,EAAA,MAAA;IAoBtC,IAAA,EA9CsC,UA8CtC,GAAA,MAAqB;EAYtB,CAAA,CAAA;;AAGS,iBA1DT,sBA0DS,CAAA,UA1DwB,CAAA,CAAE,OA0D1B,CAAA,CAAA,IAAA,EAzDjB,oBAyDiB,CAzDI,CAyDJ,CAAA,CAAA,EAxDtB,oBAwDsB,CAxDD,CAwDC,CAAA;AAAtB,cApDU,gBAAA,CAoDV;EAAqB,QAAA,SAAA;EAUR,QAAA,CAAA,UA3DK,CAAA,CAAE,OA2DM,CAAmB,CAAA,IAAA,EA3DV,oBA2D+B,CA3DV,CA2DU,CAAA,CAAA,EAAA,IAAA;mBAtDtD;;;UASD;YAAmC;;;UAoBhC;;;;;;;;;QAST;;iBAGQ;;;QAEuC;IACpD,sBAAsB;iBAUT,aAAA,mBAAgC"}
@@ -0,0 +1,2 @@
1
+ import{z as e}from"zod";function t(e){return e}var n=class{templates=[];register(e){return this.templates.push(e),this}listTemplates(){return[...this.templates]}match(e){for(let t of this.templates){let n=RegExp(`^`+t.meta.uriTemplate.replace(/\{[^}]+\}/g,`([^/]+)`)+`$`),r=e.match(n);if(!r)continue;let i=[...t.meta.uriTemplate.matchAll(/\{([^}]+)\}/g)].map(e=>e[1]),a={};return i.forEach((e,t)=>a[e]=decodeURIComponent(r[t+1])),{tmpl:t,params:a}}}};function r(e,t){return{kind:`resource_ref`,uriTemplate:e,varName:t.varName??`id`,graphQLType:t.graphQLType,many:t.many}}function i(e){let t=e;return!!t&&t.kind===`resource_ref`&&typeof t.uriTemplate==`string`}export{n as ResourceRegistry,t as defineResourceTemplate,i as isResourceRef,r as resourceRef};
2
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","names":["params: Record<string, string>"],"sources":["../src/resources.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { Tag } from './ownership';\n\nexport interface ResourceMeta {\n /** URI scheme, e.g. \"content://doc/{id}\" or \"marketplace://offers/{city}/{tag}\" */\n uriTemplate: string;\n /** Human title for discovery */\n title: string;\n /** Short description */\n description?: string;\n /** MIME type for resource body */\n mimeType: string; // e.g., \"application/json\" | \"text/markdown\"\n /** Tags for filtering/grouping */\n tags?: Tag[];\n}\n\nexport interface ResourceTemplateSpec<I extends z.ZodType> {\n meta: ResourceMeta;\n /** Arguments to materialize the URI (zod validates input) */\n input: I;\n /**\n * Resolve returns the resource body and a resolved URI.\n * It MUST be read-only (no side effects).\n */\n resolve: (\n args: z.infer<I>,\n ctx: { userId?: string | null; orgId?: string | null; locale?: string }\n ) => Promise<{ uri: string; mimeType?: string; data: Uint8Array | string }>;\n}\n\nexport function defineResourceTemplate<I extends z.ZodType>(\n spec: ResourceTemplateSpec<I>\n): ResourceTemplateSpec<I> {\n return spec;\n}\n\nexport class ResourceRegistry {\n private templates: ResourceTemplateSpec<any>[] = [];\n\n register<I extends z.ZodType>(tmpl: ResourceTemplateSpec<I>): this {\n this.templates.push(tmpl);\n return this;\n }\n\n listTemplates() {\n return [...this.templates];\n }\n\n /** Try to match a concrete URI to a template by naive pattern substitution */\n // MVP: simple matcher; replace {param} with (.+) and capture\n match(\n uri: string\n ):\n | { tmpl: ResourceTemplateSpec<any>; params: Record<string, string> }\n | undefined {\n for (const tmpl of this.templates) {\n const re = new RegExp(\n '^' + tmpl.meta.uriTemplate.replace(/\\{[^}]+\\}/g, '([^/]+)') + '$'\n );\n const m = uri.match(re);\n if (!m) continue;\n const names = [...tmpl.meta.uriTemplate.matchAll(/\\{([^}]+)\\}/g)].map(\n (x) => x[1]\n );\n const params: Record<string, string> = {};\n names.forEach((n, i) => (params[n!] = decodeURIComponent(m[i + 1]!)));\n return { tmpl, params };\n }\n return undefined;\n }\n}\n\n// ResourceRef (output descriptor for ContractSpecs)\nexport interface ResourceRefDescriptor<Many extends boolean> {\n kind: 'resource_ref';\n /** URI template, e.g. 'strit://spot/{id}' */\n uriTemplate: string;\n /** Variable name inside result payload to substitute into template; defaults to 'id' */\n varName?: string;\n /** Optional GraphQL type name to use when exposing over GraphQL (e.g., 'Spot') */\n graphQLType: string;\n /** Cardinality: when present and true, the handler returns an array of resources */\n many: Many;\n}\n\nexport function resourceRef<Many extends boolean>(\n uriTemplate: string,\n opts: { varName?: string; graphQLType: string; many: Many }\n): ResourceRefDescriptor<Many> {\n return {\n kind: 'resource_ref',\n uriTemplate,\n varName: opts.varName ?? 'id',\n graphQLType: opts.graphQLType,\n many: opts.many,\n };\n}\n\nexport function isResourceRef(x: unknown): x is ResourceRefDescriptor<boolean> {\n const o = x as any;\n return !!o && o.kind === 'resource_ref' && typeof o.uriTemplate === 'string';\n}\n"],"mappings":"wBA8BA,SAAgB,EACd,EACyB,CACzB,OAAO,EAGT,IAAa,EAAb,KAA8B,CAC5B,UAAiD,EAAE,CAEnD,SAA8B,EAAqC,CAEjE,OADA,KAAK,UAAU,KAAK,EAAK,CAClB,KAGT,eAAgB,CACd,MAAO,CAAC,GAAG,KAAK,UAAU,CAK5B,MACE,EAGY,CACZ,IAAK,IAAM,KAAQ,KAAK,UAAW,CACjC,IAAM,EAAS,OACb,IAAM,EAAK,KAAK,YAAY,QAAQ,aAAc,UAAU,CAAG,IAChE,CACK,EAAI,EAAI,MAAM,EAAG,CACvB,GAAI,CAAC,EAAG,SACR,IAAM,EAAQ,CAAC,GAAG,EAAK,KAAK,YAAY,SAAS,eAAe,CAAC,CAAC,IAC/D,GAAM,EAAE,GACV,CACKA,EAAiC,EAAE,CAEzC,OADA,EAAM,SAAS,EAAG,IAAO,EAAO,GAAM,mBAAmB,EAAE,EAAI,GAAI,CAAE,CAC9D,CAAE,OAAM,SAAQ,IAmB7B,SAAgB,EACd,EACA,EAC6B,CAC7B,MAAO,CACL,KAAM,eACN,cACA,QAAS,EAAK,SAAW,KACzB,YAAa,EAAK,YAClB,KAAM,EAAK,KACZ,CAGH,SAAgB,EAAc,EAAiD,CAC7E,IAAM,EAAI,EACV,MAAO,CAAC,CAAC,GAAK,EAAE,OAAS,gBAAkB,OAAO,EAAE,aAAgB"}
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";import"graphql";
@@ -0,0 +1,2 @@
1
+ import{z as e}from"zod";import{GraphQLScalarType as t,Kind as n}from"graphql";var r=class extends t{zodSchema;jsonSchemaDef;constructor(e){super(e),this.zodSchema=e.zod,this.jsonSchemaDef=e.jsonSchema}getZod(){return this.zodSchema}getPothos(){return this}getJson(){return typeof this.jsonSchemaDef==`function`?this.jsonSchemaDef():this.jsonSchemaDef}getJsonSchemaDef(){return this.jsonSchemaDef}getJsonSchema(){let e=t=>{let n=typeof t==`function`?t():t;if(Array.isArray(n))return n.map(t=>e(t));if(n&&typeof n==`object`){let t={};for(let[r,i]of Object.entries(n))t[r]=e(i);return t}return n};return e(this.getJson())}};export{r};
2
+ //# sourceMappingURL=FieldType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldType.js","names":["t","r"],"sources":["../../../../schema/dist/FieldType.js"],"sourcesContent":["import{z as e}from\"zod\";import{GraphQLScalarType as t,Kind as n}from\"graphql\";var r=class extends t{zodSchema;jsonSchemaDef;constructor(e){super(e),this.zodSchema=e.zod,this.jsonSchemaDef=e.jsonSchema}getZod(){return this.zodSchema}getPothos(){return this}getJson(){return typeof this.jsonSchemaDef==`function`?this.jsonSchemaDef():this.jsonSchemaDef}getJsonSchemaDef(){return this.jsonSchemaDef}getJsonSchema(){let e=t=>{let n=typeof t==`function`?t():t;if(Array.isArray(n))return n.map(t=>e(t));if(n&&typeof n==`object`){let t={};for(let[r,i]of Object.entries(n))t[r]=e(i);return t}return n};return e(this.getJson())}};export{r as FieldType};\n//# sourceMappingURL=FieldType.js.map"],"mappings":"8EAA8E,IAAI,EAAE,cAAcA,CAAC,CAAC,UAAU,cAAc,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,UAAU,EAAE,IAAI,KAAK,cAAc,EAAE,WAAW,QAAQ,CAAC,OAAO,KAAK,UAAU,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,OAAO,KAAK,eAAe,WAAW,KAAK,eAAe,CAAC,KAAK,cAAc,kBAAkB,CAAC,OAAO,KAAK,cAAc,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,EAAEA,EAAE,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,SAAS,CAAC,IAAIA,EAAE,EAAE,CAAC,IAAI,GAAG,CAACC,EAAE,KAAK,OAAO,QAAQ,EAAE,CAAC,EAAEA,GAAG,EAAE,EAAE,CAAC,OAAOD,EAAE,OAAO,GAAG,OAAO,EAAE,KAAK,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./FieldType.js";import{z as t}from"zod";import{Kind as n}from"graphql";const r=/^[A-Za-z]{2}(?:-[A-Za-z0-9]{2,8})*$/,i=/^(?:UTC|[A-Za-z_]+\/[A-Za-z_]+)$/,a=/^[+]?\d[\d\s().-]{3,}$/,o=/^[A-Z]{3}$/,s=/^[A-Z]{2}$/,c=-180,l={String_unsecure:()=>new e({name:`String_unsecure`,description:`Unvalidated string scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),Int_unsecure:()=>new e({name:`Int_unsecure`,description:`Unvalidated integer scalar`,zod:t.number().int(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().int().parse(n)},serialize:e=>Math.trunc(typeof e==`number`?e:Number(e)),parseLiteral:e=>{if(e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`integer`}}),Float_unsecure:()=>new e({name:`Float_unsecure`,description:`Unvalidated float scalar`,zod:t.number(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().parse(n)},serialize:e=>Number(e),parseLiteral:e=>{if(e.kind!==n.FLOAT&&e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`number`}}),Boolean:()=>new e({name:`Boolean`,description:`Unvalidated boolean scalar`,zod:t.boolean(),parseValue:e=>t.coerce.boolean().parse(e),serialize:e=>!!e,parseLiteral:e=>{if(e.kind!==n.BOOLEAN)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`boolean`}}),ID:()=>new e({name:`ID`,description:`Unvalidated id scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),JSON:()=>new e({name:`JSON`,zod:t.any(),parseValue:e=>e,serialize:e=>e,jsonSchema:{}}),JSONObject:()=>new e({name:`JSONObject`,zod:t.record(t.string(),t.any()),parseValue:e=>t.record(t.string(),t.any()).parse(e),serialize:e=>e??{},jsonSchema:{type:`object`}}),Date:()=>new e({name:`Date`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString().split(`T`)[0]:String(e),jsonSchema:{type:`string`,format:`date`}}),DateTime:()=>new e({name:`DateTime`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString():String(e),jsonSchema:{type:`string`,format:`date-time`}}),Time:()=>new e({name:`Time`,zod:t.string().regex(/^\d{2}:\d{2}(:\d{2})?$/),parseValue:e=>t.string().regex(/^\d{2}:\d{2}(:\d{2})?$/).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:`^\\d{2}:\\d{2}(:\\d{2})?$`}}),EmailAddress:()=>new e({name:`EmailAddress`,zod:t.string().email(),parseValue:e=>t.string().email().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`email`}}),URL:()=>new e({name:`URL`,zod:t.string().url(),parseValue:e=>t.string().url().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`uri`}}),PhoneNumber:()=>new e({name:`PhoneNumber`,zod:t.string().regex(a),parseValue:e=>t.string().regex(a).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:a.source}}),NonEmptyString:()=>new e({name:`NonEmptyString`,zod:t.string().min(1),parseValue:e=>t.string().min(1).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,minLength:1}}),Locale:()=>new e({name:`Locale`,zod:t.string().regex(r),parseValue:e=>t.string().regex(r).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:r.source}}),TimeZone:()=>new e({name:`TimeZone`,zod:t.string().regex(i),parseValue:e=>t.string().regex(i).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:i.source}}),Latitude:()=>new e({name:`Latitude`,zod:t.number().min(-90).max(90),parseValue:e=>t.coerce.number().min(-90).max(90).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:-90,maximum:90}}),Longitude:()=>new e({name:`Longitude`,zod:t.number().min(c).max(180),parseValue:e=>t.coerce.number().min(c).max(180).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:c,maximum:180}}),Currency:()=>new e({name:`Currency`,zod:t.string().regex(o),parseValue:e=>t.string().regex(o).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:o.source}}),CountryCode:()=>new e({name:`CountryCode`,zod:t.string().regex(s),parseValue:e=>t.string().regex(s).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:s.source}})};export{l};
2
+ //# sourceMappingURL=ScalarTypeEnum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScalarTypeEnum.js","names":["r","e","t","n"],"sources":["../../../../schema/dist/ScalarTypeEnum.js"],"sourcesContent":["import{FieldType as e}from\"./FieldType.js\";import{z as t}from\"zod\";import{Kind as n}from\"graphql\";const r=/^[A-Za-z]{2}(?:-[A-Za-z0-9]{2,8})*$/,i=/^(?:UTC|[A-Za-z_]+\\/[A-Za-z_]+)$/,a=/^[+]?\\d[\\d\\s().-]{3,}$/,o=/^[A-Z]{3}$/,s=/^[A-Z]{2}$/,c=-180,l={String_unsecure:()=>new e({name:`String_unsecure`,description:`Unvalidated string scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),Int_unsecure:()=>new e({name:`Int_unsecure`,description:`Unvalidated integer scalar`,zod:t.number().int(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().int().parse(n)},serialize:e=>Math.trunc(typeof e==`number`?e:Number(e)),parseLiteral:e=>{if(e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`integer`}}),Float_unsecure:()=>new e({name:`Float_unsecure`,description:`Unvalidated float scalar`,zod:t.number(),parseValue:e=>{let n=typeof e==`number`?e:Number(e);return t.number().parse(n)},serialize:e=>Number(e),parseLiteral:e=>{if(e.kind!==n.FLOAT&&e.kind!==n.INT)throw TypeError(`Invalid literal`);return Number(e.value)},jsonSchema:{type:`number`}}),Boolean:()=>new e({name:`Boolean`,description:`Unvalidated boolean scalar`,zod:t.boolean(),parseValue:e=>t.coerce.boolean().parse(e),serialize:e=>!!e,parseLiteral:e=>{if(e.kind!==n.BOOLEAN)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`boolean`}}),ID:()=>new e({name:`ID`,description:`Unvalidated id scalar`,zod:t.string(),parseValue:e=>t.string().parse(e),serialize:e=>String(e),parseLiteral:e=>{if(e.kind!==n.STRING)throw TypeError(`Invalid literal`);return e.value},jsonSchema:{type:`string`}}),JSON:()=>new e({name:`JSON`,zod:t.any(),parseValue:e=>e,serialize:e=>e,jsonSchema:{}}),JSONObject:()=>new e({name:`JSONObject`,zod:t.record(t.string(),t.any()),parseValue:e=>t.record(t.string(),t.any()).parse(e),serialize:e=>e??{},jsonSchema:{type:`object`}}),Date:()=>new e({name:`Date`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString().split(`T`)[0]:String(e),jsonSchema:{type:`string`,format:`date`}}),DateTime:()=>new e({name:`DateTime`,zod:t.date(),parseValue:e=>e instanceof Date?e:new Date(String(e)),serialize:e=>e instanceof Date?e.toISOString():String(e),jsonSchema:{type:`string`,format:`date-time`}}),Time:()=>new e({name:`Time`,zod:t.string().regex(/^\\d{2}:\\d{2}(:\\d{2})?$/),parseValue:e=>t.string().regex(/^\\d{2}:\\d{2}(:\\d{2})?$/).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:`^\\\\d{2}:\\\\d{2}(:\\\\d{2})?$`}}),EmailAddress:()=>new e({name:`EmailAddress`,zod:t.string().email(),parseValue:e=>t.string().email().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`email`}}),URL:()=>new e({name:`URL`,zod:t.string().url(),parseValue:e=>t.string().url().parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,format:`uri`}}),PhoneNumber:()=>new e({name:`PhoneNumber`,zod:t.string().regex(a),parseValue:e=>t.string().regex(a).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:a.source}}),NonEmptyString:()=>new e({name:`NonEmptyString`,zod:t.string().min(1),parseValue:e=>t.string().min(1).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,minLength:1}}),Locale:()=>new e({name:`Locale`,zod:t.string().regex(r),parseValue:e=>t.string().regex(r).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:r.source}}),TimeZone:()=>new e({name:`TimeZone`,zod:t.string().regex(i),parseValue:e=>t.string().regex(i).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:i.source}}),Latitude:()=>new e({name:`Latitude`,zod:t.number().min(-90).max(90),parseValue:e=>t.coerce.number().min(-90).max(90).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:-90,maximum:90}}),Longitude:()=>new e({name:`Longitude`,zod:t.number().min(c).max(180),parseValue:e=>t.coerce.number().min(c).max(180).parse(e),serialize:e=>Number(e),jsonSchema:{type:`number`,minimum:c,maximum:180}}),Currency:()=>new e({name:`Currency`,zod:t.string().regex(o),parseValue:e=>t.string().regex(o).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:o.source}}),CountryCode:()=>new e({name:`CountryCode`,zod:t.string().regex(s),parseValue:e=>t.string().regex(s).parse(e),serialize:e=>String(e),jsonSchema:{type:`string`,pattern:s.source}})};export{l as ScalarTypeEnum};\n//# sourceMappingURL=ScalarTypeEnum.js.map"],"mappings":"0FAAkG,MAAMA,EAAE,sCAAsC,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,oBAAoB,IAAIC,EAAE,CAAC,KAAK,kBAAkB,YAAY,4BAA4B,IAAIC,EAAE,QAAQ,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,OAAOC,EAAE,OAAO,MAAM,UAAU,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,IAAIF,EAAE,CAAC,KAAK,eAAe,YAAY,6BAA6B,IAAIC,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,OAAOA,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,UAAU,GAAG,KAAK,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,OAAOC,EAAE,IAAI,MAAM,UAAU,kBAAkB,CAAC,OAAO,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,IAAIF,EAAE,CAAC,KAAK,iBAAiB,YAAY,2BAA2B,IAAIC,EAAE,QAAQ,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC,OAAOA,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,OAAOC,EAAE,OAAO,EAAE,OAAOA,EAAE,IAAI,MAAM,UAAU,kBAAkB,CAAC,OAAO,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,IAAIF,EAAE,CAAC,KAAK,UAAU,YAAY,6BAA6B,IAAIC,EAAE,SAAS,CAAC,WAAW,GAAGA,EAAE,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,GAAG,EAAE,OAAOC,EAAE,QAAQ,MAAM,UAAU,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,IAAIF,EAAE,CAAC,KAAK,KAAK,YAAY,wBAAwB,IAAIC,EAAE,QAAQ,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,OAAOC,EAAE,OAAO,MAAM,UAAU,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,IAAIF,EAAE,CAAC,KAAK,OAAO,IAAIC,EAAE,KAAK,CAAC,WAAW,GAAG,EAAE,UAAU,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,IAAID,EAAE,CAAC,KAAK,aAAa,IAAIC,EAAE,OAAOA,EAAE,QAAQ,CAACA,EAAE,KAAK,CAAC,CAAC,WAAW,GAAGA,EAAE,OAAOA,EAAE,QAAQ,CAACA,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,IAAID,EAAE,CAAC,KAAK,OAAO,IAAIC,EAAE,MAAM,CAAC,WAAW,GAAG,aAAa,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,UAAU,GAAG,aAAa,KAAK,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,OAAO,OAAO,CAAC,CAAC,CAAC,aAAa,IAAID,EAAE,CAAC,KAAK,WAAW,IAAIC,EAAE,MAAM,CAAC,WAAW,GAAG,aAAa,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,UAAU,GAAG,aAAa,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,OAAO,YAAY,CAAC,CAAC,CAAC,SAAS,IAAID,EAAE,CAAC,KAAK,OAAO,IAAIC,EAAE,QAAQ,CAAC,MAAM,yBAAyB,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,MAAM,yBAAyB,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,4BAA4B,CAAC,CAAC,CAAC,iBAAiB,IAAID,EAAE,CAAC,KAAK,eAAe,IAAIC,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAID,EAAE,CAAC,KAAK,MAAM,IAAIC,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,OAAO,MAAM,CAAC,CAAC,CAAC,gBAAgB,IAAID,EAAE,CAAC,KAAK,cAAc,IAAIC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,IAAID,EAAE,CAAC,KAAK,iBAAiB,IAAIC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,IAAID,EAAE,CAAC,KAAK,SAAS,IAAIC,EAAE,QAAQ,CAAC,MAAMF,EAAE,CAAC,WAAW,GAAGE,EAAE,QAAQ,CAAC,MAAMF,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQA,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,IAAIC,EAAE,CAAC,KAAK,WAAW,IAAIC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,IAAID,EAAE,CAAC,KAAK,WAAW,IAAIC,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,GAAGA,EAAE,OAAO,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,cAAc,IAAID,EAAE,CAAC,KAAK,YAAY,IAAIC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,GAAGA,EAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,aAAa,IAAID,EAAE,CAAC,KAAK,WAAW,IAAIC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,IAAID,EAAE,CAAC,KAAK,cAAc,IAAIC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAGA,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import"./EnumType.js";import"./FieldType.js";import{z as e}from"zod";var t=class{constructor(e){this.config=e}getZod(){let t=Object.entries(this.config.fields).reduce((t,[n,r])=>{let i=r.type.getZod(),a=r.isArray?e.array(i):i;return t[n]=r.isOptional?a.optional():a,t},{});return e.object(t)}getPothosInput(){return this.config.name}};export{t};
2
+ //# sourceMappingURL=SchemaModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaModel.js","names":["t","e"],"sources":["../../../../schema/dist/SchemaModel.js"],"sourcesContent":["import\"./EnumType.js\";import\"./FieldType.js\";import{z as e}from\"zod\";var t=class{constructor(e){this.config=e}getZod(){let t=Object.entries(this.config.fields).reduce((t,[n,r])=>{let i=r.type.getZod(),a=r.isArray?e.array(i):i;return t[n]=r.isOptional?a.optional():a,t},{});return e.object(t)}getPothosInput(){return this.config.name}};export{t as SchemaModel};\n//# sourceMappingURL=SchemaModel.js.map"],"mappings":"qEAAqE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,OAAO,EAAE,QAAQ,CAAC,IAAIA,EAAE,OAAO,QAAQ,KAAK,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,QAAQ,CAAC,EAAE,EAAE,QAAQC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAO,GAAE,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,EAAED,GAAG,EAAE,CAAC,CAAC,OAAOC,EAAE,OAAOD,EAAE,CAAC,gBAAgB,CAAC,OAAO,KAAK,OAAO"}
@@ -0,0 +1 @@
1
+ import"./EnumType.js";import{r as e}from"./FieldType.js";import{l as t}from"./ScalarTypeEnum.js";import{t as n}from"./SchemaModel.js";
@@ -0,0 +1,32 @@
1
+ import { ResourceRegistry } from "../resources.js";
2
+ import { SpecRegistry } from "../registry.js";
3
+ import "@pothos/plugin-prisma";
4
+ import "@pothos/plugin-complexity";
5
+ import "@pothos/plugin-relay";
6
+ import "@pothos/plugin-dataloader";
7
+ import "@pothos/plugin-tracing";
8
+ import { SchemaTypes } from "@pothos/core";
9
+
10
+ //#region src/server/graphql-pothos.d.ts
11
+
12
+ /**
13
+ * Registers all ContractSpecs from a SpecRegistry onto a Pothos SchemaBuilder.
14
+ *
15
+ * This adapter:
16
+ * 1. Discovers output types from specs and registers them as Pothos object types.
17
+ * 2. Maps `ContractSpec` inputs to Pothos input types.
18
+ * 3. Mounts `query` specs as `Query` fields and `command` specs as `Mutation` fields.
19
+ * 4. Wraps the resolver to:
20
+ * - Enforce auth policies (basic check).
21
+ * - Build a `HandlerCtx`.
22
+ * - Execute via `SpecRegistry`.
23
+ * - Hydrate resource references if applicable.
24
+ *
25
+ * @param builder - The Pothos SchemaBuilder instance.
26
+ * @param reg - The SpecRegistry containing operations.
27
+ * @param resources - (Optional) ResourceRegistry for hydrating resource references.
28
+ */
29
+ declare function registerContractsOnBuilder<T extends SchemaTypes>(builder: PothosSchemaTypes.SchemaBuilder<T>, reg: SpecRegistry, resources?: ResourceRegistry): void;
30
+ //#endregion
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"}
@@ -0,0 +1,2 @@
1
+ import{hydrateResourceIfNeeded as e,parseReturns as t}from"../contracts-adapter-hydration.js";import{createInputTypeBuilder as n}from"../contracts-adapter-input.js";import{defaultGqlField as r}from"../jsonschema.js";import"@pothos/plugin-prisma";import"@pothos/plugin-complexity";import"@pothos/plugin-relay";import"@pothos/plugin-dataloader";import"@pothos/plugin-tracing";function i(i,a,o){let{buildInputFieldArgs:s}=n(i),c=new Map;for(let e of a.listSpecs()){let t=e.io.output;if(t&&`getZod`in t&&typeof t.getZod==`function`){let e=t,n=e.config?.name??`UnknownOutput`;c.has(n)||c.set(n,e)}}for(let[e,t]of c.entries())i.objectType(e,{fields:e=>{let n=Object.entries(t.config.fields),r={};for(let[t,i]of n){let n=i.type,a=`JSON`;n&&typeof n.getPothos==`function`&&(a=n.getPothos().name||`JSON`,a===`String_unsecure`&&(a=`String`),a===`Int_unsecure`&&(a=`Int`),a===`Float_unsecure`&&(a=`Float`),a===`Boolean_unsecure`&&(a=`Boolean`),a===`ID_unsecure`&&(a=`ID`));let o=i.isArray?[a]:a;r[t]=e.field({type:o,nullable:i.isOptional,resolve:e=>e[t]})}return r}});function l(e){let t=e.transport?.gql?.returns;if(t)return t;let n=e.io.output??{};if(n&&`kind`in n&&n.kind===`resource_ref`&&`graphQLType`in n&&n.graphQLType)return String(n.graphQLType);if(n&&`getZod`in n&&typeof n.getZod==`function`){let e=n.config?.name;if(e&&c.has(e))return e}return`JSON`}for(let n of a.listSpecs()){let c=n.transport?.gql?.field??r(n.meta.name,n.meta.version);n.transport?.gql?.returns;let u=n.transport?.gql?.byIdField??`id`,d=n.transport?.gql?.resource,f=n.meta.kind===`query`,p=l(n),m=n.transport?.gql?.returns,h=t(m??p),g=async(t,r,i)=>{if(n.policy.auth!==`anonymous`&&!i.user)throw Error(`Unauthorized`);let s={traceId:i.logger?.getTraceId?.()??void 0,userId:i.user?.id??null,organizationId:i.session?.activeOrganizationId??null,actor:i.user?`user`:`anonymous`,channel:`web`,eventPublisher:i.eventPublisher},c=n.io.input?.getZod().parse(r.input??{}),l=await a.execute(n.meta.name,n.meta.version,c,s),f=n.io.output;if(o&&(d||f?.kind===`resource_ref`)){let t=u??f?.varName??`id`,n=await e(o,l,{template:d??f?.uriTemplate,varName:t,returns:h});if(n!==l)return n}return p?h.inner===`Boolean`&&!h.isList?!!(l?.ok??l):l:n.io.output.getZod().parse(l)},_=e=>{let t=s(n.io.input);return e.field({type:h.isList?[h.inner]:h.inner,complexity:()=>10,resolve:g,args:t?{input:e.arg({type:t,required:!0})}:void 0})};f?i.queryField(c,_):i.mutationField(c,_)}}export{i as registerContractsOnBuilder};
2
+ //# 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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"}
@@ -0,0 +1,7 @@
1
+ import { GraphQLSchema } from "graphql";
2
+
3
+ //#region src/server/graphql-schema-export.d.ts
4
+ declare const exportContractsToGraphQLSchema: (schema: GraphQLSchema, outputPathDir: string) => Promise<void>;
5
+ //#endregion
6
+ export { exportContractsToGraphQLSchema };
7
+ //# sourceMappingURL=graphql-schema-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-schema-export.d.ts","names":[],"sources":["../../src/server/graphql-schema-export.ts"],"sourcesContent":[],"mappings":";;;cAKa,yCACH,yCACa"}
@@ -0,0 +1,2 @@
1
+ "use server";import{t as e}from"../graphql-federation/dist/index.js";import{GraphQLSchema as t,printSchema as n}from"graphql";const r=async(t,r)=>{let i=await import(`fs`),a=await import(`path`),o=n(t),s=e(t),c=a.join(r,`../schema.graphql`),l=a.join(r,`../schema.subgraph.graphql`);i.writeFileSync(c,o),console.log(`Schema exported to ${c}`),i.writeFileSync(l,s),console.log(`Subgraph exported to ${l}`)};export{r as exportContractsToGraphQLSchema};
2
+ //# sourceMappingURL=graphql-schema-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-schema-export.js","names":["toSubgraphSDL"],"sources":["../../src/server/graphql-schema-export.ts"],"sourcesContent":["'use server';\n\nimport { GraphQLSchema, printSchema } from 'graphql';\nimport { toSubgraphSDL } from '@lssm/lib.graphql-federation';\n\nexport const exportContractsToGraphQLSchema = async (\n schema: GraphQLSchema,\n outputPathDir: string\n) => {\n const fs = await import('fs');\n const path = await import('path');\n\n const schemaString = printSchema(schema);\n const subgraphString = toSubgraphSDL(schema);\n const outputPath = path.join(outputPathDir, '../schema.graphql');\n const subgraphPath = path.join(outputPathDir, '../schema.subgraph.graphql');\n\n fs.writeFileSync(outputPath, schemaString);\n console.log(`Schema exported to ${outputPath}`);\n fs.writeFileSync(subgraphPath, subgraphString);\n console.log(`Subgraph exported to ${subgraphPath}`);\n};\n"],"mappings":"8HAKA,MAAa,EAAiC,MAC5C,EACA,IACG,CACH,IAAM,EAAK,MAAM,OAAO,MAClB,EAAO,MAAM,OAAO,QAEpB,EAAe,EAAY,EAAO,CAClC,EAAiBA,EAAc,EAAO,CACtC,EAAa,EAAK,KAAK,EAAe,oBAAoB,CAC1D,EAAe,EAAK,KAAK,EAAe,6BAA6B,CAE3E,EAAG,cAAc,EAAY,EAAa,CAC1C,QAAQ,IAAI,sBAAsB,IAAa,CAC/C,EAAG,cAAc,EAAc,EAAe,CAC9C,QAAQ,IAAI,wBAAwB,IAAe"}
@@ -0,0 +1,9 @@
1
+ import { registerContractsOnBuilder } from "./graphql-pothos.js";
2
+ import { exportContractsToGraphQLSchema } from "./graphql-schema-export.js";
3
+ import { createMcpServer } from "./provider-mcp.js";
4
+ import { RestOptions, createFetchHandler } from "./rest-generic.js";
5
+ import { elysiaPlugin } from "./rest-elysia.js";
6
+ import { expressRouter } from "./rest-express.js";
7
+ import { makeNextAppHandler } from "./rest-next-app.js";
8
+ import { makeNextPagesHandler } from "./rest-next-pages.js";
9
+ export { RestOptions, createFetchHandler, createMcpServer, elysiaPlugin, exportContractsToGraphQLSchema, expressRouter, makeNextAppHandler, makeNextPagesHandler, registerContractsOnBuilder };
@@ -0,0 +1 @@
1
+ import{registerContractsOnBuilder as e}from"./graphql-pothos.js";import{exportContractsToGraphQLSchema as t}from"./graphql-schema-export.js";import{createMcpServer as n}from"./provider-mcp.js";import{createFetchHandler as r}from"./rest-generic.js";import{elysiaPlugin as i}from"./rest-elysia.js";import{expressRouter as a}from"./rest-express.js";import{makeNextAppHandler as o}from"./rest-next-app.js";import{makeNextPagesHandler as s}from"./rest-next-pages.js";export{r as createFetchHandler,n as createMcpServer,i as elysiaPlugin,t as exportContractsToGraphQLSchema,a as expressRouter,o as makeNextAppHandler,s as makeNextPagesHandler,e as registerContractsOnBuilder};
@@ -0,0 +1,52 @@
1
+ import { ResourceRegistry } from "../resources.js";
2
+ import { PresentationRegistry } from "../presentations.js";
3
+ import { PresentationDescriptorV2 } from "../presentations.v2.js";
4
+ import { HandlerCtx } from "../types.js";
5
+ import { SpecRegistry } from "../registry.js";
6
+ import { PromptRegistry } from "../promptRegistry.js";
7
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
+
9
+ //#region src/server/provider-mcp.d.ts
10
+
11
+ /**
12
+ * Creates a unified Model Context Protocol (MCP) server exposing operations, resources, and prompts.
13
+ *
14
+ * This function takes registries for operations, resources, and prompts, and exposes them as
15
+ * MCP Tools, Resources, and Prompts respectively. It enables AI agents to discover and interact
16
+ * with the application's capabilities.
17
+ *
18
+ * Features:
19
+ * - **Tools**: Exposes `command` operations as executable tools.
20
+ * - **Resources**: Exposes `ResourceRegistry` entries and `PresentationSpec`s (Markdown/JSON) as read-only resources.
21
+ * - **Prompts**: Exposes `PromptRegistry` entries as templated prompts.
22
+ *
23
+ * @param server - The `McpServer` instance to populate.
24
+ * @param ops - Registry containing operations (tools).
25
+ * @param resources - Registry containing data resources.
26
+ * @param prompts - Registry containing prompt templates.
27
+ * @param ctxFactories - Factories to create context for tools, resources, and prompts execution.
28
+ * @returns The populated `McpServer` instance.
29
+ */
30
+ declare function createMcpServer(server: McpServer, ops: SpecRegistry, resources: ResourceRegistry, prompts: PromptRegistry, ctxFactories: {
31
+ /** Factory for tool execution context (e.g., system actor) */
32
+ toolCtx: () => HandlerCtx;
33
+ /** Factory for prompt rendering context */
34
+ promptCtx: () => {
35
+ userId?: string | null;
36
+ orgId?: string | null;
37
+ locale?: string;
38
+ };
39
+ /** Factory for resource resolution context */
40
+ resourceCtx: () => {
41
+ userId?: string | null;
42
+ orgId?: string | null;
43
+ locale?: string;
44
+ };
45
+ /** Optional registry for V1 presentations */
46
+ presentations?: PresentationRegistry;
47
+ /** Optional list of V2 presentation descriptors */
48
+ presentationsV2?: PresentationDescriptorV2[];
49
+ }): McpServer;
50
+ //#endregion
51
+ export { createMcpServer };
52
+ //# sourceMappingURL=provider-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-mcp.d.ts","names":[],"sources":["../../src/server/provider-mcp.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;AA6CA;;;;;;;;;;;;;;;;;iBAAgB,eAAA,SACN,gBACH,yBACM,2BACF;;iBAGQ;;;;;;;;;;;;;;kBAcC;;oBAEE;IACnB"}
@@ -0,0 +1,2 @@
1
+ import{createDefaultTransformEngine as e,registerBasicValidation as t,registerDefaultReactRenderer as n}from"../presentations.v2.js";import{defaultMcpTool as r,jsonSchemaForSpec as i}from"../jsonschema.js";import{jsonSchemaForPresentation as a}from"../presentations.js";import o from"zod";import{McpServer as s,ResourceTemplate as c}from"@modelcontextprotocol/sdk/server/mcp.js";import{zodToJsonSchema as l}from"zod-to-json-schema";function u(s,u,d,f,p){for(let e of u.listSpecs()){if(e.meta.kind!==`command`)continue;let{input:t}=i(e),n=e.transport?.mcp?.toolName??r(e.meta.name,e.meta.version);s.registerTool(n,{description:e.meta.description,inputSchema:t},async(t,n)=>{let r=await u.execute(e.meta.name,e.meta.version,t??{},p.toolCtx());return{content:[{type:`text`,text:JSON.stringify(r,null,4)}]}})}for(let e of d.listTemplates())s.registerResource(e.meta.uriTemplate.split(`:`)[0],new c(e.meta.uriTemplate,{}),{description:e.meta.description,inputSchema:l(e.input,{})},async(t,n,r)=>{let i=p.resourceCtx(),a=await e.resolve(n,i);return typeof a.data==`string`?{contents:[{uri:a.uri,mimeType:a.mimeType??e.meta.mimeType,text:a.data}]}:{contents:[{uri:a.uri,mimeType:a.mimeType??e.meta.mimeType,blob:a.data.toString()}]}});let m=p.presentations,h=p.presentationsV2;if(m){t(n(e()));for(let e of m.list()){let t=`presentation.${e.meta.name.replace(/\./g,`_`)}.v${e.meta.version}`,n=`presentation://${e.meta.name}/v${e.meta.version}`;s.registerResource(t,new c(n,{}),{description:e.meta.description??`Presentation`,inputSchema:o.toJSONSchema(o.object({}))},async(t,r,i)=>{if(e.content.kind===`markdown`)return{contents:[{uri:n,mimeType:`text/markdown`,text:e.content.content?e.content.content:`See resource: ${e.content.resourceUri??``}`}]};if(e.content.kind===`data`){let t=a(e);return{contents:[{uri:n,mimeType:`application/json`,text:JSON.stringify(t,null,2)}]}}let o={name:e.meta.name,version:e.meta.version,kind:e.content.kind,description:e.meta.description??``};return{contents:[{uri:n,mimeType:`application/json`,text:JSON.stringify(o,null,2)}]}});for(let r of[{ext:`.md`,target:`markdown`},{ext:`.json`,target:`application/json`},{ext:`.xml`,target:`application/xml`}]){let i=`${t}${r.ext}`,l=`${n}${r.ext}`;s.registerResource(i,new c(l,{}),{description:`${e.meta.description??`Presentation`} (${r.ext})`,inputSchema:o.toJSONSchema(o.object({}))},async()=>{if(e.content.kind===`markdown`&&r.target===`markdown`)return{contents:[{uri:l,mimeType:`text/markdown`,text:e.content.content??`See resource: ${e.content.resourceUri??``}`}]};if(e.content.kind===`data`&&r.target===`application/json`)return{contents:[{uri:l,mimeType:`application/json`,text:JSON.stringify(a(e),null,2)}]};let t=JSON.stringify({meta:e.meta,content:e.content},null,2);return r.target===`application/json`?{contents:[{uri:l,mimeType:`application/json`,text:t}]}:r.target===`application/xml`?{contents:[{uri:l,mimeType:`application/xml`,text:`<presentation name="${e.meta.name}" version="${e.meta.version}"><json>${encodeURIComponent(t)}</json></presentation>`}]}:{contents:[{uri:l,mimeType:`text/markdown`,text:`Unsupported presentation for markdown`}]}})}}}if(h&&h.length){let r=t(n(e()));for(let e of h){let t=`presentation.${e.meta.name.replace(/\./g,`_`)}.v${e.meta.version}`,n=`presentation://${e.meta.name}/v${e.meta.version}`;s.registerResource(t,new c(n,{}),{description:e.meta.description??`Presentation`,inputSchema:o.toJSONSchema(o.object({}))},async()=>({contents:[{uri:n,mimeType:`application/json`,text:JSON.stringify({meta:e.meta,source:e.source,targets:e.targets},null,2)}]}));for(let i of[{ext:`.md`,target:`markdown`},{ext:`.json`,target:`application/json`},{ext:`.xml`,target:`application/xml`}]){let a=`${t}${i.ext}`,l=`${n}${i.ext}`;s.registerResource(a,new c(l,{}),{description:`${e.meta.description??`Presentation`} (${i.ext})`,inputSchema:o.toJSONSchema(o.object({}))},async()=>{let t=await r.render(i.target,e);return{contents:[{uri:l,mimeType:t.mimeType??(i.target===`markdown`?`text/markdown`:i.target),text:t.body??String(t)}]}})}}}for(let e of f.list())s.registerPrompt(e.meta.name,{title:e.meta.title,description:e.meta.title,argsSchema:l(e.input)},async(t,n)=>{let r=(e,t)=>{let n=e;for(let[e,r]of Object.entries(t))n=n.replace(RegExp(`\\{${e}\\}`,`g`),encodeURIComponent(String(r)));return n};return{messages:[{role:`assistant`,content:(await e.render(e.input.parse(t),{...p.promptCtx(),link:r})).map(e=>e.type===`text`?{type:`text`,text:e.text}:{type:`text`,text:`See resource: ${e.title??e.uri}\nURI: ${e.uri}`})[0]}],description:e.meta.description}});return s}export{u as createMcpServer};
2
+ //# sourceMappingURL=provider-mcp.js.map