@lssm/lib.contracts 1.10.0 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/README.md +3 -1
  2. package/dist/app-config/branding.d.ts +1 -2
  3. package/dist/app-config/contracts.d.ts +51 -52
  4. package/dist/app-config/contracts.js +1 -2
  5. package/dist/app-config/events.d.ts +28 -29
  6. package/dist/app-config/events.js +1 -2
  7. package/dist/app-config/lifecycle-contracts.d.ts +81 -82
  8. package/dist/app-config/lifecycle-contracts.js +1 -2
  9. package/dist/app-config/lifecycle.d.ts +1 -2
  10. package/dist/app-config/runtime.d.ts +1 -2
  11. package/dist/app-config/runtime.js +1 -2
  12. package/dist/app-config/spec.d.ts +1 -2
  13. package/dist/app-config/spec.js +1 -2
  14. package/dist/app-config/validation.d.ts +1 -2
  15. package/dist/app-config/validation.js +1 -2
  16. package/dist/capabilities/openbanking.d.ts +1 -2
  17. package/dist/capabilities/openbanking.js +1 -2
  18. package/dist/capabilities.d.ts +1 -2
  19. package/dist/capabilities.js +1 -2
  20. package/dist/client/react/drivers/rn-reusables.d.ts +1 -2
  21. package/dist/client/react/drivers/rn-reusables.js +1 -2
  22. package/dist/client/react/drivers/shadcn.d.ts +1 -2
  23. package/dist/client/react/drivers/shadcn.js +1 -2
  24. package/dist/client/react/feature-render.d.ts +1 -2
  25. package/dist/client/react/feature-render.js +1 -2
  26. package/dist/client/react/form-render.d.ts +1 -2
  27. package/dist/client/react/form-render.js +1 -2
  28. package/dist/contracts-adapter-hydration.d.ts +1 -2
  29. package/dist/contracts-adapter-hydration.js +1 -2
  30. package/dist/contracts-adapter-input.d.ts +1 -2
  31. package/dist/contracts-adapter-input.js +1 -2
  32. package/dist/data-views/query-generator.d.ts +1 -2
  33. package/dist/data-views/query-generator.js +1 -2
  34. package/dist/data-views/runtime.d.ts +1 -2
  35. package/dist/data-views/runtime.js +1 -2
  36. package/dist/data-views.d.ts +1 -2
  37. package/dist/data-views.js +1 -2
  38. package/dist/events.d.ts +1 -2
  39. package/dist/events.js +1 -2
  40. package/dist/experiments/evaluator.d.ts +1 -2
  41. package/dist/experiments/evaluator.js +1 -2
  42. package/dist/experiments/spec-resolver.d.ts +1 -2
  43. package/dist/experiments/spec.d.ts +1 -2
  44. package/dist/experiments/spec.js +1 -2
  45. package/dist/features.d.ts +1 -2
  46. package/dist/features.js +1 -2
  47. package/dist/forms.d.ts +1 -2
  48. package/dist/forms.js +1 -2
  49. package/dist/graphql-federation/dist/index.js +1 -2
  50. package/dist/install.d.ts +1 -2
  51. package/dist/install.js +1 -2
  52. package/dist/integrations/binding.d.ts +1 -2
  53. package/dist/integrations/connection.d.ts +1 -2
  54. package/dist/integrations/contracts.d.ts +103 -104
  55. package/dist/integrations/contracts.js +1 -2
  56. package/dist/integrations/health.d.ts +1 -2
  57. package/dist/integrations/health.js +1 -2
  58. package/dist/integrations/openbanking/contracts/accounts.d.ts +67 -68
  59. package/dist/integrations/openbanking/contracts/accounts.js +1 -2
  60. package/dist/integrations/openbanking/contracts/balances.d.ts +35 -36
  61. package/dist/integrations/openbanking/contracts/balances.js +1 -2
  62. package/dist/integrations/openbanking/contracts/index.d.ts +1 -2
  63. package/dist/integrations/openbanking/contracts/index.js +1 -2
  64. package/dist/integrations/openbanking/contracts/transactions.d.ts +49 -50
  65. package/dist/integrations/openbanking/contracts/transactions.js +1 -2
  66. package/dist/integrations/openbanking/guards.d.ts +1 -2
  67. package/dist/integrations/openbanking/guards.js +1 -2
  68. package/dist/integrations/openbanking/models.d.ts +56 -57
  69. package/dist/integrations/openbanking/models.js +1 -2
  70. package/dist/integrations/openbanking/telemetry.d.ts +1 -2
  71. package/dist/integrations/openbanking/telemetry.js +1 -2
  72. package/dist/integrations/providers/calendar.d.ts +1 -2
  73. package/dist/integrations/providers/elevenlabs.d.ts +1 -2
  74. package/dist/integrations/providers/elevenlabs.js +1 -2
  75. package/dist/integrations/providers/email.d.ts +1 -2
  76. package/dist/integrations/providers/embedding.d.ts +1 -2
  77. package/dist/integrations/providers/gcs-storage.d.ts +1 -2
  78. package/dist/integrations/providers/gcs-storage.js +1 -2
  79. package/dist/integrations/providers/gmail.d.ts +1 -2
  80. package/dist/integrations/providers/gmail.js +1 -2
  81. package/dist/integrations/providers/google-calendar.d.ts +1 -2
  82. package/dist/integrations/providers/google-calendar.js +1 -2
  83. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +1 -2
  84. package/dist/integrations/providers/impls/elevenlabs-voice.js +1 -2
  85. package/dist/integrations/providers/impls/gcs-storage.d.ts +1 -2
  86. package/dist/integrations/providers/impls/gcs-storage.js +1 -2
  87. package/dist/integrations/providers/impls/gmail-inbound.d.ts +1 -2
  88. package/dist/integrations/providers/impls/gmail-inbound.js +1 -2
  89. package/dist/integrations/providers/impls/gmail-outbound.d.ts +1 -2
  90. package/dist/integrations/providers/impls/gmail-outbound.js +1 -2
  91. package/dist/integrations/providers/impls/google-calendar.d.ts +1 -2
  92. package/dist/integrations/providers/impls/google-calendar.js +1 -2
  93. package/dist/integrations/providers/impls/mistral-embedding.d.ts +1 -2
  94. package/dist/integrations/providers/impls/mistral-embedding.js +1 -2
  95. package/dist/integrations/providers/impls/mistral-llm.d.ts +1 -2
  96. package/dist/integrations/providers/impls/mistral-llm.js +1 -2
  97. package/dist/integrations/providers/impls/postmark-email.d.ts +1 -2
  98. package/dist/integrations/providers/impls/postmark-email.js +1 -2
  99. package/dist/integrations/providers/impls/powens-client.d.ts +1 -2
  100. package/dist/integrations/providers/impls/powens-client.js +1 -2
  101. package/dist/integrations/providers/impls/powens-openbanking.d.ts +1 -2
  102. package/dist/integrations/providers/impls/powens-openbanking.js +1 -2
  103. package/dist/integrations/providers/impls/provider-factory.d.ts +1 -2
  104. package/dist/integrations/providers/impls/provider-factory.js +1 -2
  105. package/dist/integrations/providers/impls/qdrant-vector.d.ts +1 -2
  106. package/dist/integrations/providers/impls/qdrant-vector.js +1 -2
  107. package/dist/integrations/providers/impls/stripe-payments.d.ts +1 -2
  108. package/dist/integrations/providers/impls/stripe-payments.js +1 -2
  109. package/dist/integrations/providers/impls/twilio-sms.d.ts +1 -2
  110. package/dist/integrations/providers/impls/twilio-sms.js +1 -2
  111. package/dist/integrations/providers/llm.d.ts +1 -2
  112. package/dist/integrations/providers/mistral.d.ts +1 -2
  113. package/dist/integrations/providers/mistral.js +1 -2
  114. package/dist/integrations/providers/openbanking.d.ts +1 -2
  115. package/dist/integrations/providers/payments.d.ts +1 -2
  116. package/dist/integrations/providers/postmark.d.ts +1 -2
  117. package/dist/integrations/providers/postmark.js +1 -2
  118. package/dist/integrations/providers/powens.d.ts +1 -2
  119. package/dist/integrations/providers/powens.js +1 -2
  120. package/dist/integrations/providers/qdrant.d.ts +1 -2
  121. package/dist/integrations/providers/qdrant.js +1 -2
  122. package/dist/integrations/providers/sms.d.ts +1 -2
  123. package/dist/integrations/providers/storage.d.ts +1 -2
  124. package/dist/integrations/providers/stripe.d.ts +1 -2
  125. package/dist/integrations/providers/stripe.js +1 -2
  126. package/dist/integrations/providers/twilio-sms.d.ts +1 -2
  127. package/dist/integrations/providers/twilio-sms.js +1 -2
  128. package/dist/integrations/providers/vector-store.d.ts +1 -2
  129. package/dist/integrations/providers/voice.d.ts +1 -2
  130. package/dist/integrations/runtime.d.ts +1 -2
  131. package/dist/integrations/runtime.js +1 -2
  132. package/dist/integrations/secrets/env-secret-provider.d.ts +1 -2
  133. package/dist/integrations/secrets/env-secret-provider.js +1 -2
  134. package/dist/integrations/secrets/gcp-secret-manager.d.ts +1 -2
  135. package/dist/integrations/secrets/gcp-secret-manager.js +1 -2
  136. package/dist/integrations/secrets/manager.d.ts +1 -2
  137. package/dist/integrations/secrets/manager.js +1 -2
  138. package/dist/integrations/secrets/provider.d.ts +1 -2
  139. package/dist/integrations/secrets/provider.js +1 -2
  140. package/dist/integrations/spec.d.ts +1 -2
  141. package/dist/integrations/spec.js +1 -2
  142. package/dist/jobs/gcp-cloud-tasks.d.ts +1 -2
  143. package/dist/jobs/gcp-cloud-tasks.js +1 -2
  144. package/dist/jobs/gcp-pubsub.d.ts +1 -2
  145. package/dist/jobs/gcp-pubsub.js +1 -2
  146. package/dist/jobs/handlers/gmail-sync-handler.d.ts +1 -2
  147. package/dist/jobs/handlers/gmail-sync-handler.js +1 -2
  148. package/dist/jobs/handlers/storage-document-handler.d.ts +1 -2
  149. package/dist/jobs/handlers/storage-document-handler.js +1 -2
  150. package/dist/jobs/memory-queue.d.ts +1 -2
  151. package/dist/jobs/memory-queue.js +1 -2
  152. package/dist/jobs/queue.d.ts +1 -2
  153. package/dist/jsonschema.d.ts +1 -2
  154. package/dist/jsonschema.js +1 -2
  155. package/dist/knowledge/binding.d.ts +1 -2
  156. package/dist/knowledge/contracts.d.ts +67 -68
  157. package/dist/knowledge/contracts.js +1 -2
  158. package/dist/knowledge/ingestion/document-processor.d.ts +1 -2
  159. package/dist/knowledge/ingestion/document-processor.js +1 -2
  160. package/dist/knowledge/ingestion/embedding-service.d.ts +1 -2
  161. package/dist/knowledge/ingestion/embedding-service.js +1 -2
  162. package/dist/knowledge/ingestion/gmail-adapter.d.ts +1 -2
  163. package/dist/knowledge/ingestion/gmail-adapter.js +1 -2
  164. package/dist/knowledge/ingestion/storage-adapter.d.ts +1 -2
  165. package/dist/knowledge/ingestion/storage-adapter.js +1 -2
  166. package/dist/knowledge/ingestion/vector-indexer.d.ts +1 -2
  167. package/dist/knowledge/ingestion/vector-indexer.js +1 -2
  168. package/dist/knowledge/query/service.d.ts +1 -2
  169. package/dist/knowledge/query/service.js +1 -2
  170. package/dist/knowledge/runtime.d.ts +1 -2
  171. package/dist/knowledge/runtime.js +1 -2
  172. package/dist/knowledge/source.d.ts +1 -2
  173. package/dist/knowledge/spaces/email-threads.d.ts +1 -2
  174. package/dist/knowledge/spaces/email-threads.js +1 -2
  175. package/dist/knowledge/spaces/financial-docs.d.ts +1 -2
  176. package/dist/knowledge/spaces/financial-docs.js +1 -2
  177. package/dist/knowledge/spaces/financial-overview.d.ts +1 -2
  178. package/dist/knowledge/spaces/financial-overview.js +1 -2
  179. package/dist/knowledge/spaces/product-canon.d.ts +1 -2
  180. package/dist/knowledge/spaces/product-canon.js +1 -2
  181. package/dist/knowledge/spaces/support-faq.d.ts +1 -2
  182. package/dist/knowledge/spaces/support-faq.js +1 -2
  183. package/dist/knowledge/spaces/uploaded-docs.d.ts +1 -2
  184. package/dist/knowledge/spaces/uploaded-docs.js +1 -2
  185. package/dist/knowledge/spec.d.ts +1 -2
  186. package/dist/knowledge/spec.js +1 -2
  187. package/dist/markdown.d.ts +1 -2
  188. package/dist/markdown.js +1 -2
  189. package/dist/migrations.d.ts +1 -2
  190. package/dist/migrations.js +1 -2
  191. package/dist/onboarding-base.d.ts +30 -31
  192. package/dist/onboarding-base.js +1 -2
  193. package/dist/ownership.d.ts +1 -2
  194. package/dist/ownership.js +1 -2
  195. package/dist/policy/engine.d.ts +1 -2
  196. package/dist/policy/engine.js +1 -2
  197. package/dist/policy/opa-adapter.d.ts +1 -2
  198. package/dist/policy/opa-adapter.js +1 -2
  199. package/dist/policy/spec.d.ts +1 -2
  200. package/dist/policy/spec.js +1 -2
  201. package/dist/presentations.backcompat.d.ts +1 -2
  202. package/dist/presentations.backcompat.js +1 -2
  203. package/dist/presentations.d.ts +1 -2
  204. package/dist/presentations.js +1 -2
  205. package/dist/presentations.v2.d.ts +1 -2
  206. package/dist/presentations.v2.js +1 -2
  207. package/dist/prompt.d.ts +1 -2
  208. package/dist/prompt.js +1 -2
  209. package/dist/promptRegistry.d.ts +1 -2
  210. package/dist/promptRegistry.js +1 -2
  211. package/dist/regenerator/adapters.d.ts +1 -2
  212. package/dist/regenerator/executor.d.ts +1 -2
  213. package/dist/regenerator/executor.js +1 -2
  214. package/dist/regenerator/service.d.ts +1 -2
  215. package/dist/regenerator/service.js +1 -2
  216. package/dist/regenerator/sinks.d.ts +1 -2
  217. package/dist/regenerator/sinks.js +1 -2
  218. package/dist/regenerator/types.d.ts +1 -2
  219. package/dist/regenerator/utils.d.ts +1 -2
  220. package/dist/regenerator/utils.js +1 -2
  221. package/dist/registry.d.ts +1 -2
  222. package/dist/registry.js +1 -2
  223. package/dist/resources.d.ts +1 -2
  224. package/dist/resources.js +1 -2
  225. package/dist/schema/dist/FieldType.js +1 -2
  226. package/dist/schema/dist/ScalarTypeEnum.js +1 -2
  227. package/dist/schema/dist/SchemaModel.js +1 -2
  228. package/dist/server/graphql-pothos.d.ts +1 -2
  229. package/dist/server/graphql-pothos.js +1 -2
  230. package/dist/server/graphql-schema-export.d.ts +1 -2
  231. package/dist/server/graphql-schema-export.js +1 -2
  232. package/dist/server/provider-mcp.d.ts +1 -2
  233. package/dist/server/provider-mcp.js +1 -2
  234. package/dist/server/rest-elysia.d.ts +1 -2
  235. package/dist/server/rest-elysia.js +1 -2
  236. package/dist/server/rest-express.d.ts +1 -2
  237. package/dist/server/rest-express.js +1 -2
  238. package/dist/server/rest-generic.d.ts +1 -2
  239. package/dist/server/rest-generic.js +1 -2
  240. package/dist/server/rest-next-app.d.ts +1 -2
  241. package/dist/server/rest-next-app.js +1 -2
  242. package/dist/server/rest-next-mcp.d.ts +1 -2
  243. package/dist/server/rest-next-mcp.js +1 -2
  244. package/dist/server/rest-next-pages.d.ts +1 -2
  245. package/dist/server/rest-next-pages.js +1 -2
  246. package/dist/spec.d.ts +1 -2
  247. package/dist/spec.js +1 -2
  248. package/dist/telemetry/anomaly.d.ts +1 -2
  249. package/dist/telemetry/anomaly.js +1 -2
  250. package/dist/telemetry/spec.d.ts +1 -2
  251. package/dist/telemetry/spec.js +1 -2
  252. package/dist/telemetry/tracker.d.ts +1 -2
  253. package/dist/telemetry/tracker.js +1 -2
  254. package/dist/tests/runner.d.ts +1 -2
  255. package/dist/tests/runner.js +1 -2
  256. package/dist/tests/spec.d.ts +1 -2
  257. package/dist/tests/spec.js +1 -2
  258. package/dist/themes.d.ts +1 -2
  259. package/dist/themes.js +1 -2
  260. package/dist/translations/catalog.d.ts +1 -2
  261. package/dist/translations/tenant.d.ts +1 -2
  262. package/dist/types.d.ts +1 -2
  263. package/dist/workflow/adapters/db-adapter.d.ts +1 -2
  264. package/dist/workflow/adapters/db-adapter.js +1 -2
  265. package/dist/workflow/adapters/file-adapter.d.ts +1 -2
  266. package/dist/workflow/adapters/file-adapter.js +1 -2
  267. package/dist/workflow/adapters/memory-store.d.ts +1 -2
  268. package/dist/workflow/adapters/memory-store.js +1 -2
  269. package/dist/workflow/expression.d.ts +1 -2
  270. package/dist/workflow/expression.js +1 -2
  271. package/dist/workflow/runner.d.ts +1 -2
  272. package/dist/workflow/runner.js +1 -2
  273. package/dist/workflow/sla-monitor.d.ts +1 -2
  274. package/dist/workflow/sla-monitor.js +1 -2
  275. package/dist/workflow/spec.d.ts +1 -2
  276. package/dist/workflow/spec.js +1 -2
  277. package/dist/workflow/state.d.ts +1 -2
  278. package/dist/workflow/validation.d.ts +1 -2
  279. package/dist/workflow/validation.js +1 -2
  280. package/package.json +14 -12
  281. package/dist/app-config/branding.d.ts.map +0 -1
  282. package/dist/app-config/contracts.d.ts.map +0 -1
  283. package/dist/app-config/contracts.js.map +0 -1
  284. package/dist/app-config/events.d.ts.map +0 -1
  285. package/dist/app-config/events.js.map +0 -1
  286. package/dist/app-config/lifecycle-contracts.d.ts.map +0 -1
  287. package/dist/app-config/lifecycle-contracts.js.map +0 -1
  288. package/dist/app-config/lifecycle.d.ts.map +0 -1
  289. package/dist/app-config/runtime.d.ts.map +0 -1
  290. package/dist/app-config/runtime.js.map +0 -1
  291. package/dist/app-config/spec.d.ts.map +0 -1
  292. package/dist/app-config/spec.js.map +0 -1
  293. package/dist/app-config/validation.d.ts.map +0 -1
  294. package/dist/app-config/validation.js.map +0 -1
  295. package/dist/capabilities/openbanking.d.ts.map +0 -1
  296. package/dist/capabilities/openbanking.js.map +0 -1
  297. package/dist/capabilities.d.ts.map +0 -1
  298. package/dist/capabilities.js.map +0 -1
  299. package/dist/client/react/drivers/rn-reusables.d.ts.map +0 -1
  300. package/dist/client/react/drivers/rn-reusables.js.map +0 -1
  301. package/dist/client/react/drivers/shadcn.d.ts.map +0 -1
  302. package/dist/client/react/drivers/shadcn.js.map +0 -1
  303. package/dist/client/react/feature-render.d.ts.map +0 -1
  304. package/dist/client/react/feature-render.js.map +0 -1
  305. package/dist/client/react/form-render.d.ts.map +0 -1
  306. package/dist/client/react/form-render.js.map +0 -1
  307. package/dist/contracts-adapter-hydration.d.ts.map +0 -1
  308. package/dist/contracts-adapter-hydration.js.map +0 -1
  309. package/dist/contracts-adapter-input.d.ts.map +0 -1
  310. package/dist/contracts-adapter-input.js.map +0 -1
  311. package/dist/data-views/query-generator.d.ts.map +0 -1
  312. package/dist/data-views/query-generator.js.map +0 -1
  313. package/dist/data-views/runtime.d.ts.map +0 -1
  314. package/dist/data-views/runtime.js.map +0 -1
  315. package/dist/data-views.d.ts.map +0 -1
  316. package/dist/data-views.js.map +0 -1
  317. package/dist/events.d.ts.map +0 -1
  318. package/dist/events.js.map +0 -1
  319. package/dist/experiments/evaluator.d.ts.map +0 -1
  320. package/dist/experiments/evaluator.js.map +0 -1
  321. package/dist/experiments/spec-resolver.d.ts.map +0 -1
  322. package/dist/experiments/spec.d.ts.map +0 -1
  323. package/dist/experiments/spec.js.map +0 -1
  324. package/dist/features.d.ts.map +0 -1
  325. package/dist/features.js.map +0 -1
  326. package/dist/forms.d.ts.map +0 -1
  327. package/dist/forms.js.map +0 -1
  328. package/dist/graphql-federation/dist/index.js.map +0 -1
  329. package/dist/install.d.ts.map +0 -1
  330. package/dist/install.js.map +0 -1
  331. package/dist/integrations/binding.d.ts.map +0 -1
  332. package/dist/integrations/connection.d.ts.map +0 -1
  333. package/dist/integrations/contracts.d.ts.map +0 -1
  334. package/dist/integrations/contracts.js.map +0 -1
  335. package/dist/integrations/health.d.ts.map +0 -1
  336. package/dist/integrations/health.js.map +0 -1
  337. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +0 -1
  338. package/dist/integrations/openbanking/contracts/accounts.js.map +0 -1
  339. package/dist/integrations/openbanking/contracts/balances.d.ts.map +0 -1
  340. package/dist/integrations/openbanking/contracts/balances.js.map +0 -1
  341. package/dist/integrations/openbanking/contracts/index.d.ts.map +0 -1
  342. package/dist/integrations/openbanking/contracts/index.js.map +0 -1
  343. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +0 -1
  344. package/dist/integrations/openbanking/contracts/transactions.js.map +0 -1
  345. package/dist/integrations/openbanking/guards.d.ts.map +0 -1
  346. package/dist/integrations/openbanking/guards.js.map +0 -1
  347. package/dist/integrations/openbanking/models.d.ts.map +0 -1
  348. package/dist/integrations/openbanking/models.js.map +0 -1
  349. package/dist/integrations/openbanking/telemetry.d.ts.map +0 -1
  350. package/dist/integrations/openbanking/telemetry.js.map +0 -1
  351. package/dist/integrations/providers/calendar.d.ts.map +0 -1
  352. package/dist/integrations/providers/elevenlabs.d.ts.map +0 -1
  353. package/dist/integrations/providers/elevenlabs.js.map +0 -1
  354. package/dist/integrations/providers/email.d.ts.map +0 -1
  355. package/dist/integrations/providers/embedding.d.ts.map +0 -1
  356. package/dist/integrations/providers/gcs-storage.d.ts.map +0 -1
  357. package/dist/integrations/providers/gcs-storage.js.map +0 -1
  358. package/dist/integrations/providers/gmail.d.ts.map +0 -1
  359. package/dist/integrations/providers/gmail.js.map +0 -1
  360. package/dist/integrations/providers/google-calendar.d.ts.map +0 -1
  361. package/dist/integrations/providers/google-calendar.js.map +0 -1
  362. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +0 -1
  363. package/dist/integrations/providers/impls/elevenlabs-voice.js.map +0 -1
  364. package/dist/integrations/providers/impls/gcs-storage.d.ts.map +0 -1
  365. package/dist/integrations/providers/impls/gcs-storage.js.map +0 -1
  366. package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +0 -1
  367. package/dist/integrations/providers/impls/gmail-inbound.js.map +0 -1
  368. package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +0 -1
  369. package/dist/integrations/providers/impls/gmail-outbound.js.map +0 -1
  370. package/dist/integrations/providers/impls/google-calendar.d.ts.map +0 -1
  371. package/dist/integrations/providers/impls/google-calendar.js.map +0 -1
  372. package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +0 -1
  373. package/dist/integrations/providers/impls/mistral-embedding.js.map +0 -1
  374. package/dist/integrations/providers/impls/mistral-llm.d.ts.map +0 -1
  375. package/dist/integrations/providers/impls/mistral-llm.js.map +0 -1
  376. package/dist/integrations/providers/impls/postmark-email.d.ts.map +0 -1
  377. package/dist/integrations/providers/impls/postmark-email.js.map +0 -1
  378. package/dist/integrations/providers/impls/powens-client.d.ts.map +0 -1
  379. package/dist/integrations/providers/impls/powens-client.js.map +0 -1
  380. package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +0 -1
  381. package/dist/integrations/providers/impls/powens-openbanking.js.map +0 -1
  382. package/dist/integrations/providers/impls/provider-factory.d.ts.map +0 -1
  383. package/dist/integrations/providers/impls/provider-factory.js.map +0 -1
  384. package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +0 -1
  385. package/dist/integrations/providers/impls/qdrant-vector.js.map +0 -1
  386. package/dist/integrations/providers/impls/stripe-payments.d.ts.map +0 -1
  387. package/dist/integrations/providers/impls/stripe-payments.js.map +0 -1
  388. package/dist/integrations/providers/impls/twilio-sms.d.ts.map +0 -1
  389. package/dist/integrations/providers/impls/twilio-sms.js.map +0 -1
  390. package/dist/integrations/providers/llm.d.ts.map +0 -1
  391. package/dist/integrations/providers/mistral.d.ts.map +0 -1
  392. package/dist/integrations/providers/mistral.js.map +0 -1
  393. package/dist/integrations/providers/openbanking.d.ts.map +0 -1
  394. package/dist/integrations/providers/payments.d.ts.map +0 -1
  395. package/dist/integrations/providers/postmark.d.ts.map +0 -1
  396. package/dist/integrations/providers/postmark.js.map +0 -1
  397. package/dist/integrations/providers/powens.d.ts.map +0 -1
  398. package/dist/integrations/providers/powens.js.map +0 -1
  399. package/dist/integrations/providers/qdrant.d.ts.map +0 -1
  400. package/dist/integrations/providers/qdrant.js.map +0 -1
  401. package/dist/integrations/providers/sms.d.ts.map +0 -1
  402. package/dist/integrations/providers/storage.d.ts.map +0 -1
  403. package/dist/integrations/providers/stripe.d.ts.map +0 -1
  404. package/dist/integrations/providers/stripe.js.map +0 -1
  405. package/dist/integrations/providers/twilio-sms.d.ts.map +0 -1
  406. package/dist/integrations/providers/twilio-sms.js.map +0 -1
  407. package/dist/integrations/providers/vector-store.d.ts.map +0 -1
  408. package/dist/integrations/providers/voice.d.ts.map +0 -1
  409. package/dist/integrations/runtime.d.ts.map +0 -1
  410. package/dist/integrations/runtime.js.map +0 -1
  411. package/dist/integrations/secrets/env-secret-provider.d.ts.map +0 -1
  412. package/dist/integrations/secrets/env-secret-provider.js.map +0 -1
  413. package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +0 -1
  414. package/dist/integrations/secrets/gcp-secret-manager.js.map +0 -1
  415. package/dist/integrations/secrets/manager.d.ts.map +0 -1
  416. package/dist/integrations/secrets/manager.js.map +0 -1
  417. package/dist/integrations/secrets/provider.d.ts.map +0 -1
  418. package/dist/integrations/secrets/provider.js.map +0 -1
  419. package/dist/integrations/spec.d.ts.map +0 -1
  420. package/dist/integrations/spec.js.map +0 -1
  421. package/dist/jobs/gcp-cloud-tasks.d.ts.map +0 -1
  422. package/dist/jobs/gcp-cloud-tasks.js.map +0 -1
  423. package/dist/jobs/gcp-pubsub.d.ts.map +0 -1
  424. package/dist/jobs/gcp-pubsub.js.map +0 -1
  425. package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +0 -1
  426. package/dist/jobs/handlers/gmail-sync-handler.js.map +0 -1
  427. package/dist/jobs/handlers/storage-document-handler.d.ts.map +0 -1
  428. package/dist/jobs/handlers/storage-document-handler.js.map +0 -1
  429. package/dist/jobs/memory-queue.d.ts.map +0 -1
  430. package/dist/jobs/memory-queue.js.map +0 -1
  431. package/dist/jobs/queue.d.ts.map +0 -1
  432. package/dist/jsonschema.d.ts.map +0 -1
  433. package/dist/jsonschema.js.map +0 -1
  434. package/dist/knowledge/binding.d.ts.map +0 -1
  435. package/dist/knowledge/contracts.d.ts.map +0 -1
  436. package/dist/knowledge/contracts.js.map +0 -1
  437. package/dist/knowledge/ingestion/document-processor.d.ts.map +0 -1
  438. package/dist/knowledge/ingestion/document-processor.js.map +0 -1
  439. package/dist/knowledge/ingestion/embedding-service.d.ts.map +0 -1
  440. package/dist/knowledge/ingestion/embedding-service.js.map +0 -1
  441. package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +0 -1
  442. package/dist/knowledge/ingestion/gmail-adapter.js.map +0 -1
  443. package/dist/knowledge/ingestion/storage-adapter.d.ts.map +0 -1
  444. package/dist/knowledge/ingestion/storage-adapter.js.map +0 -1
  445. package/dist/knowledge/ingestion/vector-indexer.d.ts.map +0 -1
  446. package/dist/knowledge/ingestion/vector-indexer.js.map +0 -1
  447. package/dist/knowledge/query/service.d.ts.map +0 -1
  448. package/dist/knowledge/query/service.js.map +0 -1
  449. package/dist/knowledge/runtime.d.ts.map +0 -1
  450. package/dist/knowledge/runtime.js.map +0 -1
  451. package/dist/knowledge/source.d.ts.map +0 -1
  452. package/dist/knowledge/spaces/email-threads.d.ts.map +0 -1
  453. package/dist/knowledge/spaces/email-threads.js.map +0 -1
  454. package/dist/knowledge/spaces/financial-docs.d.ts.map +0 -1
  455. package/dist/knowledge/spaces/financial-docs.js.map +0 -1
  456. package/dist/knowledge/spaces/financial-overview.d.ts.map +0 -1
  457. package/dist/knowledge/spaces/financial-overview.js.map +0 -1
  458. package/dist/knowledge/spaces/product-canon.d.ts.map +0 -1
  459. package/dist/knowledge/spaces/product-canon.js.map +0 -1
  460. package/dist/knowledge/spaces/support-faq.d.ts.map +0 -1
  461. package/dist/knowledge/spaces/support-faq.js.map +0 -1
  462. package/dist/knowledge/spaces/uploaded-docs.d.ts.map +0 -1
  463. package/dist/knowledge/spaces/uploaded-docs.js.map +0 -1
  464. package/dist/knowledge/spec.d.ts.map +0 -1
  465. package/dist/knowledge/spec.js.map +0 -1
  466. package/dist/markdown.d.ts.map +0 -1
  467. package/dist/markdown.js.map +0 -1
  468. package/dist/migrations.d.ts.map +0 -1
  469. package/dist/migrations.js.map +0 -1
  470. package/dist/onboarding-base.d.ts.map +0 -1
  471. package/dist/onboarding-base.js.map +0 -1
  472. package/dist/ownership.d.ts.map +0 -1
  473. package/dist/ownership.js.map +0 -1
  474. package/dist/policy/engine.d.ts.map +0 -1
  475. package/dist/policy/engine.js.map +0 -1
  476. package/dist/policy/opa-adapter.d.ts.map +0 -1
  477. package/dist/policy/opa-adapter.js.map +0 -1
  478. package/dist/policy/spec.d.ts.map +0 -1
  479. package/dist/policy/spec.js.map +0 -1
  480. package/dist/presentations.backcompat.d.ts.map +0 -1
  481. package/dist/presentations.backcompat.js.map +0 -1
  482. package/dist/presentations.d.ts.map +0 -1
  483. package/dist/presentations.js.map +0 -1
  484. package/dist/presentations.v2.d.ts.map +0 -1
  485. package/dist/presentations.v2.js.map +0 -1
  486. package/dist/prompt.d.ts.map +0 -1
  487. package/dist/prompt.js.map +0 -1
  488. package/dist/promptRegistry.d.ts.map +0 -1
  489. package/dist/promptRegistry.js.map +0 -1
  490. package/dist/regenerator/adapters.d.ts.map +0 -1
  491. package/dist/regenerator/executor.d.ts.map +0 -1
  492. package/dist/regenerator/executor.js.map +0 -1
  493. package/dist/regenerator/service.d.ts.map +0 -1
  494. package/dist/regenerator/service.js.map +0 -1
  495. package/dist/regenerator/sinks.d.ts.map +0 -1
  496. package/dist/regenerator/sinks.js.map +0 -1
  497. package/dist/regenerator/types.d.ts.map +0 -1
  498. package/dist/regenerator/utils.d.ts.map +0 -1
  499. package/dist/regenerator/utils.js.map +0 -1
  500. package/dist/registry.d.ts.map +0 -1
  501. package/dist/registry.js.map +0 -1
  502. package/dist/resources.d.ts.map +0 -1
  503. package/dist/resources.js.map +0 -1
  504. package/dist/schema/dist/FieldType.js.map +0 -1
  505. package/dist/schema/dist/ScalarTypeEnum.js.map +0 -1
  506. package/dist/schema/dist/SchemaModel.js.map +0 -1
  507. package/dist/server/graphql-pothos.d.ts.map +0 -1
  508. package/dist/server/graphql-pothos.js.map +0 -1
  509. package/dist/server/graphql-schema-export.d.ts.map +0 -1
  510. package/dist/server/graphql-schema-export.js.map +0 -1
  511. package/dist/server/provider-mcp.d.ts.map +0 -1
  512. package/dist/server/provider-mcp.js.map +0 -1
  513. package/dist/server/rest-elysia.d.ts.map +0 -1
  514. package/dist/server/rest-elysia.js.map +0 -1
  515. package/dist/server/rest-express.d.ts.map +0 -1
  516. package/dist/server/rest-express.js.map +0 -1
  517. package/dist/server/rest-generic.d.ts.map +0 -1
  518. package/dist/server/rest-generic.js.map +0 -1
  519. package/dist/server/rest-next-app.d.ts.map +0 -1
  520. package/dist/server/rest-next-app.js.map +0 -1
  521. package/dist/server/rest-next-mcp.d.ts.map +0 -1
  522. package/dist/server/rest-next-mcp.js.map +0 -1
  523. package/dist/server/rest-next-pages.d.ts.map +0 -1
  524. package/dist/server/rest-next-pages.js.map +0 -1
  525. package/dist/spec.d.ts.map +0 -1
  526. package/dist/spec.js.map +0 -1
  527. package/dist/telemetry/anomaly.d.ts.map +0 -1
  528. package/dist/telemetry/anomaly.js.map +0 -1
  529. package/dist/telemetry/spec.d.ts.map +0 -1
  530. package/dist/telemetry/spec.js.map +0 -1
  531. package/dist/telemetry/tracker.d.ts.map +0 -1
  532. package/dist/telemetry/tracker.js.map +0 -1
  533. package/dist/tests/runner.d.ts.map +0 -1
  534. package/dist/tests/runner.js.map +0 -1
  535. package/dist/tests/spec.d.ts.map +0 -1
  536. package/dist/tests/spec.js.map +0 -1
  537. package/dist/themes.d.ts.map +0 -1
  538. package/dist/themes.js.map +0 -1
  539. package/dist/translations/catalog.d.ts.map +0 -1
  540. package/dist/translations/tenant.d.ts.map +0 -1
  541. package/dist/types.d.ts.map +0 -1
  542. package/dist/workflow/adapters/db-adapter.d.ts.map +0 -1
  543. package/dist/workflow/adapters/db-adapter.js.map +0 -1
  544. package/dist/workflow/adapters/file-adapter.d.ts.map +0 -1
  545. package/dist/workflow/adapters/file-adapter.js.map +0 -1
  546. package/dist/workflow/adapters/memory-store.d.ts.map +0 -1
  547. package/dist/workflow/adapters/memory-store.js.map +0 -1
  548. package/dist/workflow/expression.d.ts.map +0 -1
  549. package/dist/workflow/expression.js.map +0 -1
  550. package/dist/workflow/runner.d.ts.map +0 -1
  551. package/dist/workflow/runner.js.map +0 -1
  552. package/dist/workflow/sla-monitor.d.ts.map +0 -1
  553. package/dist/workflow/sla-monitor.js.map +0 -1
  554. package/dist/workflow/spec.d.ts.map +0 -1
  555. package/dist/workflow/spec.js.map +0 -1
  556. package/dist/workflow/state.d.ts.map +0 -1
  557. package/dist/workflow/validation.d.ts.map +0 -1
  558. package/dist/workflow/validation.js.map +0 -1
@@ -1,2 +1 @@
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
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};
@@ -3,5 +3,4 @@ import { GraphQLSchema } from "graphql";
3
3
  //#region src/server/graphql-schema-export.d.ts
4
4
  declare const exportContractsToGraphQLSchema: (schema: GraphQLSchema, outputPathDir: string) => Promise<void>;
5
5
  //#endregion
6
- export { exportContractsToGraphQLSchema };
7
- //# sourceMappingURL=graphql-schema-export.d.ts.map
6
+ export { exportContractsToGraphQLSchema };
@@ -1,2 +1 @@
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
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};
@@ -48,5 +48,4 @@ declare function createMcpServer(server: McpServer, ops: SpecRegistry, resources
48
48
  presentationsV2?: PresentationDescriptorV2[];
49
49
  }): McpServer;
50
50
  //#endregion
51
- export { createMcpServer };
52
- //# sourceMappingURL=provider-mcp.d.ts.map
51
+ export { createMcpServer };
@@ -1,2 +1 @@
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
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};
@@ -37,5 +37,4 @@ declare function elysiaPlugin(app: Elysia, reg: SpecRegistry, ctxFactory: (c: {
37
37
  response: {};
38
38
  }>;
39
39
  //#endregion
40
- export { elysiaPlugin };
41
- //# sourceMappingURL=rest-elysia.d.ts.map
40
+ export { elysiaPlugin };
@@ -1,2 +1 @@
1
- import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r,i){let a=e(n,e=>r({request:e,store:t.store}),i);for(let e of n.listSpecs()){let n=e.transport?.rest?.method??(e.meta.kind===`query`?`GET`:`POST`),r=(i?.basePath??``)+(e.transport?.rest?.path??`/${e.meta.name.replace(/\./g,`/`)}/v${e.meta.version}`);t[n.toLowerCase()](r,({request:e})=>a(e))}return i?.cors&&t.options(`*`,({request:e})=>a(e)),t}export{t as elysiaPlugin};
2
- //# sourceMappingURL=rest-elysia.js.map
1
+ import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r,i){let a=e(n,e=>r({request:e,store:t.store}),i);for(let e of n.listSpecs()){let n=e.transport?.rest?.method??(e.meta.kind===`query`?`GET`:`POST`),r=(i?.basePath??``)+(e.transport?.rest?.path??`/${e.meta.name.replace(/\./g,`/`)}/v${e.meta.version}`);t[n.toLowerCase()](r,({request:e})=>a(e))}return i?.cors&&t.options(`*`,({request:e})=>a(e)),t}export{t as elysiaPlugin};
@@ -13,5 +13,4 @@ declare function expressRouter(express: {
13
13
  Router: () => Router;
14
14
  }, reg: SpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): Router;
15
15
  //#endregion
16
- export { expressRouter };
17
- //# sourceMappingURL=rest-express.d.ts.map
16
+ export { expressRouter };
@@ -1,2 +1 @@
1
- import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r,i){let a=t.Router();e(n,e=>{throw Error(`ctxFactory must be called from route`)},i);for(let t of n.listSpecs()){let o=t.transport?.rest?.method??(t.meta.kind===`query`?`GET`:`POST`),s=(i?.basePath??``)+(t.transport?.rest?.path??`/${t.meta.name.replace(/\./g,`/`)}/v${t.meta.version}`);a[o.toLowerCase()](s,async(t,a)=>{let s=new URL(`${t.protocol}://${t.get(`host`)}${t.originalUrl}`),c=new Request(s.toString(),{method:o,headers:Object.fromEntries(Object.entries(t.headers).map(([e,t])=>[e,String(t)])),body:o===`POST`?JSON.stringify(t.body??{}):void 0}),l=await e(n,()=>r(t),i)(c);a.status(l.status),l.headers.forEach((e,t)=>a.setHeader(t,e));let u=await l.text();a.send(u)})}return i?.cors&&a.options(`*`,(e,t)=>{let n=new Headers;new Response(null,{status:204}).headers.forEach((e,t)=>n.set(t,e)),t.status(204).send()}),a}export{t as expressRouter};
2
- //# sourceMappingURL=rest-express.js.map
1
+ import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r,i){let a=t.Router();e(n,e=>{throw Error(`ctxFactory must be called from route`)},i);for(let t of n.listSpecs()){let o=t.transport?.rest?.method??(t.meta.kind===`query`?`GET`:`POST`),s=(i?.basePath??``)+(t.transport?.rest?.path??`/${t.meta.name.replace(/\./g,`/`)}/v${t.meta.version}`);a[o.toLowerCase()](s,async(t,a)=>{let s=new URL(`${t.protocol}://${t.get(`host`)}${t.originalUrl}`),c=new Request(s.toString(),{method:o,headers:Object.fromEntries(Object.entries(t.headers).map(([e,t])=>[e,String(t)])),body:o===`POST`?JSON.stringify(t.body??{}):void 0}),l=await e(n,()=>r(t),i)(c);a.status(l.status),l.headers.forEach((e,t)=>a.setHeader(t,e));let u=await l.text();a.send(u)})}return i?.cors&&a.options(`*`,(e,t)=>{let n=new Headers;new Response(null,{status:204}).headers.forEach((e,t)=>n.set(t,e)),t.status(204).send()}),a}export{t as expressRouter};
@@ -29,5 +29,4 @@ interface RestOptions {
29
29
  */
30
30
  declare function createFetchHandler(reg: SpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): (req: Request) => Promise<Response>;
31
31
  //#endregion
32
- export { RestOptions, createFetchHandler };
33
- //# sourceMappingURL=rest-generic.d.ts.map
32
+ export { RestOptions, createFetchHandler };
@@ -1,2 +1 @@
1
- import{defaultRestPath as e}from"../jsonschema.js";function t(e){let t={};return t[`access-control-allow-origin`]=typeof e==`object`?e.origin??`*`:`*`,t.vary=`Origin`,typeof e==`object`?(e.methods&&(t[`access-control-allow-methods`]=e.methods.join(`, `)),e.headers&&(t[`access-control-allow-headers`]=e.headers.join(`, `)),e.credentials&&(t[`access-control-allow-credentials`]=`true`),typeof e.maxAge==`number`&&(t[`access-control-max-age`]=String(e.maxAge))):(t[`access-control-allow-methods`]=`GET,POST,OPTIONS`,t[`access-control-allow-headers`]=`content-type,x-idempotency-key,x-trace-id`),t}function n(e,t){return`${(e??``).replace(/\/+$/g,``)}/${t.replace(/^\/+/g,``)}`.replace(/\/{2,}/g,`/`)}function r(r,i,a){let o={basePath:a?.basePath??``,cors:a?.cors??!1,prettyJson:a?.prettyJson??!1,onError:a?.onError},s=r.listSpecs().map(t=>({method:t.transport?.rest?.method??(t.meta.kind===`query`?`GET`:`POST`),path:n(o.basePath,t.transport?.rest?.path??e(t.meta.name,t.meta.version)),name:t.meta.name,version:t.meta.version})),c=new Map;for(let e of s)c.set(`${e.method} ${e.path}`,e);Array.from(new Set(s.map(e=>e.method))).join(`, `);let l=(e,t,n)=>{let r=o.prettyJson?JSON.stringify(t,null,o.prettyJson):JSON.stringify(t),i={"content-type":`application/json; charset=utf-8`};return new Response(r,{status:e,headers:n?{...i,...n}:i})};return async function(e){let n=new URL(e.url),a=`${e.method.toUpperCase()} ${n.pathname}`;if(o.cors&&e.method.toUpperCase()===`OPTIONS`){let e=t(o.cors===!0?{}:o.cors);return new Response(null,{status:204,headers:{...e,"content-length":`0`}})}let s=c.get(a);if(!s){let e={};return o.cors&&Object.assign(e,t(o.cors===!0?{}:o.cors)),l(404,{error:`NotFound`,path:n.pathname},e)}try{let a={};if(s.method===`GET`)if(n.searchParams.has(`input`)){let e=n.searchParams.get(`input`);a=e?JSON.parse(e):{}}else{let e={};for(let[t,r]of n.searchParams.entries())e[t]=r;a=e}else{let t=e.headers.get(`content-type`)||``;if(t.includes(`application/json`))a=await e.json();else if(t.includes(`application/x-www-form-urlencoded`)){let t=await e.formData();a=Object.fromEntries(t.entries())}else if(!t)a={};else return l(415,{error:`UnsupportedMediaType`,contentType:t})}let c=i(e),u=await r.execute(s.name,s.version,a,c),d={};return o.cors&&Object.assign(d,t(o.cors===!0?{}:o.cors)),l(200,u,d)}catch(e){if(o.onError){let n=o.onError(e),r={};return o.cors&&Object.assign(r,t(o.cors===!0?{}:o.cors)),l(n.status,n.body,r)}let n={};return o.cors&&Object.assign(n,t(o.cors===!0?{}:o.cors)),e?.issues?l(400,{error:`ValidationError`,issues:e.issues},n):typeof e?.message==`string`&&e.message.startsWith(`PolicyDenied`)?l(403,{error:`PolicyDenied`},n):l(500,{error:`InternalError`},n)}}}export{r as createFetchHandler};
2
- //# sourceMappingURL=rest-generic.js.map
1
+ import{defaultRestPath as e}from"../jsonschema.js";function t(e){let t={};return t[`access-control-allow-origin`]=typeof e==`object`?e.origin??`*`:`*`,t.vary=`Origin`,typeof e==`object`?(e.methods&&(t[`access-control-allow-methods`]=e.methods.join(`, `)),e.headers&&(t[`access-control-allow-headers`]=e.headers.join(`, `)),e.credentials&&(t[`access-control-allow-credentials`]=`true`),typeof e.maxAge==`number`&&(t[`access-control-max-age`]=String(e.maxAge))):(t[`access-control-allow-methods`]=`GET,POST,OPTIONS`,t[`access-control-allow-headers`]=`content-type,x-idempotency-key,x-trace-id`),t}function n(e,t){return`${(e??``).replace(/\/+$/g,``)}/${t.replace(/^\/+/g,``)}`.replace(/\/{2,}/g,`/`)}function r(r,i,a){let o={basePath:a?.basePath??``,cors:a?.cors??!1,prettyJson:a?.prettyJson??!1,onError:a?.onError},s=r.listSpecs().map(t=>({method:t.transport?.rest?.method??(t.meta.kind===`query`?`GET`:`POST`),path:n(o.basePath,t.transport?.rest?.path??e(t.meta.name,t.meta.version)),name:t.meta.name,version:t.meta.version})),c=new Map;for(let e of s)c.set(`${e.method} ${e.path}`,e);Array.from(new Set(s.map(e=>e.method))).join(`, `);let l=(e,t,n)=>{let r=o.prettyJson?JSON.stringify(t,null,o.prettyJson):JSON.stringify(t),i={"content-type":`application/json; charset=utf-8`};return new Response(r,{status:e,headers:n?{...i,...n}:i})};return async function(e){let n=new URL(e.url),a=`${e.method.toUpperCase()} ${n.pathname}`;if(o.cors&&e.method.toUpperCase()===`OPTIONS`){let e=t(o.cors===!0?{}:o.cors);return new Response(null,{status:204,headers:{...e,"content-length":`0`}})}let s=c.get(a);if(!s){let e={};return o.cors&&Object.assign(e,t(o.cors===!0?{}:o.cors)),l(404,{error:`NotFound`,path:n.pathname},e)}try{let a={};if(s.method===`GET`)if(n.searchParams.has(`input`)){let e=n.searchParams.get(`input`);a=e?JSON.parse(e):{}}else{let e={};for(let[t,r]of n.searchParams.entries())e[t]=r;a=e}else{let t=e.headers.get(`content-type`)||``;if(t.includes(`application/json`))a=await e.json();else if(t.includes(`application/x-www-form-urlencoded`)){let t=await e.formData();a=Object.fromEntries(t.entries())}else if(!t)a={};else return l(415,{error:`UnsupportedMediaType`,contentType:t})}let c=i(e),u=await r.execute(s.name,s.version,a,c),d={};return o.cors&&Object.assign(d,t(o.cors===!0?{}:o.cors)),l(200,u,d)}catch(e){if(o.onError){let n=o.onError(e),r={};return o.cors&&Object.assign(r,t(o.cors===!0?{}:o.cors)),l(n.status,n.body,r)}let n={};return o.cors&&Object.assign(n,t(o.cors===!0?{}:o.cors)),e?.issues?l(400,{error:`ValidationError`,issues:e.issues},n):typeof e?.message==`string`&&e.message.startsWith(`PolicyDenied`)?l(403,{error:`PolicyDenied`},n):l(500,{error:`InternalError`},n)}}}export{r as createFetchHandler};
@@ -32,5 +32,4 @@ import { RestOptions } from "./rest-generic.js";
32
32
  */
33
33
  declare function makeNextAppHandler(reg: SpecRegistry, ctxFactory: (req: Request) => HandlerCtx, options?: RestOptions): (req: Request) => Promise<Response>;
34
34
  //#endregion
35
- export { makeNextAppHandler };
36
- //# sourceMappingURL=rest-next-app.d.ts.map
35
+ export { makeNextAppHandler };
@@ -1,2 +1 @@
1
- import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r){let i=e(t,n,r);return async function(e){return i(e)}}export{t as makeNextAppHandler};
2
- //# sourceMappingURL=rest-next-app.js.map
1
+ import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r){let i=e(t,n,r);return async function(e){return i(e)}}export{t as makeNextAppHandler};
@@ -8,5 +8,4 @@ declare function makeNextMcpServerFromRegistry(reg: SpecRegistry, ctxFactory: ()
8
8
  DELETE: (request: Request) => Promise<Response>;
9
9
  };
10
10
  //#endregion
11
- export { makeNextMcpServerFromRegistry };
12
- //# sourceMappingURL=rest-next-mcp.d.ts.map
11
+ export { makeNextMcpServerFromRegistry };
@@ -1,2 +1 @@
1
- import{defaultMcpTool as e,jsonSchemaForSpec as t}from"../jsonschema.js";import{ResourceTemplate as n}from"@modelcontextprotocol/sdk/server/mcp.js";import{createMcpHandler as r}from"mcp-handler";function i(i,a){let o=r(r=>{for(let o of i.listSpecs()){let{input:s,output:c,meta:l}=t(o);if(l.kind===`query`){let t=o.transport?.mcp?.toolName??e(o.meta.name,o.meta.version);r.registerResource(t,new n(`users://{userId}/profile`,{list:void 0}),{description:o.meta.description,inputSchema:s},(async(e,t,n)=>{let r=await i.execute(o.meta.name,o.meta.version,t??{},a());return{contents:[{uri:e.href,text:String(r)}]}}))}else if(l.kind===`command`){let t=o.transport?.mcp?.toolName??e(o.meta.name,o.meta.version);r.registerTool(t,{description:o.meta.description,inputSchema:s},(async(e,t)=>{let n=await i.execute(o.meta.name,o.meta.version,e??{},a());return{content:[{type:`text`,text:String(n)}]}}))}else throw Error(`Unsupported kind: ${l.kind}`)}},{},{basePath:`/api`});return{GET:o,POST:o,DELETE:o}}export{i as makeNextMcpServerFromRegistry};
2
- //# sourceMappingURL=rest-next-mcp.js.map
1
+ import{defaultMcpTool as e,jsonSchemaForSpec as t}from"../jsonschema.js";import{ResourceTemplate as n}from"@modelcontextprotocol/sdk/server/mcp.js";import{createMcpHandler as r}from"mcp-handler";function i(i,a){let o=r(r=>{for(let o of i.listSpecs()){let{input:s,output:c,meta:l}=t(o);if(l.kind===`query`){let t=o.transport?.mcp?.toolName??e(o.meta.name,o.meta.version);r.registerResource(t,new n(`users://{userId}/profile`,{list:void 0}),{description:o.meta.description,inputSchema:s},(async(e,t,n)=>{let r=await i.execute(o.meta.name,o.meta.version,t??{},a());return{contents:[{uri:e.href,text:String(r)}]}}))}else if(l.kind===`command`){let t=o.transport?.mcp?.toolName??e(o.meta.name,o.meta.version);r.registerTool(t,{description:o.meta.description,inputSchema:s},(async(e,t)=>{let n=await i.execute(o.meta.name,o.meta.version,e??{},a());return{content:[{type:`text`,text:String(n)}]}}))}else throw Error(`Unsupported kind: ${l.kind}`)}},{},{basePath:`/api`});return{GET:o,POST:o,DELETE:o}}export{i as makeNextMcpServerFromRegistry};
@@ -6,5 +6,4 @@ import { NextApiRequest, NextApiResponse } from "next";
6
6
  //#region src/server/rest-next-pages.d.ts
7
7
  declare function makeNextPagesHandler(reg: SpecRegistry, ctxFactory: (req: NextApiRequest) => HandlerCtx, options?: RestOptions): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
8
8
  //#endregion
9
- export { makeNextPagesHandler };
10
- //# sourceMappingURL=rest-next-pages.d.ts.map
9
+ export { makeNextPagesHandler };
@@ -1,2 +1 @@
1
- import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r){return e(t,e=>{throw Error(`Use per-request wrapper`)},r),async function(i,a){let o=`${i.headers[`x-forwarded-proto`]??`http`}://${i.headers.host}${i.url}`,s=i.method?.toUpperCase()||`GET`,c=new Request(o,{method:s,headers:Object.fromEntries(Object.entries(i.headers).map(([e,t])=>[e,String(t)])),body:s===`POST`?JSON.stringify(i.body??{}):void 0}),l=await e(t,()=>n(i),r)(c);a.status(l.status),l.headers.forEach((e,t)=>a.setHeader(t,e));let u=await l.text();a.send(u)}}export{t as makeNextPagesHandler};
2
- //# sourceMappingURL=rest-next-pages.js.map
1
+ import{createFetchHandler as e}from"./rest-generic.js";function t(t,n,r){return e(t,e=>{throw Error(`Use per-request wrapper`)},r),async function(i,a){let o=`${i.headers[`x-forwarded-proto`]??`http`}://${i.headers.host}${i.url}`,s=i.method?.toUpperCase()||`GET`,c=new Request(o,{method:s,headers:Object.fromEntries(Object.entries(i.headers).map(([e,t])=>[e,String(t)])),body:s===`POST`?JSON.stringify(i.body??{}):void 0}),l=await e(t,()=>n(i),r)(c);a.status(l.status),l.headers.forEach((e,t)=>a.setHeader(t,e));let u=await l.text();a.send(u)}}export{t as makeNextPagesHandler};
package/dist/spec.d.ts CHANGED
@@ -168,5 +168,4 @@ declare const defineQuery: <I extends AnySchemaModel, O extends AnySchemaModel |
168
168
  policy: Omit<ContractSpec<I, O, E>["policy"], "idempotent">;
169
169
  }) => ContractSpec<I, O, E>;
170
170
  //#endregion
171
- export { AnyContractSpec, ContractSpec, EmitDecl, EmitDeclInline, EmitDeclRef, OpKind, TelemetryTrigger, defineCommand, defineQuery, isEmitDeclRef };
172
- //# sourceMappingURL=spec.d.ts.map
171
+ export { AnyContractSpec, ContractSpec, EmitDecl, EmitDeclInline, EmitDeclRef, OpKind, TelemetryTrigger, defineCommand, defineQuery, isEmitDeclRef };
package/dist/spec.js CHANGED
@@ -1,2 +1 @@
1
- const e=e=>`ref`in e,t=e=>({...e,meta:{...e.meta,kind:`command`},policy:{...e.policy,idempotent:e.policy?.policy?.idempotent??!1}}),n=e=>({...e,meta:{...e.meta,kind:`query`},policy:{...e.policy,idempotent:!0}});export{t as defineCommand,n as defineQuery,e as isEmitDeclRef};
2
- //# sourceMappingURL=spec.js.map
1
+ const e=e=>`ref`in e,t=e=>({...e,meta:{...e.meta,kind:`command`},policy:{...e.policy,idempotent:e.policy?.policy?.idempotent??!1}}),n=e=>({...e,meta:{...e.meta,kind:`query`},policy:{...e.policy,idempotent:!0}});export{t as defineCommand,n as defineQuery,e as isEmitDeclRef};
@@ -24,5 +24,4 @@ declare class TelemetryAnomalyMonitor {
24
24
  reset(): void;
25
25
  }
26
26
  //#endregion
27
- export { TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions };
28
- //# sourceMappingURL=anomaly.d.ts.map
27
+ export { TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions };
@@ -1,2 +1 @@
1
- var e=class{onAnomaly;now;samples=new Map;constructor(e={}){this.onAnomaly=e.onAnomaly,this.now=e.now??(()=>new Date)}observe(e){let t=e.definition.anomalyDetection;if(!t?.enabled||!t.thresholds?.length)return;let n=`${e.name}.v${e.version}`,r=(this.samples.get(n)??0)+1;if(this.samples.set(n,r),!(typeof t.minimumSample==`number`&&r<t.minimumSample))for(let n of t.thresholds){let r=this.extractMetric(e,n.metric);typeof r==`number`&&(typeof n.min==`number`&&r<n.min&&this.emit(e,t,n.metric,r,`min`),typeof n.max==`number`&&r>n.max&&this.emit(e,t,n.metric,r,`max`))}}extractMetric(e,t){let n=e.properties[t];if(typeof n==`number`)return n;if(typeof n==`object`&&n&&`value`in n){let e=n.value;return typeof e==`number`?e:void 0}}emit(e,t,n,r,i){this.onAnomaly?.({dispatch:e,threshold:t,metric:n,value:r,type:i})}reset(){this.samples.clear()}};export{e as TelemetryAnomalyMonitor};
2
- //# sourceMappingURL=anomaly.js.map
1
+ var e=class{onAnomaly;now;samples=new Map;constructor(e={}){this.onAnomaly=e.onAnomaly,this.now=e.now??(()=>new Date)}observe(e){let t=e.definition.anomalyDetection;if(!t?.enabled||!t.thresholds?.length)return;let n=`${e.name}.v${e.version}`,r=(this.samples.get(n)??0)+1;if(this.samples.set(n,r),!(typeof t.minimumSample==`number`&&r<t.minimumSample))for(let n of t.thresholds){let r=this.extractMetric(e,n.metric);typeof r==`number`&&(typeof n.min==`number`&&r<n.min&&this.emit(e,t,n.metric,r,`min`),typeof n.max==`number`&&r>n.max&&this.emit(e,t,n.metric,r,`max`))}}extractMetric(e,t){let n=e.properties[t];if(typeof n==`number`)return n;if(typeof n==`object`&&n&&`value`in n){let e=n.value;return typeof e==`number`?e:void 0}}emit(e,t,n,r,i){this.onAnomaly?.({dispatch:e,threshold:t,metric:n,value:r,type:i})}reset(){this.samples.clear()}};export{e as TelemetryAnomalyMonitor};
@@ -95,5 +95,4 @@ declare class TelemetryRegistry {
95
95
  }
96
96
  declare function makeTelemetryKey(meta: TelemetryMeta): string;
97
97
  //#endregion
98
- export { TelemetryAnomalyAction, TelemetryAnomalyDetectionConfig, TelemetryAnomalyThreshold, TelemetryConfig, TelemetryEventDef, TelemetryMeta, TelemetryPrivacyLevel, TelemetryPropertyDef, TelemetryProviderConfig, TelemetryRegistry, TelemetryRetentionConfig, TelemetrySamplingConfig, TelemetrySpec, makeTelemetryKey };
99
- //# sourceMappingURL=spec.d.ts.map
98
+ export { TelemetryAnomalyAction, TelemetryAnomalyDetectionConfig, TelemetryAnomalyThreshold, TelemetryConfig, TelemetryEventDef, TelemetryMeta, TelemetryPrivacyLevel, TelemetryPropertyDef, TelemetryProviderConfig, TelemetryRegistry, TelemetryRetentionConfig, TelemetrySamplingConfig, TelemetrySpec, makeTelemetryKey };
@@ -1,2 +1 @@
1
- const e=e=>`${e.name}.v${e.version}`;var t=class{items=new Map;eventsByKey=new Map;specByEventKey=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate TelemetrySpec registration for ${n}`);this.items.set(n,t);for(let e of t.events)this.eventsByKey.set(`${e.name}.v${e.version}`,e),this.specByEventKey.set(`${e.name}.v${e.version}`,t);return this}list(){return[...this.items.values()]}get(e,t){if(t!=null)return this.items.get(`${e}.v${t}`);let n,r=-1/0;for(let t of this.items.values())t.meta.name===e&&t.meta.version>r&&(r=t.meta.version,n=t);return n}findEventDef(e,t){if(t!=null)return this.eventsByKey.get(`${e}.v${t}`);let n,r=-1/0;for(let[t,i]of this.eventsByKey.entries()){let[a,o]=t.split(`.v`);if(a!==e)continue;let s=Number(o);Number.isFinite(s)&&s>r&&(r=s,n=i)}return n}getSpecForEvent(e,t){if(t!=null)return this.specByEventKey.get(`${e}.v${t}`);let n,r=-1/0;for(let[t,i]of this.specByEventKey.entries()){let[a,o]=t.split(`.v`);if(a!==e)continue;let s=Number(o);Number.isFinite(s)&&s>r&&(r=s,n=i)}return n}};function n(t){return e(t)}export{t as TelemetryRegistry,n as makeTelemetryKey};
2
- //# sourceMappingURL=spec.js.map
1
+ const e=e=>`${e.name}.v${e.version}`;var t=class{items=new Map;eventsByKey=new Map;specByEventKey=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate TelemetrySpec registration for ${n}`);this.items.set(n,t);for(let e of t.events)this.eventsByKey.set(`${e.name}.v${e.version}`,e),this.specByEventKey.set(`${e.name}.v${e.version}`,t);return this}list(){return[...this.items.values()]}get(e,t){if(t!=null)return this.items.get(`${e}.v${t}`);let n,r=-1/0;for(let t of this.items.values())t.meta.name===e&&t.meta.version>r&&(r=t.meta.version,n=t);return n}findEventDef(e,t){if(t!=null)return this.eventsByKey.get(`${e}.v${t}`);let n,r=-1/0;for(let[t,i]of this.eventsByKey.entries()){let[a,o]=t.split(`.v`);if(a!==e)continue;let s=Number(o);Number.isFinite(s)&&s>r&&(r=s,n=i)}return n}getSpecForEvent(e,t){if(t!=null)return this.specByEventKey.get(`${e}.v${t}`);let n,r=-1/0;for(let[t,i]of this.specByEventKey.entries()){let[a,o]=t.split(`.v`);if(a!==e)continue;let s=Number(o);Number.isFinite(s)&&s>r&&(r=s,n=i)}return n}};function n(t){return e(t)}export{t as TelemetryRegistry,n as makeTelemetryKey};
@@ -48,5 +48,4 @@ declare class TelemetryTracker {
48
48
  private redactProperties;
49
49
  }
50
50
  //#endregion
51
- export { RuntimeTelemetryProvider, TelemetryDispatch, TelemetryEventContext, TelemetryTracker, TelemetryTrackerOptions };
52
- //# sourceMappingURL=tracker.d.ts.map
51
+ export { RuntimeTelemetryProvider, TelemetryDispatch, TelemetryEventContext, TelemetryTracker, TelemetryTrackerOptions };
@@ -1,2 +1 @@
1
- import{randomUUID as e}from"crypto";const t=e=>e==null?e:typeof e==`string`?`REDACTED`:typeof e==`number`?0:typeof e==`boolean`?!1:Array.isArray(e)?e.map(()=>`REDACTED`):typeof e==`object`?Object.fromEntries(Object.keys(e).map(e=>[e,`REDACTED`])):`REDACTED`;var n=class{providers=new Map;registry;anomalyMonitor;random;clock;constructor(e){this.registry=e.registry,this.anomalyMonitor=e.anomalyMonitor,this.random=e.random??Math.random,this.clock=e.clock??(()=>new Date);for(let t of e.providers??[])this.providers.set(t.id,t)}registerProvider(e){this.providers.set(e.id,e)}unregisterProvider(e){this.providers.delete(e)}async track(t,n,r,i={}){let a=this.registry.findEventDef(t,n);if(!a)return!1;let o=this.registry.getSpecForEvent(a.name,a.version);if(!o||!this.shouldSample(a.sampling??o.config?.defaultSamplingRate))return!1;let s=this.redactProperties(a,r),c={id:e(),name:a.name,version:a.version,occurredAt:this.clock().toISOString(),properties:s,privacy:a.privacy,context:i,tags:a.tags,spec:o,definition:a};return await Promise.all([...this.providers.values()].map(e=>e.send(c))),this.anomalyMonitor?.observe(c),!0}shouldSample(e){return typeof e==`number`?this.random()<e:e?this.random()<e.rate:!0}redactProperties(e,n){let r={};for(let[i,a]of Object.entries(n)){let n=e.properties[i];if(!n){r[i]=a;continue}n.redact||n.pii||e.privacy===`sensitive`?r[i]=t(a):r[i]=a}return r}};export{n as TelemetryTracker};
2
- //# sourceMappingURL=tracker.js.map
1
+ import{randomUUID as e}from"crypto";const t=e=>e==null?e:typeof e==`string`?`REDACTED`:typeof e==`number`?0:typeof e==`boolean`?!1:Array.isArray(e)?e.map(()=>`REDACTED`):typeof e==`object`?Object.fromEntries(Object.keys(e).map(e=>[e,`REDACTED`])):`REDACTED`;var n=class{providers=new Map;registry;anomalyMonitor;random;clock;constructor(e){this.registry=e.registry,this.anomalyMonitor=e.anomalyMonitor,this.random=e.random??Math.random,this.clock=e.clock??(()=>new Date);for(let t of e.providers??[])this.providers.set(t.id,t)}registerProvider(e){this.providers.set(e.id,e)}unregisterProvider(e){this.providers.delete(e)}async track(t,n,r,i={}){let a=this.registry.findEventDef(t,n);if(!a)return!1;let o=this.registry.getSpecForEvent(a.name,a.version);if(!o||!this.shouldSample(a.sampling??o.config?.defaultSamplingRate))return!1;let s=this.redactProperties(a,r),c={id:e(),name:a.name,version:a.version,occurredAt:this.clock().toISOString(),properties:s,privacy:a.privacy,context:i,tags:a.tags,spec:o,definition:a};return await Promise.all([...this.providers.values()].map(e=>e.send(c))),this.anomalyMonitor?.observe(c),!0}shouldSample(e){return typeof e==`number`?this.random()<e:e?this.random()<e.rate:!0}redactProperties(e,n){let r={};for(let[i,a]of Object.entries(n)){let n=e.properties[i];if(!n){r[i]=a;continue}n.redact||n.pii||e.privacy===`sensitive`?r[i]=t(a):r[i]=a}return r}};export{n as TelemetryTracker};
@@ -40,5 +40,4 @@ declare class TestRunner {
40
40
  private evaluateEventsAssertion;
41
41
  }
42
42
  //#endregion
43
- export { AssertionResult, ScenarioRunResult, TestRunResult, TestRunner, TestRunnerConfig };
44
- //# sourceMappingURL=runner.d.ts.map
43
+ export { AssertionResult, ScenarioRunResult, TestRunResult, TestRunner, TestRunnerConfig };
@@ -1,2 +1 @@
1
- import"../index.js";import{deepStrictEqual as e}from"node:assert";var t=class{constructor(e){this.config=e}async run(e){let t=[],n=0,r=0;for(let i of e.scenarios){await this.config.beforeEach?.(i);let a=await this.runScenario(e,i);t.push(a),a.status===`passed`?n+=1:r+=1,await this.config.afterEach?.(i,a)}return{spec:e,scenarios:t,passed:n,failed:r}}async runScenario(e,t){let n=[];try{let r=await this.createContext(),i=[...e.fixtures??[],...t.given??[]],a=[];for(let e of i)await this.executeOperation(e,r,a);let o=await this.executeOperation(t.when,r,a),s=t.then??[];for(let e of s){let t=this.evaluateAssertion(e,o,a);n.push(t)}return{scenario:t,status:n.some(e=>e.status===`failed`)?`failed`:`passed`,assertionResults:n}}catch(e){return{scenario:t,status:`failed`,error:e,assertionResults:n}}}async createContext(){return{...await this.config.createContext?.()??{}}}async executeOperation(e,t,n){let r={...t,eventPublisher:async e=>{n.push({name:e.name,version:e.version,payload:e.payload}),await t.eventPublisher?.(e)}};try{return{output:await this.config.registry.execute(e.operation.name,e.operation.version,e.input??null,r),events:n}}catch(e){return{error:e,events:n}}}evaluateAssertion(e,t,n){switch(e.type){case`expectOutput`:return this.evaluateOutputAssertion(e,t);case`expectError`:return this.evaluateErrorAssertion(e,t);case`expectEvents`:return this.evaluateEventsAssertion(e,n);default:return{assertion:e,status:`failed`,message:`Unknown assertion type ${e.type}`}}}evaluateOutputAssertion(t,n){if(n.error)return{assertion:t,status:`failed`,message:`Expected output but operation threw error: ${n.error.message}`};try{return e(n.output,t.match),{assertion:t,status:`passed`}}catch(e){return{assertion:t,status:`failed`,message:e instanceof Error?e.message:`Output assertion failed`}}}evaluateErrorAssertion(e,t){return t.error?e.messageIncludes&&!t.error.message.includes(e.messageIncludes)?{assertion:e,status:`failed`,message:`Error message "${t.error.message}" did not include expected substring "${e.messageIncludes}"`}:{assertion:e,status:`passed`}:{assertion:e,status:`failed`,message:`Expected an error but operation completed successfully`}}evaluateEventsAssertion(e,t){let n=[];for(let r of e.events){let e=t.filter(e=>e.name===r.name&&e.version===r.version).length;typeof r.min==`number`&&e<r.min||typeof r.max==`number`&&e>r.max?n.push(`Event ${r.name}.v${r.version} occurred ${e} times (expected ${r.min??0} - ${r.max??`∞`})`):r.min===void 0&&r.max===void 0&&e===0&&n.push(`Event ${r.name}.v${r.version} did not occur`)}return n.length>0?{assertion:e,status:`failed`,message:n.join(`; `)}:{assertion:e,status:`passed`}}};export{t as TestRunner};
2
- //# sourceMappingURL=runner.js.map
1
+ import"../index.js";import{deepStrictEqual as e}from"node:assert";var t=class{constructor(e){this.config=e}async run(e){let t=[],n=0,r=0;for(let i of e.scenarios){await this.config.beforeEach?.(i);let a=await this.runScenario(e,i);t.push(a),a.status===`passed`?n+=1:r+=1,await this.config.afterEach?.(i,a)}return{spec:e,scenarios:t,passed:n,failed:r}}async runScenario(e,t){let n=[];try{let r=await this.createContext(),i=[...e.fixtures??[],...t.given??[]],a=[];for(let e of i)await this.executeOperation(e,r,a);let o=await this.executeOperation(t.when,r,a),s=t.then??[];for(let e of s){let t=this.evaluateAssertion(e,o,a);n.push(t)}return{scenario:t,status:n.some(e=>e.status===`failed`)?`failed`:`passed`,assertionResults:n}}catch(e){return{scenario:t,status:`failed`,error:e,assertionResults:n}}}async createContext(){return{...await this.config.createContext?.()??{}}}async executeOperation(e,t,n){let r={...t,eventPublisher:async e=>{n.push({name:e.name,version:e.version,payload:e.payload}),await t.eventPublisher?.(e)}};try{return{output:await this.config.registry.execute(e.operation.name,e.operation.version,e.input??null,r),events:n}}catch(e){return{error:e,events:n}}}evaluateAssertion(e,t,n){switch(e.type){case`expectOutput`:return this.evaluateOutputAssertion(e,t);case`expectError`:return this.evaluateErrorAssertion(e,t);case`expectEvents`:return this.evaluateEventsAssertion(e,n);default:return{assertion:e,status:`failed`,message:`Unknown assertion type ${e.type}`}}}evaluateOutputAssertion(t,n){if(n.error)return{assertion:t,status:`failed`,message:`Expected output but operation threw error: ${n.error.message}`};try{return e(n.output,t.match),{assertion:t,status:`passed`}}catch(e){return{assertion:t,status:`failed`,message:e instanceof Error?e.message:`Output assertion failed`}}}evaluateErrorAssertion(e,t){return t.error?e.messageIncludes&&!t.error.message.includes(e.messageIncludes)?{assertion:e,status:`failed`,message:`Error message "${t.error.message}" did not include expected substring "${e.messageIncludes}"`}:{assertion:e,status:`passed`}:{assertion:e,status:`failed`,message:`Expected an error but operation completed successfully`}}evaluateEventsAssertion(e,t){let n=[];for(let r of e.events){let e=t.filter(e=>e.name===r.name&&e.version===r.version).length;typeof r.min==`number`&&e<r.min||typeof r.max==`number`&&e>r.max?n.push(`Event ${r.name}.v${r.version} occurred ${e} times (expected ${r.min??0} - ${r.max??`∞`})`):r.min===void 0&&r.max===void 0&&e===0&&n.push(`Event ${r.name}.v${r.version} did not occur`)}return n.length>0?{assertion:e,status:`failed`,message:n.join(`; `)}:{assertion:e,status:`passed`}}};export{t as TestRunner};
@@ -86,5 +86,4 @@ declare class TestRegistry {
86
86
  }
87
87
  declare function makeTestKey(meta: TestSpecMeta): string;
88
88
  //#endregion
89
- export { Action, Assertion, CoverageRequirement, ExpectErrorAssertion, ExpectEventsAssertion, ExpectOutputAssertion, ExpectedEvent, Fixture, OperationTargetRef, TestRegistry, TestScenario, TestSpec, TestSpecMeta, TestSpecRef, TestTarget, WorkflowTargetRef, makeTestKey };
90
- //# sourceMappingURL=spec.d.ts.map
89
+ export { Action, Assertion, CoverageRequirement, ExpectErrorAssertion, ExpectEventsAssertion, ExpectOutputAssertion, ExpectedEvent, Fixture, OperationTargetRef, TestRegistry, TestScenario, TestSpec, TestSpecMeta, TestSpecRef, TestTarget, WorkflowTargetRef, makeTestKey };
@@ -1,2 +1 @@
1
- const e=e=>`${e.name}.v${e.version}`;var t=class{items=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate TestSpec registration for ${n}`);return this.items.set(n,t),this}list(){return[...this.items.values()]}get(e,t){if(t!=null)return this.items.get(`${e}.v${t}`);let n,r=-1/0;for(let t of this.items.values())t.meta.name===e&&t.meta.version>r&&(r=t.meta.version,n=t);return n}};function n(t){return e(t)}export{t as TestRegistry,n as makeTestKey};
2
- //# sourceMappingURL=spec.js.map
1
+ const e=e=>`${e.name}.v${e.version}`;var t=class{items=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate TestSpec registration for ${n}`);return this.items.set(n,t),this}list(){return[...this.items.values()]}get(e,t){if(t!=null)return this.items.get(`${e}.v${t}`);let n,r=-1/0;for(let t of this.items.values())t.meta.name===e&&t.meta.version>r&&(r=t.meta.version,n=t);return n}};function n(t){return e(t)}export{t as TestRegistry,n as makeTestKey};
package/dist/themes.d.ts CHANGED
@@ -52,5 +52,4 @@ declare class ThemeRegistry {
52
52
  }
53
53
  declare function makeThemeRef(spec: ThemeSpec): ThemeRef;
54
54
  //#endregion
55
- export { ComponentVariantDefinition, ComponentVariantSpec, ThemeMeta, ThemeOverride, ThemeRef, ThemeRegistry, ThemeScope, ThemeSpec, ThemeToken, ThemeTokens, makeThemeRef };
56
- //# sourceMappingURL=themes.d.ts.map
55
+ export { ComponentVariantDefinition, ComponentVariantSpec, ThemeMeta, ThemeOverride, ThemeRef, ThemeRegistry, ThemeScope, ThemeSpec, ThemeToken, ThemeTokens, makeThemeRef };
package/dist/themes.js CHANGED
@@ -1,2 +1 @@
1
- const e=e=>`${e.name}.v${e.version}`;var t=class{items=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate theme ${n}`);return this.items.set(n,t),this}list(){return[...this.items.values()]}get(t,n){if(n!=null)return this.items.get(e({name:t,version:n}));let r,i=-1/0;for(let e of this.items.values())e.meta.name===t&&e.meta.version>i&&(i=e.meta.version,r=e);return r}};function n(e){return{name:e.meta.name,version:e.meta.version}}export{t as ThemeRegistry,n as makeThemeRef};
2
- //# sourceMappingURL=themes.js.map
1
+ const e=e=>`${e.name}.v${e.version}`;var t=class{items=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate theme ${n}`);return this.items.set(n,t),this}list(){return[...this.items.values()]}get(t,n){if(n!=null)return this.items.get(e({name:t,version:n}));let r,i=-1/0;for(let e of this.items.values())e.meta.name===t&&e.meta.version>i&&(i=e.meta.version,r=e);return r}};function n(e){return{name:e.meta.name,version:e.meta.version}}export{t as ThemeRegistry,n as makeThemeRef};
@@ -25,5 +25,4 @@ interface BlueprintTranslationCatalog {
25
25
  entries: TranslationEntry[];
26
26
  }
27
27
  //#endregion
28
- export { BlueprintTranslationCatalog, Locale, MessageKey, PlatformTranslationCatalog, TranslationCatalogMeta, TranslationEntry };
29
- //# sourceMappingURL=catalog.d.ts.map
28
+ export { BlueprintTranslationCatalog, Locale, MessageKey, PlatformTranslationCatalog, TranslationCatalogMeta, TranslationEntry };
@@ -12,5 +12,4 @@ interface TenantTranslationOverride {
12
12
  updatedAt?: string;
13
13
  }
14
14
  //#endregion
15
- export { TenantTranslationOverride };
16
- //# sourceMappingURL=tenant.d.ts.map
15
+ export { TenantTranslationOverride };
package/dist/types.d.ts CHANGED
@@ -85,5 +85,4 @@ interface HandlerCtx {
85
85
  specVariantResolver?: SpecVariantResolver;
86
86
  }
87
87
  //#endregion
88
- export { Actor, Channel, EventPublisher, FieldLevelDecision, HandlerCtx, PolicyDecider, PolicyDeciderInput, PolicyDecision, RateLimiter, TranslationResolver };
89
- //# sourceMappingURL=types.d.ts.map
88
+ export { Actor, Channel, EventPublisher, FieldLevelDecision, HandlerCtx, PolicyDecider, PolicyDeciderInput, PolicyDecision, RateLimiter, TranslationResolver };
@@ -31,5 +31,4 @@ declare class PrismaStateStore implements StateStore {
31
31
  list(filters?: WorkflowStateFilters): Promise<WorkflowState[]>;
32
32
  }
33
33
  //#endregion
34
- export { PrismaStateStore };
35
- //# sourceMappingURL=db-adapter.d.ts.map
34
+ export { PrismaStateStore };
@@ -1,2 +1 @@
1
- var e=class{constructor(e){this.prisma=e}async create(e){await this.prisma.workflowState.create({data:{id:e.workflowId,name:e.workflowName,version:e.workflowVersion,status:e.status,currentStep:e.currentStep,data:e.data,history:e.history,retryCounts:e.retryCounts??{},createdAt:e.createdAt,updatedAt:e.updatedAt}})}async get(e){let t=await this.prisma.workflowState.findUnique({where:{id:e}});if(t)return{workflowId:t.id,workflowName:t.name,workflowVersion:t.version,currentStep:t.currentStep,data:t.data,history:t.history,retryCounts:t.retryCounts,status:t.status,createdAt:t.createdAt,updatedAt:t.updatedAt}}async update(e,t){let n=await this.get(e);if(!n)throw Error(`Workflow ${e} not found`);let r=t(n),i=await this.prisma.workflowState.update({where:{id:e},data:{status:r.status,currentStep:r.currentStep,data:r.data,history:r.history,retryCounts:r.retryCounts,updatedAt:r.updatedAt}});return{workflowId:i.id,workflowName:i.name,workflowVersion:i.version,currentStep:i.currentStep,data:i.data,history:i.history,retryCounts:i.retryCounts,status:i.status,createdAt:i.createdAt,updatedAt:i.updatedAt}}async list(e){let t={};return e?.status&&(t.status=e.status),(await this.prisma.workflowState.findMany({where:t})).map(e=>({workflowId:e.id,workflowName:e.name,workflowVersion:e.version,currentStep:e.currentStep,data:e.data,history:e.history,retryCounts:e.retryCounts,status:e.status,createdAt:e.createdAt,updatedAt:e.updatedAt}))}};export{e as PrismaStateStore};
2
- //# sourceMappingURL=db-adapter.js.map
1
+ var e=class{constructor(e){this.prisma=e}async create(e){await this.prisma.workflowState.create({data:{id:e.workflowId,name:e.workflowName,version:e.workflowVersion,status:e.status,currentStep:e.currentStep,data:e.data,history:e.history,retryCounts:e.retryCounts??{},createdAt:e.createdAt,updatedAt:e.updatedAt}})}async get(e){let t=await this.prisma.workflowState.findUnique({where:{id:e}});if(t)return{workflowId:t.id,workflowName:t.name,workflowVersion:t.version,currentStep:t.currentStep,data:t.data,history:t.history,retryCounts:t.retryCounts,status:t.status,createdAt:t.createdAt,updatedAt:t.updatedAt}}async update(e,t){let n=await this.get(e);if(!n)throw Error(`Workflow ${e} not found`);let r=t(n),i=await this.prisma.workflowState.update({where:{id:e},data:{status:r.status,currentStep:r.currentStep,data:r.data,history:r.history,retryCounts:r.retryCounts,updatedAt:r.updatedAt}});return{workflowId:i.id,workflowName:i.name,workflowVersion:i.version,currentStep:i.currentStep,data:i.data,history:i.history,retryCounts:i.retryCounts,status:i.status,createdAt:i.createdAt,updatedAt:i.updatedAt}}async list(e){let t={};return e?.status&&(t.status=e.status),(await this.prisma.workflowState.findMany({where:t})).map(e=>({workflowId:e.id,workflowName:e.name,workflowVersion:e.version,currentStep:e.currentStep,data:e.data,history:e.history,retryCounts:e.retryCounts,status:e.status,createdAt:e.createdAt,updatedAt:e.updatedAt}))}};export{e as PrismaStateStore};
@@ -11,5 +11,4 @@ interface FileStateStoreOptions {
11
11
  */
12
12
  declare function createFileStateStore(_options: FileStateStoreOptions): StateStore;
13
13
  //#endregion
14
- export { FileStateStoreOptions, createFileStateStore };
15
- //# sourceMappingURL=file-adapter.d.ts.map
14
+ export { FileStateStoreOptions, createFileStateStore };
@@ -1,2 +1 @@
1
- function e(e){throw Error(`File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.`)}export{e as createFileStateStore};
2
- //# sourceMappingURL=file-adapter.js.map
1
+ function e(e){throw Error(`File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.`)}export{e as createFileStateStore};
@@ -15,5 +15,4 @@ declare class InMemoryStateStore implements StateStore {
15
15
  clear(): void;
16
16
  }
17
17
  //#endregion
18
- export { InMemoryStateStore };
19
- //# sourceMappingURL=memory-store.d.ts.map
18
+ export { InMemoryStateStore };
@@ -1,2 +1 @@
1
- function e(e){return{...e,data:n(e.data),history:e.history.map(e=>({...e,input:n(e.input),output:n(e.output),startedAt:new Date(e.startedAt),completedAt:e.completedAt?new Date(e.completedAt):void 0})),createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt)}}var t=class{items=new Map;async create(t){if(this.items.has(t.workflowId))throw Error(`Workflow state already exists: ${t.workflowId}`);this.items.set(t.workflowId,e(t))}async get(t){let n=this.items.get(t);return n?e(n):void 0}async update(t,n){let r=this.items.get(t);if(!r)throw Error(`Workflow state not found for ${t}`);let i=e(n(e(r)));return this.items.set(t,i),e(i)}async list(t){let n=[...this.items.values()];return(t?.status?n.filter(e=>e.status===t.status):n).map(e)}clear(){this.items.clear()}};function n(e){if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e))return e.map(e=>n(e));if(e&&typeof e==`object`){let t={};for(let[r,i]of Object.entries(e))t[r]=n(i);return t}return e}export{t as InMemoryStateStore};
2
- //# sourceMappingURL=memory-store.js.map
1
+ function e(e){return{...e,data:n(e.data),history:e.history.map(e=>({...e,input:n(e.input),output:n(e.output),startedAt:new Date(e.startedAt),completedAt:e.completedAt?new Date(e.completedAt):void 0})),createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt)}}var t=class{items=new Map;async create(t){if(this.items.has(t.workflowId))throw Error(`Workflow state already exists: ${t.workflowId}`);this.items.set(t.workflowId,e(t))}async get(t){let n=this.items.get(t);return n?e(n):void 0}async update(t,n){let r=this.items.get(t);if(!r)throw Error(`Workflow state not found for ${t}`);let i=e(n(e(r)));return this.items.set(t,i),e(i)}async list(t){let n=[...this.items.values()];return(t?.status?n.filter(e=>e.status===t.status):n).map(e)}clear(){this.items.clear()}};function n(e){if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e))return e.map(e=>n(e));if(e&&typeof e==`object`){let t={};for(let[r,i]of Object.entries(e))t[r]=n(i);return t}return e}export{t as InMemoryStateStore};
@@ -6,5 +6,4 @@ interface ExpressionContext {
6
6
  }
7
7
  declare function evaluateExpression(expression: string | undefined, ctx: ExpressionContext): boolean;
8
8
  //#endregion
9
- export { ExpressionContext, evaluateExpression };
10
- //# sourceMappingURL=expression.d.ts.map
9
+ export { ExpressionContext, evaluateExpression };
@@ -1,2 +1 @@
1
- function e(n,r){if(!n)return!0;let i=n.trim();if(!i)return!0;let a=o(i,`||`);if(a.length>1)return a.some(t=>e(t,r));let s=o(i,`&&`);return s.length>1?s.every(t=>e(t,r)):t(i,r)}function t(e,a){let o=e.trim();if(!o)return!0;if(o.startsWith(`!`))return!t(o.slice(1),a);let s=o.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);if(s){let[,e,t,o,c]=s;return n(i(e,a,t),r(c),o)}let c=o.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)$/);if(c){let[,e,t]=c;return!!i(e,a,t)}return!!r(o)}function n(e,t,n){switch(n){case`===`:case`==`:return e===t;case`!==`:case`!=`:return e!==t;case`>`:return Number(e)>Number(t);case`>=`:return Number(e)>=Number(t);case`<`:return Number(e)<Number(t);case`<=`:return Number(e)<=Number(t);default:return!1}}function r(e){let t=(e??``).trim();if(t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))return t.slice(1,-1);if(/^-?\d+(\.\d+)?$/.test(t))return Number(t);if(/^true$/i.test(t))return!0;if(/^false$/i.test(t))return!1;if(/^null$/i.test(t))return null;if(!/^undefined$/i.test(t))return t}function i(e,t,n){return a(e===`data`?t.data:e===`input`?t.input:t.output,n)}function a(e,t){if(e==null)return;if(!t)return e;let n=t.replace(/\[(\d+)\]/g,`.$1`).split(`.`).filter(Boolean),r=e;for(let e of n){if(r==null)return;r=r[e]}return r}function o(e,t){let n=[],r=``,i=!1,a=!1;for(let o=0;o<e.length;o++){let s=e[o],c=e.slice(o,o+t.length);if(s===`'`&&!a){i=!i,r+=s;continue}if(s===`"`&&!i){a=!a,r+=s;continue}if(!i&&!a&&c===t){n.push(r.trim()),r=``,o+=t.length-1;continue}r+=s}return r.trim().length&&n.push(r.trim()),n}export{e as evaluateExpression};
2
- //# sourceMappingURL=expression.js.map
1
+ function e(n,r){if(!n)return!0;let i=n.trim();if(!i)return!0;let a=o(i,`||`);if(a.length>1)return a.some(t=>e(t,r));let s=o(i,`&&`);return s.length>1?s.every(t=>e(t,r)):t(i,r)}function t(e,a){let o=e.trim();if(!o)return!0;if(o.startsWith(`!`))return!t(o.slice(1),a);let s=o.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);if(s){let[,e,t,o,c]=s;return n(i(e,a,t),r(c),o)}let c=o.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)$/);if(c){let[,e,t]=c;return!!i(e,a,t)}return!!r(o)}function n(e,t,n){switch(n){case`===`:case`==`:return e===t;case`!==`:case`!=`:return e!==t;case`>`:return Number(e)>Number(t);case`>=`:return Number(e)>=Number(t);case`<`:return Number(e)<Number(t);case`<=`:return Number(e)<=Number(t);default:return!1}}function r(e){let t=(e??``).trim();if(t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))return t.slice(1,-1);if(/^-?\d+(\.\d+)?$/.test(t))return Number(t);if(/^true$/i.test(t))return!0;if(/^false$/i.test(t))return!1;if(/^null$/i.test(t))return null;if(!/^undefined$/i.test(t))return t}function i(e,t,n){return a(e===`data`?t.data:e===`input`?t.input:t.output,n)}function a(e,t){if(e==null)return;if(!t)return e;let n=t.replace(/\[(\d+)\]/g,`.$1`).split(`.`).filter(Boolean),r=e;for(let e of n){if(r==null)return;r=r[e]}return r}function o(e,t){let n=[],r=``,i=!1,a=!1;for(let o=0;o<e.length;o++){let s=e[o],c=e.slice(o,o+t.length);if(s===`'`&&!a){i=!i,r+=s;continue}if(s===`"`&&!i){a=!a,r+=s;continue}if(!i&&!a&&c===t){n.push(r.trim()),r=``,o+=t.length-1;continue}r+=s}return r.trim().length&&n.push(r.trim()),n}export{e as evaluateExpression};
@@ -71,5 +71,4 @@ declare class WorkflowPreFlightError extends Error {
71
71
  constructor(issues: WorkflowPreFlightIssue[]);
72
72
  }
73
73
  //#endregion
74
- export { GuardContext, GuardEvaluator, OperationExecutor, OperationExecutorContext, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRunner, WorkflowRunnerConfig };
75
- //# sourceMappingURL=runner.d.ts.map
74
+ export { GuardContext, GuardEvaluator, OperationExecutor, OperationExecutorContext, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRunner, WorkflowRunnerConfig };
@@ -1,2 +1 @@
1
- import{evaluateExpression as e}from"./expression.js";import{randomUUID as t}from"node:crypto";var n=class{constructor(e){this.config=e}async preFlightCheck(e,t,n){let r=this.getSpec(e,t);return this.performPreFlight(r,n)}async start(e,n,i){let a=this.getSpec(e,n),o=r(a),s=new Date,l=t(),u={workflowId:l,workflowName:a.meta.name,workflowVersion:a.meta.version,currentStep:o,data:{...i??{}},retryCounts:{},history:[],status:`running`,createdAt:s,updatedAt:s},d=this.config.appConfigProvider?await this.config.appConfigProvider(u):void 0,f=await this.performPreFlight(a,d);if(!f.canStart)throw new c(f.issues);return await this.config.stateStore.create(u),this.emit(`workflow.started`,{workflowId:l,workflowName:a.meta.name,workflowVersion:a.meta.version,currentStep:o}),l}async executeStep(e,t){let n=await this.getStateOrThrow(e);if(s(n.status))throw Error(`Workflow ${e} is in terminal status "${n.status}".`);let r=this.getSpec(n.workflowName,n.workflowVersion),c=i(r,n.currentStep);if(!await this.evaluateGuard(c,n,t))throw Error(`GuardRejected: ${n.workflowName} -> ${c.id}`);let l={stepId:c.id,startedAt:new Date,status:`running`,input:t},u={...n,data:{...n.data},history:[...n.history]};try{let i=await this.runStepAction(c,u,t);l.output=i,l.status=`completed`,l.completedAt=new Date,u.history.push(l),u.updatedAt=new Date,o(t)&&(u.data={...u.data,...t}),o(i)&&(u.data={...u.data,...i});let s=this.pickNextStepId(r,u,c,t,i);if(s)u.currentStep=s,u.status=`running`;else if(!a(r,c.id))u.status=`completed`;else throw Error(`No transition matched after executing step "${c.id}".`);await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_completed`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,status:u.status})}catch(i){if(l.status=`failed`,l.completedAt=new Date,l.error=i instanceof Error?i.message:String(i),u.history.push(l),u.updatedAt=new Date,c.retry){let r=n.retryCounts?.[c.id]??0;if(r<c.retry.maxAttempts){let i=c.retry.backoff??`exponential`,a=c.retry.delayMs??1e3,o=i===`exponential`?a*2**r:a,s=Math.min(o,c.retry.maxDelayMs??1/0);return u.retryCounts={...n.retryCounts??{},[c.id]:r+1},u.status=`running`,await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_retrying`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,attempt:r+1,delay:s,error:l.error}),await new Promise(e=>setTimeout(e,s)),this.executeStep(e,t)}}throw u.status=`failed`,await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_failed`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,error:l.error??`unknown`}),r.definition.compensation?.trigger===`on_failure`&&await this.rollback(e),i}}async rollback(e){let t=await this.getStateOrThrow(e),n=this.getSpec(t.workflowName,t.workflowVersion);if(!n.definition.compensation)return;this.emit(`workflow.rollback_started`,{workflowId:e});let r=t.history.filter(e=>e.status===`completed`).reverse();for(let a of r){let r=n.definition.compensation.steps.find(e=>e.stepId===a.stepId);if(r){let o={stepId:a.stepId,originalInput:a.input,originalOutput:a.output,workflowData:t.data};try{let s=i(n,a.stepId),c=this.config.appConfigProvider?await this.config.appConfigProvider(t):void 0,l={workflow:t,step:s,resolvedAppConfig:c,integrations:c?.integrations??[],knowledge:c?.knowledge??[],branding:c?.branding,translation:c?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};await this.config.opExecutor(r.operation,o,l),this.emit(`workflow.compensation_step_completed`,{workflowId:e,stepId:a.stepId,compensationOp:r.operation.name})}catch(t){let n=t instanceof Error?t.message:String(t);this.emit(`workflow.compensation_step_failed`,{workflowId:e,stepId:a.stepId,compensationOp:r.operation.name,error:n})}}}this.emit(`workflow.rollback_completed`,{workflowId:e})}async getState(e){return this.getStateOrThrow(e)}async cancel(e){let t=await this.getStateOrThrow(e);if(t.status===`cancelled`)return;let n={...t,status:`cancelled`,updatedAt:new Date};await this.config.stateStore.update(e,()=>n),this.emit(`workflow.cancelled`,{workflowId:e,workflowName:t.workflowName})}async performPreFlight(e,t){if(!t)return{canStart:!0,issues:[]};let n=[],r=new Map;for(let e of t.integrations)r.set(e.slot.slotId,e);for(let t of e.definition.steps)for(let e of t.requiredIntegrations??[]){let i=r.get(e);if(!i){n.push({stepId:t.id,type:`integration`,identifier:e,severity:`error`,reason:`Integration slot "${e}" is not bound in the resolved app config.`});continue}let a=i.connection.status;a===`disconnected`||a===`error`?n.push({stepId:t.id,type:`integration`,identifier:e,severity:`error`,reason:`Integration slot "${e}" is in status "${a}".`}):a===`unknown`&&n.push({stepId:t.id,type:`integration`,identifier:e,severity:`warning`,reason:`Integration slot "${e}" reports unknown health status.`})}let i=new Set(t.capabilities.enabled.map(l));for(let t of e.definition.steps)for(let e of t.requiredCapabilities??[])i.has(l(e))||n.push({stepId:t.id,type:`capability`,identifier:l(e),severity:`error`,reason:`Capability "${e.key}@${e.version}" is not enabled.`});return{canStart:n.every(e=>e.severity!==`error`),issues:n}}async evaluateGuard(t,n,r){return t.guard?this.config.guardEvaluator?this.config.guardEvaluator(t.guard,{workflow:n,step:t,input:r}):t.guard.type===`expression`?e(t.guard.value,{data:n.data,input:r}):!0:!0}async runStepAction(e,t,n){if(e.type===`automation`){let r=e.action?.operation;if(!r)throw Error(`Automation step "${e.id}" requires an operation.`);let i=this.config.appConfigProvider?await this.config.appConfigProvider(t):void 0,a={workflow:t,step:e,resolvedAppConfig:i,integrations:i?.integrations??[],knowledge:i?.knowledge??[],branding:i?.branding,translation:i?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};return this.config.enforceCapabilities&&await this.config.enforceCapabilities(r,a),this.config.opExecutor(r,n,a)}return e.type,n}pickNextStepId(t,n,r,i,a){let o=t.definition.transitions.filter(e=>e.from===r.id);for(let r of o)if(e(r.condition,{data:n.data,input:i,output:a})){let e=t.definition.steps.find(e=>e.id===r.to);if(!e)throw Error(`Transition ${r.from} -> ${r.to} points to missing step.`);return e.id}return null}getSpec(e,t){let n=this.config.registry.get(e,t);if(!n)throw Error(`Workflow spec not found for ${e}${t?`.v${t}`:``}`);return n}async getStateOrThrow(e){let t=await this.config.stateStore.get(e);if(!t)throw Error(`Workflow state not found for ${e}`);return t}emit(e,t){this.config.eventEmitter?.(e,t)}};function r(e){let t=e.definition.entryStepId??e.definition.steps[0]?.id??null;if(!t)throw Error(`Workflow ${e.meta.name}.v${e.meta.version} has no entry step.`);return t}function i(e,t){let n=e.definition.steps.find(e=>e.id===t);if(!n)throw Error(`Step "${t}" not found in workflow ${e.meta.name}.v${e.meta.version}.`);return n}function a(e,t){return e.definition.transitions.some(e=>e.from===t)}function o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function s(e){return e===`completed`||e===`failed`||e===`cancelled`}var c=class extends Error{constructor(e){super(`Workflow pre-flight failed: ${e.filter(e=>e.severity===`error`).map(e=>`${e.type}:${e.identifier}`).join(`, `)}`),this.issues=e,this.name=`WorkflowPreFlightError`}};function l(e){return`${e.key}@${e.version}`}export{c as WorkflowPreFlightError,n as WorkflowRunner};
2
- //# sourceMappingURL=runner.js.map
1
+ import{evaluateExpression as e}from"./expression.js";import{randomUUID as t}from"node:crypto";var n=class{constructor(e){this.config=e}async preFlightCheck(e,t,n){let r=this.getSpec(e,t);return this.performPreFlight(r,n)}async start(e,n,i){let a=this.getSpec(e,n),o=r(a),s=new Date,l=t(),u={workflowId:l,workflowName:a.meta.name,workflowVersion:a.meta.version,currentStep:o,data:{...i??{}},retryCounts:{},history:[],status:`running`,createdAt:s,updatedAt:s},d=this.config.appConfigProvider?await this.config.appConfigProvider(u):void 0,f=await this.performPreFlight(a,d);if(!f.canStart)throw new c(f.issues);return await this.config.stateStore.create(u),this.emit(`workflow.started`,{workflowId:l,workflowName:a.meta.name,workflowVersion:a.meta.version,currentStep:o}),l}async executeStep(e,t){let n=await this.getStateOrThrow(e);if(s(n.status))throw Error(`Workflow ${e} is in terminal status "${n.status}".`);let r=this.getSpec(n.workflowName,n.workflowVersion),c=i(r,n.currentStep);if(!await this.evaluateGuard(c,n,t))throw Error(`GuardRejected: ${n.workflowName} -> ${c.id}`);let l={stepId:c.id,startedAt:new Date,status:`running`,input:t},u={...n,data:{...n.data},history:[...n.history]};try{let i=await this.runStepAction(c,u,t);l.output=i,l.status=`completed`,l.completedAt=new Date,u.history.push(l),u.updatedAt=new Date,o(t)&&(u.data={...u.data,...t}),o(i)&&(u.data={...u.data,...i});let s=this.pickNextStepId(r,u,c,t,i);if(s)u.currentStep=s,u.status=`running`;else if(!a(r,c.id))u.status=`completed`;else throw Error(`No transition matched after executing step "${c.id}".`);await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_completed`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,status:u.status})}catch(i){if(l.status=`failed`,l.completedAt=new Date,l.error=i instanceof Error?i.message:String(i),u.history.push(l),u.updatedAt=new Date,c.retry){let r=n.retryCounts?.[c.id]??0;if(r<c.retry.maxAttempts){let i=c.retry.backoff??`exponential`,a=c.retry.delayMs??1e3,o=i===`exponential`?a*2**r:a,s=Math.min(o,c.retry.maxDelayMs??1/0);return u.retryCounts={...n.retryCounts??{},[c.id]:r+1},u.status=`running`,await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_retrying`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,attempt:r+1,delay:s,error:l.error}),await new Promise(e=>setTimeout(e,s)),this.executeStep(e,t)}}throw u.status=`failed`,await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_failed`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,error:l.error??`unknown`}),r.definition.compensation?.trigger===`on_failure`&&await this.rollback(e),i}}async rollback(e){let t=await this.getStateOrThrow(e),n=this.getSpec(t.workflowName,t.workflowVersion);if(!n.definition.compensation)return;this.emit(`workflow.rollback_started`,{workflowId:e});let r=t.history.filter(e=>e.status===`completed`).reverse();for(let a of r){let r=n.definition.compensation.steps.find(e=>e.stepId===a.stepId);if(r){let o={stepId:a.stepId,originalInput:a.input,originalOutput:a.output,workflowData:t.data};try{let s=i(n,a.stepId),c=this.config.appConfigProvider?await this.config.appConfigProvider(t):void 0,l={workflow:t,step:s,resolvedAppConfig:c,integrations:c?.integrations??[],knowledge:c?.knowledge??[],branding:c?.branding,translation:c?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};await this.config.opExecutor(r.operation,o,l),this.emit(`workflow.compensation_step_completed`,{workflowId:e,stepId:a.stepId,compensationOp:r.operation.name})}catch(t){let n=t instanceof Error?t.message:String(t);this.emit(`workflow.compensation_step_failed`,{workflowId:e,stepId:a.stepId,compensationOp:r.operation.name,error:n})}}}this.emit(`workflow.rollback_completed`,{workflowId:e})}async getState(e){return this.getStateOrThrow(e)}async cancel(e){let t=await this.getStateOrThrow(e);if(t.status===`cancelled`)return;let n={...t,status:`cancelled`,updatedAt:new Date};await this.config.stateStore.update(e,()=>n),this.emit(`workflow.cancelled`,{workflowId:e,workflowName:t.workflowName})}async performPreFlight(e,t){if(!t)return{canStart:!0,issues:[]};let n=[],r=new Map;for(let e of t.integrations)r.set(e.slot.slotId,e);for(let t of e.definition.steps)for(let e of t.requiredIntegrations??[]){let i=r.get(e);if(!i){n.push({stepId:t.id,type:`integration`,identifier:e,severity:`error`,reason:`Integration slot "${e}" is not bound in the resolved app config.`});continue}let a=i.connection.status;a===`disconnected`||a===`error`?n.push({stepId:t.id,type:`integration`,identifier:e,severity:`error`,reason:`Integration slot "${e}" is in status "${a}".`}):a===`unknown`&&n.push({stepId:t.id,type:`integration`,identifier:e,severity:`warning`,reason:`Integration slot "${e}" reports unknown health status.`})}let i=new Set(t.capabilities.enabled.map(l));for(let t of e.definition.steps)for(let e of t.requiredCapabilities??[])i.has(l(e))||n.push({stepId:t.id,type:`capability`,identifier:l(e),severity:`error`,reason:`Capability "${e.key}@${e.version}" is not enabled.`});return{canStart:n.every(e=>e.severity!==`error`),issues:n}}async evaluateGuard(t,n,r){return t.guard?this.config.guardEvaluator?this.config.guardEvaluator(t.guard,{workflow:n,step:t,input:r}):t.guard.type===`expression`?e(t.guard.value,{data:n.data,input:r}):!0:!0}async runStepAction(e,t,n){if(e.type===`automation`){let r=e.action?.operation;if(!r)throw Error(`Automation step "${e.id}" requires an operation.`);let i=this.config.appConfigProvider?await this.config.appConfigProvider(t):void 0,a={workflow:t,step:e,resolvedAppConfig:i,integrations:i?.integrations??[],knowledge:i?.knowledge??[],branding:i?.branding,translation:i?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};return this.config.enforceCapabilities&&await this.config.enforceCapabilities(r,a),this.config.opExecutor(r,n,a)}return e.type,n}pickNextStepId(t,n,r,i,a){let o=t.definition.transitions.filter(e=>e.from===r.id);for(let r of o)if(e(r.condition,{data:n.data,input:i,output:a})){let e=t.definition.steps.find(e=>e.id===r.to);if(!e)throw Error(`Transition ${r.from} -> ${r.to} points to missing step.`);return e.id}return null}getSpec(e,t){let n=this.config.registry.get(e,t);if(!n)throw Error(`Workflow spec not found for ${e}${t?`.v${t}`:``}`);return n}async getStateOrThrow(e){let t=await this.config.stateStore.get(e);if(!t)throw Error(`Workflow state not found for ${e}`);return t}emit(e,t){this.config.eventEmitter?.(e,t)}};function r(e){let t=e.definition.entryStepId??e.definition.steps[0]?.id??null;if(!t)throw Error(`Workflow ${e.meta.name}.v${e.meta.version} has no entry step.`);return t}function i(e,t){let n=e.definition.steps.find(e=>e.id===t);if(!n)throw Error(`Step "${t}" not found in workflow ${e.meta.name}.v${e.meta.version}.`);return n}function a(e,t){return e.definition.transitions.some(e=>e.from===t)}function o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function s(e){return e===`completed`||e===`failed`||e===`cancelled`}var c=class extends Error{constructor(e){super(`Workflow pre-flight failed: ${e.filter(e=>e.severity===`error`).map(e=>`${e.type}:${e.identifier}`).join(`, `)}`),this.issues=e,this.name=`WorkflowPreFlightError`}};function l(e){return`${e.key}@${e.version}`}export{c as WorkflowPreFlightError,n as WorkflowRunner};
@@ -17,5 +17,4 @@ declare class SLAMonitor {
17
17
  check(state: WorkflowState, spec: WorkflowSpec): void;
18
18
  }
19
19
  //#endregion
20
- export { SLABreachEvent, SLAMonitor };
21
- //# sourceMappingURL=sla-monitor.d.ts.map
20
+ export { SLABreachEvent, SLAMonitor };
@@ -1,2 +1 @@
1
- var e=class{constructor(e){this.eventEmitter=e}check(e,t){let n=t.definition.sla;if(!n)return;let r=new Date().getTime();if(n.totalDurationMs){let t=r-e.createdAt.getTime();t>n.totalDurationMs&&(e.status===`running`||e.status===`paused`)&&this.eventEmitter(`workflow.sla_breach`,{workflowId:e.workflowId,workflowName:e.workflowName,type:`workflow_duration`,expectedMs:n.totalDurationMs,actualMs:t,breachedAt:new Date})}if(n.stepDurationMs&&e.status===`running`&&e.currentStep){let t=e.history.find(t=>t.stepId===e.currentStep&&t.status===`running`);if(t){let i=n.stepDurationMs[e.currentStep];if(i){let n=r-t.startedAt.getTime();n>i&&this.eventEmitter(`workflow.sla_breach`,{workflowId:e.workflowId,workflowName:e.workflowName,type:`step_duration`,stepId:e.currentStep,expectedMs:i,actualMs:n,breachedAt:new Date})}}}}};export{e as SLAMonitor};
2
- //# sourceMappingURL=sla-monitor.js.map
1
+ var e=class{constructor(e){this.eventEmitter=e}check(e,t){let n=t.definition.sla;if(!n)return;let r=new Date().getTime();if(n.totalDurationMs){let t=r-e.createdAt.getTime();t>n.totalDurationMs&&(e.status===`running`||e.status===`paused`)&&this.eventEmitter(`workflow.sla_breach`,{workflowId:e.workflowId,workflowName:e.workflowName,type:`workflow_duration`,expectedMs:n.totalDurationMs,actualMs:t,breachedAt:new Date})}if(n.stepDurationMs&&e.status===`running`&&e.currentStep){let t=e.history.find(t=>t.stepId===e.currentStep&&t.status===`running`);if(t){let i=n.stepDurationMs[e.currentStep];if(i){let n=r-t.startedAt.getTime();n>i&&this.eventEmitter(`workflow.sla_breach`,{workflowId:e.workflowId,workflowName:e.workflowName,type:`step_duration`,stepId:e.currentStep,expectedMs:i,actualMs:n,breachedAt:new Date})}}}}};export{e as SLAMonitor};
@@ -96,5 +96,4 @@ declare class WorkflowRegistry {
96
96
  get(name: string, version?: number): WorkflowSpec | undefined;
97
97
  }
98
98
  //#endregion
99
- export { CompensationStep, CompensationStrategy, FormRef, GuardCondition, GuardConditionKind, RetryPolicy, SLA, Step, StepAction, StepType, Transition, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowStatus };
100
- //# sourceMappingURL=spec.d.ts.map
99
+ export { CompensationStep, CompensationStrategy, FormRef, GuardCondition, GuardConditionKind, RetryPolicy, SLA, Step, StepAction, StepType, Transition, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowStatus };
@@ -1,2 +1 @@
1
- function e(e){return`${e.name}.v${e.version}`}var t=class{items=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate workflow ${n}`);return this.items.set(n,t),this}list(){return[...this.items.values()]}get(e,t){if(t!=null)return this.items.get(`${e}.v${t}`);let n,r=-1/0;for(let t of this.items.values())t.meta.name===e&&t.meta.version>r&&(r=t.meta.version,n=t);return n}};export{t as WorkflowRegistry};
2
- //# sourceMappingURL=spec.js.map
1
+ function e(e){return`${e.name}.v${e.version}`}var t=class{items=new Map;register(t){let n=e(t.meta);if(this.items.has(n))throw Error(`Duplicate workflow ${n}`);return this.items.set(n,t),this}list(){return[...this.items.values()]}get(e,t){if(t!=null)return this.items.get(`${e}.v${t}`);let n,r=-1/0;for(let t of this.items.values())t.meta.name===e&&t.meta.version>r&&(r=t.meta.version,n=t);return n}};export{t as WorkflowRegistry};
@@ -32,5 +32,4 @@ interface StateStore {
32
32
  list(filters?: WorkflowStateFilters): Promise<WorkflowState[]>;
33
33
  }
34
34
  //#endregion
35
- export { StateStore, StepExecution, WorkflowState, WorkflowStateFilters };
36
- //# sourceMappingURL=state.d.ts.map
35
+ export { StateStore, StepExecution, WorkflowState, WorkflowStateFilters };
@@ -25,5 +25,4 @@ declare class WorkflowValidationError extends Error {
25
25
  declare function validateWorkflowSpec(spec: WorkflowSpec, options?: ValidateWorkflowSpecOptions): WorkflowValidationIssue[];
26
26
  declare function assertWorkflowSpecValid(spec: WorkflowSpec, options?: ValidateWorkflowSpecOptions): void;
27
27
  //#endregion
28
- export { ValidateWorkflowSpecOptions, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, assertWorkflowSpecValid, validateWorkflowSpec };
29
- //# sourceMappingURL=validation.d.ts.map
28
+ export { ValidateWorkflowSpecOptions, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, assertWorkflowSpecValid, validateWorkflowSpec };
@@ -1,2 +1 @@
1
- var e=class extends Error{constructor(e,t){super(e),this.issues=t,this.name=`WorkflowValidationError`}};function t(e,t={}){let n=[],{definition:a}=e;if(!a.steps.length)return n.push({level:`error`,message:`Workflow must declare at least one step.`}),n;let l=r(a,n),u=a.entryStepId??a.steps[0]?.id??null;u?l.has(u)||n.push({level:`error`,message:`Entry step "${u}" is not defined in steps.`}):n.push({level:`error`,message:`Workflow requires an entry step (definition.entryStepId).`});let d=i(a,l,n);return o(a.steps,t,n),s(u,l,d,n),c(d,n),n}function n(n,r={}){let i=t(n,r);if(i.filter(e=>e.level===`error`).length)throw new e(`Workflow ${n.meta.name}.v${n.meta.version} is invalid`,i)}function r(e,t){let n=new Map;for(let r of e.steps){if(n.has(r.id)){t.push({level:`error`,message:`Duplicate step id "${r.id}" detected.`});continue}n.set(r.id,r),r.type===`automation`&&!r.action?.operation&&t.push({level:`warning`,message:`Automation step "${r.id}" does not declare an operation.`}),r.type===`human`&&!r.action?.form&&t.push({level:`warning`,message:`Human step "${r.id}" does not declare a form.`}),r.guard&&!r.guard.value.trim()&&t.push({level:`error`,message:`Guard for step "${r.id}" must have a non-empty value.`})}return n}function i(e,t,n){let r=new Map,i=new Map;for(let e of t.keys())r.set(e,new Set),i.set(e,0);for(let o of e.transitions){let e=t.get(o.from),s=t.get(o.to);if(!e){n.push({level:`error`,message:`Transition refers to unknown "from" step "${o.from}".`});continue}if(!s){n.push({level:`error`,message:`Transition refers to unknown "to" step "${o.to}".`});continue}r.get(o.from)?.add(o.to),i.set(o.to,(i.get(o.to)??0)+1),a(o,n)}let o=[...i.entries()].filter(([,e])=>e===0).map(([e])=>e);return o.length>1&&n.push({level:`warning`,message:`Workflow has multiple potential entry steps: ${o.join(`, `)}`}),r}function a(e,t){e.condition&&!e.condition.trim()&&t.push({level:`error`,message:`Transition ${e.from} -> ${e.to} declares an empty condition.`})}function o(e,t,n){for(let r of e){let e=r.action;e&&(e.operation&&t.operations&&(t.operations.getSpec(e.operation.name,e.operation.version)||n.push({level:`error`,message:`Step "${r.id}" references unknown operation ${e.operation.name}.v${e.operation.version}.`})),e.form&&t.forms&&(t.forms.get(e.form.key,e.form.version)||n.push({level:`error`,message:`Step "${r.id}" references unknown form ${e.form.key}.v${e.form.version}.`})))}}function s(e,t,n,r){if(!e||!t.has(e))return;let i=new Set,a=[e];for(i.add(e);a.length;){let e=a.shift(),t=n.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}for(let n of t.keys())i.has(n)||r.push({level:`error`,message:`Step "${n}" is unreachable from entry step "${e}".`})}function c(e,t){let n=new Set,r=new Set,i=!1,a=o=>{if(r.has(o)){i||=(t.push({level:`error`,message:`Workflow contains a cycle involving step "${o}".`}),!0);return}if(n.has(o))return;r.add(o);let s=e.get(o);if(s)for(let e of s)a(e);r.delete(o),n.add(o)};for(let t of e.keys())a(t)}export{e as WorkflowValidationError,n as assertWorkflowSpecValid,t as validateWorkflowSpec};
2
- //# sourceMappingURL=validation.js.map
1
+ var e=class extends Error{constructor(e,t){super(e),this.issues=t,this.name=`WorkflowValidationError`}};function t(e,t={}){let n=[],{definition:a}=e;if(!a.steps.length)return n.push({level:`error`,message:`Workflow must declare at least one step.`}),n;let l=r(a,n),u=a.entryStepId??a.steps[0]?.id??null;u?l.has(u)||n.push({level:`error`,message:`Entry step "${u}" is not defined in steps.`}):n.push({level:`error`,message:`Workflow requires an entry step (definition.entryStepId).`});let d=i(a,l,n);return o(a.steps,t,n),s(u,l,d,n),c(d,n),n}function n(n,r={}){let i=t(n,r);if(i.filter(e=>e.level===`error`).length)throw new e(`Workflow ${n.meta.name}.v${n.meta.version} is invalid`,i)}function r(e,t){let n=new Map;for(let r of e.steps){if(n.has(r.id)){t.push({level:`error`,message:`Duplicate step id "${r.id}" detected.`});continue}n.set(r.id,r),r.type===`automation`&&!r.action?.operation&&t.push({level:`warning`,message:`Automation step "${r.id}" does not declare an operation.`}),r.type===`human`&&!r.action?.form&&t.push({level:`warning`,message:`Human step "${r.id}" does not declare a form.`}),r.guard&&!r.guard.value.trim()&&t.push({level:`error`,message:`Guard for step "${r.id}" must have a non-empty value.`})}return n}function i(e,t,n){let r=new Map,i=new Map;for(let e of t.keys())r.set(e,new Set),i.set(e,0);for(let o of e.transitions){let e=t.get(o.from),s=t.get(o.to);if(!e){n.push({level:`error`,message:`Transition refers to unknown "from" step "${o.from}".`});continue}if(!s){n.push({level:`error`,message:`Transition refers to unknown "to" step "${o.to}".`});continue}r.get(o.from)?.add(o.to),i.set(o.to,(i.get(o.to)??0)+1),a(o,n)}let o=[...i.entries()].filter(([,e])=>e===0).map(([e])=>e);return o.length>1&&n.push({level:`warning`,message:`Workflow has multiple potential entry steps: ${o.join(`, `)}`}),r}function a(e,t){e.condition&&!e.condition.trim()&&t.push({level:`error`,message:`Transition ${e.from} -> ${e.to} declares an empty condition.`})}function o(e,t,n){for(let r of e){let e=r.action;e&&(e.operation&&t.operations&&(t.operations.getSpec(e.operation.name,e.operation.version)||n.push({level:`error`,message:`Step "${r.id}" references unknown operation ${e.operation.name}.v${e.operation.version}.`})),e.form&&t.forms&&(t.forms.get(e.form.key,e.form.version)||n.push({level:`error`,message:`Step "${r.id}" references unknown form ${e.form.key}.v${e.form.version}.`})))}}function s(e,t,n,r){if(!e||!t.has(e))return;let i=new Set,a=[e];for(i.add(e);a.length;){let e=a.shift(),t=n.get(e);if(t)for(let e of t)i.has(e)||(i.add(e),a.push(e))}for(let n of t.keys())i.has(n)||r.push({level:`error`,message:`Step "${n}" is unreachable from entry step "${e}".`})}function c(e,t){let n=new Set,r=new Set,i=!1,a=o=>{if(r.has(o)){i||=(t.push({level:`error`,message:`Workflow contains a cycle involving step "${o}".`}),!0);return}if(n.has(o))return;r.add(o);let s=e.get(o);if(s)for(let e of s)a(e);r.delete(o),n.add(o)};for(let t of e.keys())a(t)}export{e as WorkflowValidationError,n as assertWorkflowSpecValid,t as validateWorkflowSpec};
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@lssm/lib.contracts",
3
- "version": "1.10.0",
3
+ "version": "1.11.1",
4
4
  "scripts": {
5
+ "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
5
6
  "build": "bun build:bundle && bun build:types",
6
7
  "build:bundle": "tsdown",
7
8
  "build:types": "tsc --noEmit",
@@ -10,15 +11,14 @@
10
11
  "lint": "bun lint:fix",
11
12
  "lint:fix": "eslint src --fix",
12
13
  "lint:check": "eslint src",
13
- "test": "vitest run"
14
+ "test": "bun run"
14
15
  },
15
16
  "devDependencies": {
16
- "@lssm/tool.tsdown": "*",
17
- "@lssm/tool.typescript": "*",
17
+ "@lssm/tool.tsdown": "0.12.1",
18
+ "@lssm/tool.typescript": "0.11.1",
18
19
  "@types/express": "^5.0.3",
19
20
  "tsdown": "^0.16.6",
20
- "typescript": "^5.9.3",
21
- "vitest": "^1.6.0"
21
+ "typescript": "^5.9.3"
22
22
  },
23
23
  "dependencies": {
24
24
  "@google-cloud/secret-manager": "^6.1.1",
@@ -29,11 +29,12 @@
29
29
  "@google-cloud/storage": "^7.8.0",
30
30
  "stripe": "^19.1.0",
31
31
  "postmark": "^4.0.4",
32
- "twilio": "^5.10.5",
33
- "@lssm/lib.schema": "*",
32
+ "twilio": "^5.10.6",
33
+ "@lssm/lib.schema": "1.11.1",
34
+ "@lssm/lib.graphql-federation": "1.11.1",
34
35
  "@modelcontextprotocol/sdk": "^1.20.1",
35
36
  "mcp-handler": "^1.0.4",
36
- "zod": "^4.1.5"
37
+ "zod": "^4.1.13"
37
38
  },
38
39
  "peerDependencies": {
39
40
  "@pothos/core": "^4.9.1",
@@ -41,9 +42,9 @@
41
42
  "elysia": "^1.4.11",
42
43
  "express": "^5.1.0",
43
44
  "graphql-scalars": "^1.24.2",
44
- "next": "16.0.3",
45
- "@blocknote/core": "^0.41.1",
46
- "@blocknote/react": "^0.41.1",
45
+ "next": "16.0.5",
46
+ "@blocknote/core": "^0.42.3",
47
+ "@blocknote/react": "^0.42.3",
47
48
  "react": "^19.2.0",
48
49
  "react-dom": "^19.2.0",
49
50
  "react-hook-form": "^7.66.1",
@@ -231,6 +232,7 @@
231
232
  "./*": "./*"
232
233
  },
233
234
  "publishConfig": {
235
+ "access": "public",
234
236
  "exports": {
235
237
  ".": "./dist/index.js",
236
238
  "./app-config": "./dist/app-config/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"branding.d.ts","names":[],"sources":["../../src/app-config/branding.ts"],"sourcesContent":[],"mappings":";UAAiB,gBAAA;EAAA,IAAA,EAAA,MAAA,GAAA,WAAgB,GAAA,SAAA,GAAA,UAAA;EAMhB,GAAA,CAAA,EAAA,MAAA;EASA,UAAA,CAAA,EAAA;IAUA,KAAA,EAAA,MAAA;IAWA,MAAA,EAAA,MAAA;;;UA9BA,gBAAA;;WAEN;;;;;;UAOM,mBAAA;;;;;;;;;;;;UAUA,oBAAA;YACL;WACD;;;;;;;;UASM,gBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.d.ts","names":[],"sources":["../../src/app-config/contracts.ts"],"sourcesContent":[],"mappings":";;;;;;cAmIa,6BAA2B,aAAA;;UAoBtC,mBAAA,CAAA;IApBW,UAAA,EAAA,KAAA;EAoBX,CAAA;;;;;;;;;;;;;;;MApBsC,IAAA,EAAA;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;QAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;MAsB3B,CAAA;MAoBX,QAAA,EAAA;;;MApBoC,CAAA;IAAA,CAAA,CAAA;;;EAAA,CAAA;EAAA,MAAA,EAAA;IAsBzB,IAAA,+BAoBX,OAAA,CAAA,MAAA,EAAA,OAAA,CAAA,QAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;IAAA,UAAA,EAAA,IAAA;;;;;;;;;;;EApBmD,OAAA,EAAA;IAAA,IAAA,EA5Cb,mBAAA,CAAA,SA4Ca,CAAA,OAAA,EAAA,OAAA,CAAA;;;;IAAA,IAAA,+BAAA,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAsBxC,CAAA;CAoBX,CAAA,EAAA,SAAA,CAAA;cAhEW,2BAAyB,aAAA;;UAoBpC,mBAAA,CAAA;;;;;;EAwBkD,CAAA;EAAA,MAAA,EAAA;;;;CAAA,CAAA,aAAA,CAAA;EAAA,MAAA,EAAA;IAsBvC,IAAA,EAlEyB,mBAAA,CAAA,SAqGpC,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;IAnCmC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;cA5CxB,0CAAwC,aAAA;EA4ChB,aAAA,EAAA;IAAA,IAAA,EAxBnC,mBAAA,CAAA,SAwBmC,CAAA,MAAA,EAAA,MAAA,CAAA;IAqCxB,UAAA,EAAA,KAAA;EAqBX,CAAA;;;;EArB8B,CAAA;EAAA,WAAA,EAAA;;;EAAA,CAAA;EAAA,cAAA,EAAA;IAuBnB,IAAA,+BAAmC,CAAA,MAAf,EAAM,MAAA,CAAA;IASvB,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAjHqC,mBAAA,CAAA;;;;;;;;cAsBxC,yCAAuC,aAAA;;UAoBlD,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UApBkD,mBAAA,CAAA;;;;;;;;cAsBvC,0BAAwB,aAAA;;UAmCnC,mBAAA,CAAA;;;;;;;;;;;;;;;;;cAEW,qBAAmB,aAAA;;UAqB9B,mBAAA,CAAA;;;;;;;;;;;;;;;;;UArB8B,mBAAA,CAAA;;;;;;;;cAuBnB,oBAAoB,eAAe;iBAShC,0BAAA,WAAqC,eAAY"}