@lssm/lib.contracts 1.41.1 → 1.42.2

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 (499) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -4
  3. package/dist/_virtual/rolldown_runtime.js +37 -1
  4. package/dist/app-config/app-config.feature.d.ts +11 -0
  5. package/dist/app-config/app-config.feature.js +54 -1
  6. package/dist/app-config/branding.d.ts +55 -0
  7. package/dist/app-config/contracts.d.ts +245 -0
  8. package/dist/app-config/contracts.js +395 -1
  9. package/dist/app-config/docs/app-config.docblock.d.ts +6 -0
  10. package/dist/app-config/docs/app-config.docblock.js +21 -220
  11. package/dist/app-config/events.d.ts +122 -0
  12. package/dist/app-config/events.js +174 -1
  13. package/dist/app-config/index.d.ts +9 -0
  14. package/dist/app-config/index.js +8 -1
  15. package/dist/app-config/lifecycle-contracts.d.ts +273 -0
  16. package/dist/app-config/lifecycle-contracts.js +440 -1
  17. package/dist/app-config/lifecycle.d.ts +27 -0
  18. package/dist/app-config/runtime.d.ts +117 -0
  19. package/dist/app-config/runtime.js +617 -1
  20. package/dist/app-config/spec.d.ts +172 -0
  21. package/dist/app-config/spec.js +36 -1
  22. package/dist/app-config/validation.d.ts +49 -0
  23. package/dist/app-config/validation.js +538 -1
  24. package/dist/capabilities/capabilities.d.ts +48 -0
  25. package/dist/capabilities/capabilities.js +50 -0
  26. package/dist/capabilities/docs/capabilities.docblock.d.ts +6 -0
  27. package/dist/capabilities/docs/capabilities.docblock.js +21 -1
  28. package/dist/capabilities/index.d.ts +3 -0
  29. package/dist/capabilities/index.js +4 -0
  30. package/dist/capabilities/openbanking.d.ts +10 -0
  31. package/dist/capabilities/openbanking.js +92 -1
  32. package/dist/client/index.d.ts +6 -0
  33. package/dist/client/index.js +9 -1
  34. package/dist/client/react/drivers/rn-reusables.d.ts +22 -0
  35. package/dist/client/react/drivers/rn-reusables.js +21 -1
  36. package/dist/client/react/drivers/shadcn.d.ts +12 -0
  37. package/dist/client/react/drivers/shadcn.js +11 -1
  38. package/dist/client/react/feature-render.d.ts +21 -0
  39. package/dist/client/react/feature-render.js +44 -1
  40. package/dist/client/react/form-render.d.ts +92 -0
  41. package/dist/client/react/form-render.js +298 -1
  42. package/dist/client/react/index.d.ts +5 -0
  43. package/dist/client/react/index.js +8 -1
  44. package/dist/contract-registry/index.d.ts +3 -0
  45. package/dist/contract-registry/index.js +3 -1
  46. package/dist/contract-registry/schemas.d.ts +124 -0
  47. package/dist/contract-registry/schemas.js +61 -1
  48. package/dist/contract-registry/types.d.ts +46 -0
  49. package/dist/data-views/data-views.d.ts +138 -0
  50. package/dist/data-views/data-views.js +58 -0
  51. package/dist/data-views/docs/data-views.docblock.d.ts +6 -0
  52. package/dist/data-views/docs/data-views.docblock.js +21 -1
  53. package/dist/data-views/index.d.ts +4 -0
  54. package/dist/data-views/index.js +5 -0
  55. package/dist/data-views/query-generator.d.ts +40 -0
  56. package/dist/data-views/query-generator.js +48 -1
  57. package/dist/data-views/runtime.d.ts +27 -0
  58. package/dist/data-views/runtime.js +39 -1
  59. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +6 -0
  60. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -350
  61. package/dist/docs/index.d.ts +6 -0
  62. package/dist/docs/index.js +27 -1
  63. package/dist/docs/meta.docs.d.ts +6 -0
  64. package/dist/docs/meta.docs.js +18 -2
  65. package/dist/docs/presentations.d.ts +33 -0
  66. package/dist/docs/presentations.js +64 -1
  67. package/dist/docs/registry.d.ts +23 -0
  68. package/dist/docs/registry.js +51 -1
  69. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +6 -0
  70. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +25 -2
  71. package/dist/docs/tech/contracts/README.docblock.d.ts +6 -0
  72. package/dist/docs/tech/contracts/README.docblock.js +21 -1
  73. package/dist/docs/tech/contracts/create-subscription.docblock.d.ts +6 -0
  74. package/dist/docs/tech/contracts/create-subscription.docblock.js +21 -1
  75. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts +6 -0
  76. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +21 -180
  77. package/dist/docs/tech/contracts/migrations.docblock.d.ts +6 -0
  78. package/dist/docs/tech/contracts/migrations.docblock.js +21 -1
  79. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +6 -0
  80. package/dist/docs/tech/contracts/openapi-export.docblock.js +25 -5
  81. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +6 -0
  82. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +19 -60
  83. package/dist/docs/tech/contracts/overlays.docblock.d.ts +6 -0
  84. package/dist/docs/tech/contracts/overlays.docblock.js +21 -68
  85. package/dist/docs/tech/contracts/tests.docblock.d.ts +6 -0
  86. package/dist/docs/tech/contracts/tests.docblock.js +21 -132
  87. package/dist/docs/tech/contracts/themes.docblock.d.ts +6 -0
  88. package/dist/docs/tech/contracts/themes.docblock.js +21 -1
  89. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +6 -0
  90. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +21 -106
  91. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +6 -0
  92. package/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -213
  93. package/dist/docs/tech/llm/llm-integration.docblock.d.ts +7 -0
  94. package/dist/docs/tech/llm/llm-integration.docblock.js +76 -7
  95. package/dist/docs/tech/mcp-endpoints.docblock.d.ts +6 -0
  96. package/dist/docs/tech/mcp-endpoints.docblock.js +38 -1
  97. package/dist/docs/tech/presentation-runtime.docblock.d.ts +6 -0
  98. package/dist/docs/tech/presentation-runtime.docblock.js +17 -1
  99. package/dist/docs/tech/schema/README.docblock.d.ts +6 -0
  100. package/dist/docs/tech/schema/README.docblock.js +21 -262
  101. package/dist/docs/tech/studio/learning-events.docblock.d.ts +6 -0
  102. package/dist/docs/tech/studio/learning-events.docblock.js +49 -1
  103. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +6 -0
  104. package/dist/docs/tech/studio/learning-journeys.docblock.js +25 -2
  105. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +6 -0
  106. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +24 -2
  107. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +6 -0
  108. package/dist/docs/tech/studio/project-access-teams.docblock.js +26 -16
  109. package/dist/docs/tech/studio/project-routing.docblock.d.ts +6 -0
  110. package/dist/docs/tech/studio/project-routing.docblock.js +68 -1
  111. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +6 -0
  112. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +23 -2
  113. package/dist/docs/tech/studio/team-invitations.docblock.d.ts +6 -0
  114. package/dist/docs/tech/studio/team-invitations.docblock.js +41 -36
  115. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +6 -0
  116. package/dist/docs/tech/studio/workspace-ops.docblock.js +48 -1
  117. package/dist/docs/tech/studio/workspaces.docblock.d.ts +6 -0
  118. package/dist/docs/tech/studio/workspaces.docblock.js +24 -2
  119. package/dist/docs/tech/telemetry-ingest.docblock.d.ts +6 -0
  120. package/dist/docs/tech/telemetry-ingest.docblock.js +37 -3
  121. package/dist/docs/tech/templates/runtime.docblock.d.ts +6 -0
  122. package/dist/docs/tech/templates/runtime.docblock.js +21 -1
  123. package/dist/docs/tech/vscode-extension.docblock.d.ts +6 -0
  124. package/dist/docs/tech/vscode-extension.docblock.js +37 -3
  125. package/dist/docs/tech/workflows/overview.docblock.d.ts +6 -0
  126. package/dist/docs/tech/workflows/overview.docblock.js +21 -1
  127. package/dist/docs/tech-contracts.docs.d.ts +6 -0
  128. package/dist/docs/tech-contracts.docs.js +27 -7
  129. package/dist/docs/types.d.ts +41 -0
  130. package/dist/events.d.ts +47 -0
  131. package/dist/events.js +19 -1
  132. package/dist/experiments/docs/experiments.docblock.d.ts +6 -0
  133. package/dist/experiments/docs/experiments.docblock.js +21 -128
  134. package/dist/experiments/evaluator.d.ts +37 -0
  135. package/dist/experiments/evaluator.js +101 -1
  136. package/dist/experiments/spec-resolver.d.ts +17 -0
  137. package/dist/experiments/spec.d.ts +82 -0
  138. package/dist/experiments/spec.js +33 -1
  139. package/dist/features.d.ts +104 -0
  140. package/dist/features.js +91 -1
  141. package/dist/forms/docs/forms.docblock.d.ts +6 -0
  142. package/dist/forms/docs/forms.docblock.js +21 -1
  143. package/dist/forms/forms.d.ts +266 -0
  144. package/dist/forms/forms.js +146 -0
  145. package/dist/forms/index.d.ts +2 -0
  146. package/dist/forms/index.js +3 -0
  147. package/dist/index.d.ts +142 -0
  148. package/dist/index.js +119 -1
  149. package/dist/install.d.ts +77 -0
  150. package/dist/install.js +40 -1
  151. package/dist/integrations/binding.d.ts +17 -0
  152. package/dist/integrations/connection.d.ts +51 -0
  153. package/dist/integrations/docs/integrations.docblock.d.ts +6 -0
  154. package/dist/integrations/docs/integrations.docblock.js +94 -1
  155. package/dist/integrations/health.d.ts +21 -0
  156. package/dist/integrations/health.js +69 -1
  157. package/dist/integrations/index.d.ts +34 -0
  158. package/dist/integrations/index.js +23 -1
  159. package/dist/integrations/integrations.feature.d.ts +11 -0
  160. package/dist/integrations/integrations.feature.js +60 -0
  161. package/dist/integrations/openbanking/contracts/accounts.d.ts +289 -0
  162. package/dist/integrations/openbanking/contracts/accounts.js +236 -1
  163. package/dist/integrations/openbanking/contracts/balances.d.ts +165 -0
  164. package/dist/integrations/openbanking/contracts/balances.js +166 -1
  165. package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
  166. package/dist/integrations/openbanking/contracts/index.js +12 -1
  167. package/dist/integrations/openbanking/contracts/transactions.d.ts +213 -0
  168. package/dist/integrations/openbanking/contracts/transactions.js +217 -1
  169. package/dist/integrations/openbanking/guards.d.ts +12 -0
  170. package/dist/integrations/openbanking/guards.js +33 -1
  171. package/dist/integrations/openbanking/models.d.ts +228 -0
  172. package/dist/integrations/openbanking/models.js +240 -1
  173. package/dist/integrations/openbanking/openbanking.feature.d.ts +11 -0
  174. package/dist/integrations/openbanking/openbanking.feature.js +69 -1
  175. package/dist/integrations/openbanking/telemetry.d.ts +15 -0
  176. package/dist/integrations/openbanking/telemetry.js +39 -1
  177. package/dist/integrations/operations.d.ts +437 -0
  178. package/dist/integrations/operations.js +392 -0
  179. package/dist/integrations/providers/calendar.d.ts +78 -0
  180. package/dist/integrations/providers/elevenlabs.d.ts +7 -0
  181. package/dist/integrations/providers/elevenlabs.js +55 -1
  182. package/dist/integrations/providers/email.d.ts +86 -0
  183. package/dist/integrations/providers/embedding.d.ts +24 -0
  184. package/dist/integrations/providers/gcs-storage.d.ts +7 -0
  185. package/dist/integrations/providers/gcs-storage.js +78 -1
  186. package/dist/integrations/providers/gmail.d.ts +7 -0
  187. package/dist/integrations/providers/gmail.js +90 -1
  188. package/dist/integrations/providers/google-calendar.d.ts +7 -0
  189. package/dist/integrations/providers/google-calendar.js +69 -1
  190. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +20 -0
  191. package/dist/integrations/providers/impls/elevenlabs-voice.js +95 -1
  192. package/dist/integrations/providers/impls/gcs-storage.d.ts +24 -0
  193. package/dist/integrations/providers/impls/gcs-storage.js +88 -1
  194. package/dist/integrations/providers/impls/gmail-inbound.d.ts +26 -0
  195. package/dist/integrations/providers/impls/gmail-inbound.js +200 -1
  196. package/dist/integrations/providers/impls/gmail-outbound.d.ts +18 -0
  197. package/dist/integrations/providers/impls/gmail-outbound.js +104 -5
  198. package/dist/integrations/providers/impls/google-calendar.d.ts +23 -0
  199. package/dist/integrations/providers/impls/google-calendar.js +154 -1
  200. package/dist/integrations/providers/impls/index.d.ts +15 -0
  201. package/dist/integrations/providers/impls/index.js +16 -1
  202. package/dist/integrations/providers/impls/mistral-embedding.d.ts +23 -0
  203. package/dist/integrations/providers/impls/mistral-embedding.js +41 -1
  204. package/dist/integrations/providers/impls/mistral-llm.d.ts +31 -0
  205. package/dist/integrations/providers/impls/mistral-llm.js +247 -1
  206. package/dist/integrations/providers/impls/postmark-email.d.ts +19 -0
  207. package/dist/integrations/providers/impls/postmark-email.js +55 -1
  208. package/dist/integrations/providers/impls/powens-client.d.ts +124 -0
  209. package/dist/integrations/providers/impls/powens-client.js +171 -1
  210. package/dist/integrations/providers/impls/powens-openbanking.d.ts +27 -0
  211. package/dist/integrations/providers/impls/powens-openbanking.js +218 -1
  212. package/dist/integrations/providers/impls/provider-factory.d.ts +26 -0
  213. package/dist/integrations/providers/impls/provider-factory.js +145 -1
  214. package/dist/integrations/providers/impls/qdrant-vector.d.ts +24 -0
  215. package/dist/integrations/providers/impls/qdrant-vector.js +69 -1
  216. package/dist/integrations/providers/impls/stripe-payments.d.ts +28 -0
  217. package/dist/integrations/providers/impls/stripe-payments.js +202 -1
  218. package/dist/integrations/providers/impls/twilio-sms.d.ts +20 -0
  219. package/dist/integrations/providers/impls/twilio-sms.js +58 -1
  220. package/dist/integrations/providers/index.d.ts +22 -0
  221. package/dist/integrations/providers/index.js +13 -1
  222. package/dist/integrations/providers/llm.d.ts +82 -0
  223. package/dist/integrations/providers/mistral.d.ts +7 -0
  224. package/dist/integrations/providers/mistral.js +71 -1
  225. package/dist/integrations/providers/openbanking.d.ts +128 -0
  226. package/dist/integrations/providers/payments.d.ts +109 -0
  227. package/dist/integrations/providers/postmark.d.ts +7 -0
  228. package/dist/integrations/providers/postmark.js +71 -1
  229. package/dist/integrations/providers/powens.d.ts +7 -0
  230. package/dist/integrations/providers/powens.js +119 -1
  231. package/dist/integrations/providers/qdrant.d.ts +7 -0
  232. package/dist/integrations/providers/qdrant.js +76 -1
  233. package/dist/integrations/providers/registry.d.ts +11 -0
  234. package/dist/integrations/providers/registry.js +34 -1
  235. package/dist/integrations/providers/sms.d.ts +34 -0
  236. package/dist/integrations/providers/storage.d.ts +60 -0
  237. package/dist/integrations/providers/stripe.d.ts +7 -0
  238. package/dist/integrations/providers/stripe.js +86 -1
  239. package/dist/integrations/providers/twilio-sms.d.ts +7 -0
  240. package/dist/integrations/providers/twilio-sms.js +64 -1
  241. package/dist/integrations/providers/vector-store.d.ts +43 -0
  242. package/dist/integrations/providers/voice.d.ts +34 -0
  243. package/dist/integrations/runtime.d.ts +99 -0
  244. package/dist/integrations/runtime.js +186 -1
  245. package/dist/integrations/secrets/aws-secret-manager.d.ts +31 -0
  246. package/dist/integrations/secrets/aws-secret-manager.js +231 -1
  247. package/dist/integrations/secrets/env-secret-provider.d.ts +31 -0
  248. package/dist/integrations/secrets/env-secret-provider.js +81 -1
  249. package/dist/integrations/secrets/gcp-secret-manager.d.ts +32 -0
  250. package/dist/integrations/secrets/gcp-secret-manager.js +229 -1
  251. package/dist/integrations/secrets/index.d.ts +7 -0
  252. package/dist/integrations/secrets/index.js +8 -1
  253. package/dist/integrations/secrets/manager.d.ts +47 -0
  254. package/dist/integrations/secrets/manager.js +103 -1
  255. package/dist/integrations/secrets/provider.d.ts +52 -0
  256. package/dist/integrations/secrets/provider.js +58 -1
  257. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +38 -0
  258. package/dist/integrations/secrets/scaleway-secret-manager.js +247 -1
  259. package/dist/integrations/secrets-types.d.ts +17 -0
  260. package/dist/integrations/spec.d.ts +75 -0
  261. package/dist/integrations/spec.js +39 -1
  262. package/dist/jobs/define-job.d.ts +18 -0
  263. package/dist/jobs/define-job.js +16 -1
  264. package/dist/jobs/gcp-cloud-tasks.d.ts +41 -0
  265. package/dist/jobs/gcp-cloud-tasks.js +53 -1
  266. package/dist/jobs/gcp-pubsub.d.ts +25 -0
  267. package/dist/jobs/gcp-pubsub.js +39 -1
  268. package/dist/jobs/handlers/gmail-sync-handler.d.ts +9 -0
  269. package/dist/jobs/handlers/gmail-sync-handler.js +9 -1
  270. package/dist/jobs/handlers/index.d.ts +9 -0
  271. package/dist/jobs/handlers/index.js +12 -1
  272. package/dist/jobs/handlers/ping-handler.d.ts +10 -0
  273. package/dist/jobs/handlers/ping-handler.js +15 -1
  274. package/dist/jobs/handlers/storage-document-handler.d.ts +12 -0
  275. package/dist/jobs/handlers/storage-document-handler.js +14 -1
  276. package/dist/jobs/index.d.ts +3 -0
  277. package/dist/jobs/index.js +4 -1
  278. package/dist/jobs/memory-queue.d.ts +18 -0
  279. package/dist/jobs/memory-queue.js +71 -1
  280. package/dist/jobs/queue.d.ts +131 -0
  281. package/dist/jobs/queue.js +33 -1
  282. package/dist/jobs/scaleway-sqs-queue.d.ts +30 -0
  283. package/dist/jobs/scaleway-sqs-queue.js +153 -1
  284. package/dist/jsonschema.d.ts +28 -0
  285. package/dist/jsonschema.js +32 -1
  286. package/dist/knowledge/binding.d.ts +25 -0
  287. package/dist/knowledge/docs/knowledge.docblock.d.ts +6 -0
  288. package/dist/knowledge/docs/knowledge.docblock.js +21 -138
  289. package/dist/knowledge/index.d.ts +11 -0
  290. package/dist/knowledge/index.js +10 -1
  291. package/dist/knowledge/ingestion/document-processor.d.ts +24 -0
  292. package/dist/knowledge/ingestion/document-processor.js +54 -1
  293. package/dist/knowledge/ingestion/embedding-service.d.ts +12 -0
  294. package/dist/knowledge/ingestion/embedding-service.js +25 -1
  295. package/dist/knowledge/ingestion/gmail-adapter.d.ts +18 -0
  296. package/dist/knowledge/ingestion/gmail-adapter.js +50 -5
  297. package/dist/knowledge/ingestion/index.d.ts +6 -0
  298. package/dist/knowledge/ingestion/index.js +7 -1
  299. package/dist/knowledge/ingestion/storage-adapter.d.ts +15 -0
  300. package/dist/knowledge/ingestion/storage-adapter.js +26 -1
  301. package/dist/knowledge/ingestion/vector-indexer.d.ts +18 -0
  302. package/dist/knowledge/ingestion/vector-indexer.js +32 -1
  303. package/dist/knowledge/knowledge.feature.d.ts +11 -0
  304. package/dist/knowledge/knowledge.feature.js +61 -0
  305. package/dist/knowledge/operations.d.ts +318 -0
  306. package/dist/knowledge/operations.js +321 -0
  307. package/dist/knowledge/query/index.d.ts +2 -0
  308. package/dist/knowledge/query/index.js +3 -1
  309. package/dist/knowledge/query/service.d.ts +29 -0
  310. package/dist/knowledge/query/service.js +64 -2
  311. package/dist/knowledge/runtime.d.ts +32 -0
  312. package/dist/knowledge/runtime.js +49 -1
  313. package/dist/knowledge/source.d.ts +32 -0
  314. package/dist/knowledge/spaces/email-threads.d.ts +7 -0
  315. package/dist/knowledge/spaces/email-threads.js +37 -1
  316. package/dist/knowledge/spaces/financial-docs.d.ts +7 -0
  317. package/dist/knowledge/spaces/financial-docs.js +37 -1
  318. package/dist/knowledge/spaces/financial-overview.d.ts +7 -0
  319. package/dist/knowledge/spaces/financial-overview.js +41 -1
  320. package/dist/knowledge/spaces/index.d.ts +7 -0
  321. package/dist/knowledge/spaces/index.js +8 -1
  322. package/dist/knowledge/spaces/product-canon.d.ts +7 -0
  323. package/dist/knowledge/spaces/product-canon.js +37 -1
  324. package/dist/knowledge/spaces/support-faq.d.ts +7 -0
  325. package/dist/knowledge/spaces/support-faq.js +40 -1
  326. package/dist/knowledge/spaces/uploaded-docs.d.ts +7 -0
  327. package/dist/knowledge/spaces/uploaded-docs.js +37 -1
  328. package/dist/knowledge/spec.d.ts +48 -0
  329. package/dist/knowledge/spec.js +39 -1
  330. package/dist/llm/exporters.d.ts +69 -0
  331. package/dist/llm/exporters.js +542 -8
  332. package/dist/llm/index.d.ts +4 -0
  333. package/dist/llm/index.js +4 -1
  334. package/dist/llm/prompts.d.ts +52 -0
  335. package/dist/llm/prompts.js +246 -56
  336. package/dist/llm/types.d.ts +214 -0
  337. package/dist/markdown.d.ts +22 -0
  338. package/dist/markdown.js +119 -3
  339. package/dist/migrations.d.ts +52 -0
  340. package/dist/migrations.js +33 -1
  341. package/dist/onboarding-base.d.ts +138 -0
  342. package/dist/onboarding-base.js +195 -1
  343. package/dist/openapi.d.ts +31 -0
  344. package/dist/openapi.js +75 -1
  345. package/dist/operations/index.d.ts +3 -0
  346. package/dist/operations/index.js +4 -0
  347. package/dist/operations/operation.d.ts +180 -0
  348. package/dist/operations/operation.js +35 -0
  349. package/dist/operations/registry.d.ts +103 -0
  350. package/dist/operations/registry.js +252 -0
  351. package/dist/ownership.d.ts +84 -0
  352. package/dist/ownership.js +38 -1
  353. package/dist/policy/docs/policy.docblock.d.ts +6 -0
  354. package/dist/policy/docs/policy.docblock.js +21 -1
  355. package/dist/policy/engine.d.ts +40 -0
  356. package/dist/policy/engine.js +223 -1
  357. package/dist/policy/index.d.ts +5 -0
  358. package/dist/policy/index.js +5 -0
  359. package/dist/policy/opa-adapter.d.ts +45 -0
  360. package/dist/policy/opa-adapter.js +71 -1
  361. package/dist/policy/registry.d.ts +9 -0
  362. package/dist/policy/registry.js +11 -0
  363. package/dist/policy/spec.d.ts +103 -0
  364. package/dist/policy/spec.js +0 -1
  365. package/dist/presentations/docs/presentations-conventions.docblock.d.ts +6 -0
  366. package/dist/presentations/docs/presentations-conventions.docblock.js +20 -7
  367. package/dist/presentations/index.d.ts +4 -0
  368. package/dist/presentations/index.js +5 -0
  369. package/dist/presentations/presentations.d.ts +50 -0
  370. package/dist/presentations/presentations.js +7 -0
  371. package/dist/presentations/registry.d.ts +10 -0
  372. package/dist/presentations/registry.js +12 -0
  373. package/dist/presentations/transform-engine.d.ts +66 -0
  374. package/dist/presentations/transform-engine.js +282 -0
  375. package/dist/prompt.d.ts +60 -0
  376. package/dist/prompt.js +10 -1
  377. package/dist/promptRegistry.d.ts +15 -0
  378. package/dist/promptRegistry.js +34 -1
  379. package/dist/regenerator/adapters.d.ts +19 -0
  380. package/dist/regenerator/docs/regenerator.docblock.d.ts +6 -0
  381. package/dist/regenerator/docs/regenerator.docblock.js +21 -184
  382. package/dist/regenerator/executor.d.ts +70 -0
  383. package/dist/regenerator/executor.js +86 -1
  384. package/dist/regenerator/index.d.ts +7 -0
  385. package/dist/regenerator/index.js +6 -1
  386. package/dist/regenerator/service.d.ts +33 -0
  387. package/dist/regenerator/service.js +92 -1
  388. package/dist/regenerator/sinks.d.ts +26 -0
  389. package/dist/regenerator/sinks.js +32 -1
  390. package/dist/regenerator/types.d.ts +107 -0
  391. package/dist/regenerator/utils.d.ts +9 -0
  392. package/dist/regenerator/utils.js +51 -1
  393. package/dist/registry-utils.d.ts +106 -0
  394. package/dist/registry-utils.js +122 -0
  395. package/dist/registry.d.ts +30 -0
  396. package/dist/registry.js +58 -1
  397. package/dist/resources.d.ts +64 -0
  398. package/dist/resources.js +50 -1
  399. package/dist/schema-to-markdown.d.ts +54 -0
  400. package/dist/schema-to-markdown.js +214 -10
  401. package/dist/server/contracts-adapter-hydration.d.ts +15 -0
  402. package/dist/server/contracts-adapter-hydration.js +41 -0
  403. package/dist/server/contracts-adapter-input.d.ts +9 -0
  404. package/dist/server/contracts-adapter-input.js +77 -0
  405. package/dist/server/graphql-pothos.d.ts +31 -0
  406. package/dist/server/graphql-pothos.js +127 -1
  407. package/dist/server/index.d.ts +9 -0
  408. package/dist/server/index.js +10 -1
  409. package/dist/server/mcp/createMcpServer.d.ts +15 -0
  410. package/dist/server/mcp/createMcpServer.js +28 -1
  411. package/dist/server/mcp/mcpTypes.d.ts +30 -0
  412. package/dist/server/mcp/registerPresentations.d.ts +7 -0
  413. package/dist/server/mcp/registerPresentations.js +112 -1
  414. package/dist/server/mcp/registerPrompts.d.ts +8 -0
  415. package/dist/server/mcp/registerPrompts.js +36 -2
  416. package/dist/server/mcp/registerResources.d.ts +8 -0
  417. package/dist/server/mcp/registerResources.js +35 -1
  418. package/dist/server/mcp/registerTools.d.ts +8 -0
  419. package/dist/server/mcp/registerTools.js +22 -1
  420. package/dist/server/provider-mcp.d.ts +2 -0
  421. package/dist/server/provider-mcp.js +3 -1
  422. package/dist/server/rest-elysia.d.ts +40 -0
  423. package/dist/server/rest-elysia.js +20 -1
  424. package/dist/server/rest-express.d.ts +16 -0
  425. package/dist/server/rest-express.js +36 -1
  426. package/dist/server/rest-generic.d.ts +32 -0
  427. package/dist/server/rest-generic.js +124 -1
  428. package/dist/server/rest-next-app.d.ts +35 -0
  429. package/dist/server/rest-next-app.js +38 -1
  430. package/dist/server/rest-next-mcp.d.ts +11 -0
  431. package/dist/server/rest-next-mcp.js +45 -1
  432. package/dist/server/rest-next-pages.d.ts +9 -0
  433. package/dist/server/rest-next-pages.js +22 -1
  434. package/dist/telemetry/anomaly.d.ts +27 -0
  435. package/dist/telemetry/anomaly.js +48 -1
  436. package/dist/telemetry/docs/telemetry.docblock.d.ts +6 -0
  437. package/dist/telemetry/docs/telemetry.docblock.js +21 -139
  438. package/dist/telemetry/index.d.ts +4 -0
  439. package/dist/telemetry/index.js +5 -1
  440. package/dist/telemetry/spec.d.ts +91 -0
  441. package/dist/telemetry/spec.js +69 -1
  442. package/dist/telemetry/tracker.d.ts +51 -0
  443. package/dist/telemetry/tracker.js +76 -1
  444. package/dist/tests/index.d.ts +3 -0
  445. package/dist/tests/index.js +4 -1
  446. package/dist/tests/runner.d.ts +43 -0
  447. package/dist/tests/runner.js +150 -1
  448. package/dist/tests/spec.d.ts +89 -0
  449. package/dist/tests/spec.js +33 -1
  450. package/dist/themes.d.ts +53 -0
  451. package/dist/themes.js +39 -1
  452. package/dist/translations/catalog.d.ts +28 -0
  453. package/dist/translations/tenant.d.ts +15 -0
  454. package/dist/types.d.ts +92 -0
  455. package/dist/workflow/adapters/db-adapter.d.ts +46 -0
  456. package/dist/workflow/adapters/db-adapter.js +83 -1
  457. package/dist/workflow/adapters/file-adapter.d.ts +14 -0
  458. package/dist/workflow/adapters/file-adapter.js +11 -1
  459. package/dist/workflow/adapters/index.d.ts +4 -0
  460. package/dist/workflow/adapters/index.js +5 -1
  461. package/dist/workflow/adapters/memory-store.d.ts +18 -0
  462. package/dist/workflow/adapters/memory-store.js +58 -1
  463. package/dist/workflow/expression.d.ts +9 -0
  464. package/dist/workflow/expression.js +99 -1
  465. package/dist/workflow/index.d.ts +10 -0
  466. package/dist/workflow/index.js +9 -1
  467. package/dist/workflow/runner.d.ts +74 -0
  468. package/dist/workflow/runner.js +337 -1
  469. package/dist/workflow/sla-monitor.d.ts +20 -0
  470. package/dist/workflow/sla-monitor.js +47 -1
  471. package/dist/workflow/spec.d.ts +105 -0
  472. package/dist/workflow/spec.js +55 -1
  473. package/dist/workflow/state.d.ts +35 -0
  474. package/dist/workflow/validation.d.ts +29 -0
  475. package/dist/workflow/validation.js +176 -1
  476. package/dist/workspace-config/contractsrc-schema.d.ts +786 -0
  477. package/dist/workspace-config/contractsrc-schema.js +247 -0
  478. package/dist/workspace-config/index.d.ts +2 -0
  479. package/dist/workspace-config/index.js +3 -0
  480. package/package.json +286 -266
  481. package/dist/capabilities.js +0 -1
  482. package/dist/contracts-adapter-hydration.js +0 -1
  483. package/dist/contracts-adapter-input.js +0 -1
  484. package/dist/data-views.js +0 -1
  485. package/dist/docs/PUBLISHING.docblock.js +0 -76
  486. package/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -383
  487. package/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -68
  488. package/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -140
  489. package/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -86
  490. package/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -1
  491. package/dist/forms.js +0 -1
  492. package/dist/integrations/contracts.js +0 -1
  493. package/dist/knowledge/contracts.js +0 -1
  494. package/dist/openbanking/docs/openbanking.docblock.js +0 -109
  495. package/dist/presentations.backcompat.js +0 -1
  496. package/dist/presentations.js +0 -1
  497. package/dist/presentations.v2.js +0 -7
  498. package/dist/spec.js +0 -1
  499. /package/dist/{types/all.js → integrations/secrets-types.js} +0 -0
@@ -0,0 +1,107 @@
1
+ import { TelemetrySpec } from "../telemetry/spec.js";
2
+ import { AppBlueprintSpec, TenantAppConfig } from "../app-config/spec.js";
3
+ import { ResolvedAppConfig } from "../app-config/runtime.js";
4
+
5
+ //#region src/regenerator/types.d.ts
6
+ type RegeneratorSignal = TelemetrySignalEnvelope | ErrorSignalEnvelope | BehaviorSignalEnvelope;
7
+ interface TelemetrySignalEnvelope {
8
+ type: 'telemetry';
9
+ contextId: string;
10
+ signal: TelemetrySignal;
11
+ }
12
+ interface TelemetrySignal {
13
+ eventName: string;
14
+ eventVersion: number;
15
+ count: number;
16
+ windowStart: Date;
17
+ windowEnd: Date;
18
+ anomalyScore?: number;
19
+ classification?: 'normal' | 'warning' | 'critical';
20
+ metadata?: Record<string, unknown>;
21
+ telemetrySpec?: TelemetrySpec;
22
+ }
23
+ interface ErrorSignalEnvelope {
24
+ type: 'error';
25
+ contextId: string;
26
+ signal: ErrorSignal;
27
+ }
28
+ interface ErrorSignal {
29
+ id: string;
30
+ classification: 'runtime' | 'policy' | 'workflow' | 'unknown';
31
+ message: string;
32
+ occurredAt: Date;
33
+ count: number;
34
+ metadata?: Record<string, unknown>;
35
+ }
36
+ interface BehaviorSignalEnvelope {
37
+ type: 'behavior';
38
+ contextId: string;
39
+ signal: BehaviorSignal;
40
+ }
41
+ interface BehaviorSignal {
42
+ feature: string;
43
+ metric: 'usage' | 'conversion' | 'latency' | 'custom';
44
+ value: number;
45
+ baseline?: number;
46
+ windowStart: Date;
47
+ windowEnd: Date;
48
+ metadata?: Record<string, unknown>;
49
+ }
50
+ interface SpecChangeProposal {
51
+ id: string;
52
+ title: string;
53
+ summary: string;
54
+ confidence: ProposalConfidence;
55
+ rationale: string[];
56
+ target: ProposalTarget;
57
+ diff?: string;
58
+ actions: ProposalAction[];
59
+ blockers?: ProposalBlocker[];
60
+ createdAt: Date;
61
+ signalIds: string[];
62
+ }
63
+ type ProposalConfidence = 'low' | 'medium' | 'high';
64
+ interface ProposalTarget {
65
+ specType: 'workflow' | 'capability' | 'policy' | 'dataView' | 'telemetry' | 'experiment' | 'theme' | 'unknown';
66
+ reference: {
67
+ key: string;
68
+ version?: number;
69
+ };
70
+ tenantScoped?: boolean;
71
+ }
72
+ type ProposalAction = {
73
+ kind: 'update_blueprint';
74
+ summary: string;
75
+ } | {
76
+ kind: 'update_tenant_config';
77
+ summary: string;
78
+ } | {
79
+ kind: 'run_tests';
80
+ tests: string[];
81
+ } | {
82
+ kind: 'run_migrations';
83
+ migrations: string[];
84
+ } | {
85
+ kind: 'trigger_regeneration';
86
+ summary?: string;
87
+ };
88
+ interface ProposalBlocker {
89
+ description: string;
90
+ kind: 'missing_context' | 'insufficient_data' | 'user_feedback' | 'manual_review';
91
+ }
92
+ interface RegenerationContext {
93
+ id: string;
94
+ blueprint: AppBlueprintSpec;
95
+ tenantConfig: TenantAppConfig;
96
+ resolved: ResolvedAppConfig;
97
+ }
98
+ interface RegenerationRule {
99
+ readonly id: string;
100
+ readonly description: string;
101
+ evaluate(context: RegenerationContext, signals: RegeneratorSignal[]): Promise<SpecChangeProposal[]>;
102
+ }
103
+ interface ProposalSink {
104
+ submit(context: RegenerationContext, proposal: SpecChangeProposal): Promise<void>;
105
+ }
106
+ //#endregion
107
+ export { BehaviorSignal, BehaviorSignalEnvelope, ErrorSignal, ErrorSignalEnvelope, ProposalAction, ProposalBlocker, ProposalConfidence, ProposalSink, ProposalTarget, RegenerationContext, RegenerationRule, RegeneratorSignal, SpecChangeProposal, TelemetrySignal, TelemetrySignalEnvelope };
@@ -0,0 +1,9 @@
1
+ import { BehaviorSignal, BehaviorSignalEnvelope, ErrorSignal, ErrorSignalEnvelope, TelemetrySignal, TelemetrySignalEnvelope } from "./types.js";
2
+
3
+ //#region src/regenerator/utils.d.ts
4
+ type Clock = () => Date;
5
+ declare function telemetryToEnvelope(contextId: string, signal: TelemetrySignal, clock: Clock): TelemetrySignalEnvelope;
6
+ declare function errorToEnvelope(contextId: string, signal: ErrorSignal, clock: Clock): ErrorSignalEnvelope;
7
+ declare function behaviorToEnvelope(contextId: string, signal: BehaviorSignal, clock: Clock): BehaviorSignalEnvelope;
8
+ //#endregion
9
+ export { behaviorToEnvelope, errorToEnvelope, telemetryToEnvelope };
@@ -1 +1,51 @@
1
- function e(e,t,n){return{type:`telemetry`,contextId:e,signal:r(t,n)}}function t(e,t,n){return{type:`error`,contextId:e,signal:i(t,n)}}function n(e,t,n){return{type:`behavior`,contextId:e,signal:a(t,n)}}function r(e,t){return{...e,windowStart:o(e.windowStart,t),windowEnd:o(e.windowEnd,t)}}function i(e,t){return{...e,occurredAt:o(e.occurredAt,t)}}function a(e,t){return{...e,windowStart:o(e.windowStart,t),windowEnd:o(e.windowEnd,t)}}function o(e,t){if(e instanceof Date)return e;let n=new Date(e);return Number.isNaN(n.getTime())?t():n}export{n as behaviorToEnvelope,t as errorToEnvelope,e as telemetryToEnvelope};
1
+ //#region src/regenerator/utils.ts
2
+ function telemetryToEnvelope(contextId, signal, clock) {
3
+ return {
4
+ type: "telemetry",
5
+ contextId,
6
+ signal: normalizeTelemetryDates(signal, clock)
7
+ };
8
+ }
9
+ function errorToEnvelope(contextId, signal, clock) {
10
+ return {
11
+ type: "error",
12
+ contextId,
13
+ signal: normalizeErrorDates(signal, clock)
14
+ };
15
+ }
16
+ function behaviorToEnvelope(contextId, signal, clock) {
17
+ return {
18
+ type: "behavior",
19
+ contextId,
20
+ signal: normalizeBehaviorDates(signal, clock)
21
+ };
22
+ }
23
+ function normalizeTelemetryDates(signal, clock) {
24
+ return {
25
+ ...signal,
26
+ windowStart: toDate(signal.windowStart, clock),
27
+ windowEnd: toDate(signal.windowEnd, clock)
28
+ };
29
+ }
30
+ function normalizeErrorDates(signal, clock) {
31
+ return {
32
+ ...signal,
33
+ occurredAt: toDate(signal.occurredAt, clock)
34
+ };
35
+ }
36
+ function normalizeBehaviorDates(signal, clock) {
37
+ return {
38
+ ...signal,
39
+ windowStart: toDate(signal.windowStart, clock),
40
+ windowEnd: toDate(signal.windowEnd, clock)
41
+ };
42
+ }
43
+ function toDate(value, clock) {
44
+ if (value instanceof Date) return value;
45
+ const parsed = new Date(value);
46
+ if (Number.isNaN(parsed.getTime())) return clock();
47
+ return parsed;
48
+ }
49
+
50
+ //#endregion
51
+ export { behaviorToEnvelope, errorToEnvelope, telemetryToEnvelope };
@@ -0,0 +1,106 @@
1
+ import { Stability } from "./ownership.js";
2
+
3
+ //#region src/registry-utils.d.ts
4
+
5
+ /**
6
+ * Filter criteria for registry items.
7
+ * All criteria are optional and combined with AND logic.
8
+ */
9
+ interface RegistryFilter {
10
+ /** Filter by tags (item must have at least one matching tag) */
11
+ tags?: string[];
12
+ /** Filter by owners (item must have at least one matching owner) */
13
+ owners?: string[];
14
+ /** Filter by stability levels */
15
+ stability?: Stability[];
16
+ /** Filter by domain (first segment of name) */
17
+ domain?: string;
18
+ /** Filter by key pattern (glob or regex) */
19
+ keyPattern?: string;
20
+ }
21
+ /**
22
+ * Item with standard metadata for filtering.
23
+ */
24
+ interface FilterableItem {
25
+ meta: {
26
+ key?: string;
27
+ tags?: string[];
28
+ owners?: string[];
29
+ stability?: Stability;
30
+ domain?: string;
31
+ };
32
+ }
33
+ /**
34
+ * Grouping key function type.
35
+ */
36
+ type GroupKeyFn<T> = (item: T) => string;
37
+ /**
38
+ * Grouped items result.
39
+ */
40
+ interface GroupedItems<T> {
41
+ key: string;
42
+ items: T[];
43
+ }
44
+ /**
45
+ * Pre-built grouping strategies for common use cases.
46
+ */
47
+ declare const GroupingStrategies: {
48
+ /**
49
+ * Group by first tag.
50
+ */
51
+ byTag: <T extends FilterableItem>(item: T) => string;
52
+ /**
53
+ * Group by all tags (item appears in multiple groups).
54
+ */
55
+ byAllTags: <T extends FilterableItem>(item: T) => string[];
56
+ /**
57
+ * Group by first owner.
58
+ */
59
+ byOwner: <T extends FilterableItem>(item: T) => string;
60
+ /**
61
+ * Group by domain (first segment of name).
62
+ */
63
+ byDomain: <T extends FilterableItem>(item: T) => string;
64
+ /**
65
+ * Group by stability level.
66
+ */
67
+ byStability: <T extends FilterableItem>(item: T) => string;
68
+ /**
69
+ * Create URL path grouping strategy with configurable depth.
70
+ */
71
+ byUrlPath: (level: number) => (item: {
72
+ path?: string;
73
+ }) => string;
74
+ };
75
+ /**
76
+ * Filter items by criteria.
77
+ * All criteria are combined with AND logic.
78
+ */
79
+ declare function filterBy<T extends FilterableItem>(items: T[], filter: RegistryFilter): T[];
80
+ /**
81
+ * Group items by key function.
82
+ */
83
+ declare function groupBy<T>(items: T[], keyFn: GroupKeyFn<T>): Map<string, T[]>;
84
+ /**
85
+ * Group items by key function, returning array format.
86
+ */
87
+ declare function groupByToArray<T>(items: T[], keyFn: GroupKeyFn<T>): GroupedItems<T>[];
88
+ /**
89
+ * Group items where one item can belong to multiple groups.
90
+ * Useful for byAllTags grouping.
91
+ */
92
+ declare function groupByMultiple<T>(items: T[], keysFn: (item: T) => string[]): Map<string, T[]>;
93
+ /**
94
+ * Get unique tags from a collection of items.
95
+ */
96
+ declare function getUniqueTags<T extends FilterableItem>(items: T[]): string[];
97
+ /**
98
+ * Get unique owners from a collection of items.
99
+ */
100
+ declare function getUniqueOwners<T extends FilterableItem>(items: T[]): string[];
101
+ /**
102
+ * Get unique domains from a collection of items.
103
+ */
104
+ declare function getUniqueDomains<T extends FilterableItem>(items: T[]): string[];
105
+ //#endregion
106
+ export { FilterableItem, GroupKeyFn, GroupedItems, GroupingStrategies, RegistryFilter, filterBy, getUniqueDomains, getUniqueOwners, getUniqueTags, groupBy, groupByMultiple, groupByToArray };
@@ -0,0 +1,122 @@
1
+ import { __esmMin, __exportAll } from "./_virtual/rolldown_runtime.js";
2
+
3
+ //#region src/registry-utils.ts
4
+ var registry_utils_exports = /* @__PURE__ */ __exportAll({
5
+ GroupingStrategies: () => GroupingStrategies,
6
+ filterBy: () => filterBy,
7
+ getUniqueDomains: () => getUniqueDomains,
8
+ getUniqueOwners: () => getUniqueOwners,
9
+ getUniqueTags: () => getUniqueTags,
10
+ groupBy: () => groupBy,
11
+ groupByMultiple: () => groupByMultiple,
12
+ groupByToArray: () => groupByToArray
13
+ });
14
+ /**
15
+ * Filter items by criteria.
16
+ * All criteria are combined with AND logic.
17
+ */
18
+ function filterBy(items, filter) {
19
+ return items.filter((item) => {
20
+ if (filter.tags?.length) {
21
+ if (!filter.tags.some((tag) => item.meta.tags?.includes(tag))) return false;
22
+ }
23
+ if (filter.owners?.length) {
24
+ if (!filter.owners.some((owner) => item.meta.owners?.includes(owner))) return false;
25
+ }
26
+ if (filter.stability?.length) {
27
+ if (!filter.stability.includes(item.meta.stability ?? "stable")) return false;
28
+ }
29
+ if (filter.domain) {
30
+ if (GroupingStrategies.byDomain(item) !== filter.domain) return false;
31
+ }
32
+ if (filter.keyPattern) {
33
+ const name = item.meta.key ?? item.meta.key ?? "";
34
+ const pattern = filter.keyPattern.replace(/\*/g, ".*").replace(/\?/g, ".");
35
+ if (!new RegExp(`^${pattern}$`, "i").test(name)) return false;
36
+ }
37
+ return true;
38
+ });
39
+ }
40
+ /**
41
+ * Group items by key function.
42
+ */
43
+ function groupBy(items, keyFn) {
44
+ const groups = /* @__PURE__ */ new Map();
45
+ for (const item of items) {
46
+ const key = keyFn(item);
47
+ const existing = groups.get(key);
48
+ if (existing) existing.push(item);
49
+ else groups.set(key, [item]);
50
+ }
51
+ return groups;
52
+ }
53
+ /**
54
+ * Group items by key function, returning array format.
55
+ */
56
+ function groupByToArray(items, keyFn) {
57
+ const map = groupBy(items, keyFn);
58
+ return Array.from(map.entries()).map(([key, items$1]) => ({
59
+ key,
60
+ items: items$1
61
+ }));
62
+ }
63
+ /**
64
+ * Group items where one item can belong to multiple groups.
65
+ * Useful for byAllTags grouping.
66
+ */
67
+ function groupByMultiple(items, keysFn) {
68
+ const groups = /* @__PURE__ */ new Map();
69
+ for (const item of items) {
70
+ const keys = keysFn(item);
71
+ for (const key of keys) {
72
+ const existing = groups.get(key);
73
+ if (existing) existing.push(item);
74
+ else groups.set(key, [item]);
75
+ }
76
+ }
77
+ return groups;
78
+ }
79
+ /**
80
+ * Get unique tags from a collection of items.
81
+ */
82
+ function getUniqueTags(items) {
83
+ const tags = /* @__PURE__ */ new Set();
84
+ for (const item of items) for (const tag of item.meta.tags ?? []) tags.add(tag);
85
+ return Array.from(tags).sort();
86
+ }
87
+ /**
88
+ * Get unique owners from a collection of items.
89
+ */
90
+ function getUniqueOwners(items) {
91
+ const owners = /* @__PURE__ */ new Set();
92
+ for (const item of items) for (const owner of item.meta.owners ?? []) owners.add(owner);
93
+ return Array.from(owners).sort();
94
+ }
95
+ /**
96
+ * Get unique domains from a collection of items.
97
+ */
98
+ function getUniqueDomains(items) {
99
+ const domains = /* @__PURE__ */ new Set();
100
+ for (const item of items) domains.add(GroupingStrategies.byDomain(item));
101
+ return Array.from(domains).sort();
102
+ }
103
+ var GroupingStrategies;
104
+ var init_registry_utils = __esmMin(() => {
105
+ GroupingStrategies = {
106
+ byTag: (item) => item.meta.tags?.[0] ?? "untagged",
107
+ byAllTags: (item) => item.meta.tags?.length ? item.meta.tags : ["untagged"],
108
+ byOwner: (item) => item.meta.owners?.[0] ?? "unowned",
109
+ byDomain: (item) => {
110
+ return (item.meta.key ?? item.meta.key ?? "").split(".")[0] ?? "default";
111
+ },
112
+ byStability: (item) => item.meta.stability ?? "stable",
113
+ byUrlPath: (level) => (item) => {
114
+ if (!item.path) return "root";
115
+ return item.path.split("/").filter(Boolean).slice(0, level).join("/") || "root";
116
+ }
117
+ };
118
+ });
119
+
120
+ //#endregion
121
+ init_registry_utils();
122
+ export { GroupingStrategies, filterBy, getUniqueDomains, getUniqueOwners, getUniqueTags, groupBy, groupByMultiple, groupByToArray, init_registry_utils, registry_utils_exports };
@@ -0,0 +1,30 @@
1
+ import { OwnerShipMeta } from "./ownership.js";
2
+ import { GroupKeyFn, RegistryFilter } from "./registry-utils.js";
3
+ import { ContractSpecType } from "./types.js";
4
+
5
+ //#region src/registry.d.ts
6
+ interface AnySpecContract {
7
+ meta: OwnerShipMeta;
8
+ }
9
+ declare const keyOfSpecContract: (spec: AnySpecContract) => string;
10
+ /** In-memory registry for PresentationSpec. */
11
+ declare abstract class SpecContractRegistry<ContractType extends ContractSpecType, SpecContract extends AnySpecContract> {
12
+ protected readonly contractType: ContractType;
13
+ private items;
14
+ protected constructor(contractType: ContractType, items?: SpecContract[]);
15
+ register(p: SpecContract): this;
16
+ list(): SpecContract[];
17
+ get(key: string, version?: number): SpecContract | undefined;
18
+ /** Filter presentations by criteria. */
19
+ filter(criteria: RegistryFilter): SpecContract[];
20
+ /** List presentations with specific tag. */
21
+ listByTag(tag: string): SpecContract[];
22
+ /** List presentations by owner. */
23
+ listByOwner(owner: string): SpecContract[];
24
+ /** Group presentations by key function. */
25
+ groupBy(keyFn: GroupKeyFn<SpecContract>): Map<string, SpecContract[]>;
26
+ /** Get unique tags from all presentations. */
27
+ getUniqueTags(): string[];
28
+ }
29
+ //#endregion
30
+ export { AnySpecContract, SpecContractRegistry, keyOfSpecContract };
package/dist/registry.js CHANGED
@@ -1 +1,58 @@
1
- import{eventKey as e}from"./events.js";import{isEmitDeclRef as t}from"./spec.js";import{defaultDocRegistry as n,docId as r,registerDocBlocks as i}from"./docs/registry.js";function a(e,t){return`${e}.v${t}`}var o=class{specs=new Map;handlers=new Map;register(e){let t=a(e.meta.name,e.meta.version);if(this.specs.has(t))throw Error(`Duplicate spec ${t}`);return this.specs.set(t,e),this}bind(e,t){let n=a(e.meta.name,e.meta.version);if(!this.specs.has(n))throw Error(`Cannot bind; spec not found: ${n}`);if(this.handlers.has(n))throw Error(`Handler already bound for ${n}`);return this.handlers.set(n,t),this}getSpec(e,t){if(t!=null)return this.specs.get(a(e,t));let n,r=-1/0;for(let[t,i]of this.specs.entries())t.startsWith(`${e}.v`)&&i.meta.version>r&&(r=i.meta.version,n=i);return n}getHandler(e,t){let n=this.getSpec(e,t);if(n)return this.handlers.get(a(n.meta.name,n.meta.version))}listSpecs(){return[...this.specs.values()]}listBound(){let e=[];for(let[t,n]of this.specs.entries()){let r=this.handlers.get(t);r&&e.push({spec:n,handler:r})}return e}async execute(n,r,i,o){let s=this.getSpec(n,r);if(!s)throw Error(`Spec not found for ${n}${r?`.v${r}`:``}`);let c=await o.specVariantResolver?.resolve({name:s.meta.name,version:s.meta.version,kind:s.meta.kind},o)??s,l=a(c.meta.name,c.meta.version),u=this.handlers.get(l);if(!u){let e=a(s.meta.name,s.meta.version);u=this.handlers.get(e),l=e}if(!u)throw Error(`No handler bound for ${l}`);let d=c.io.input?.getZod().parse(i);if(o.decide){let[e,t]=c.meta.name.split(`.`),n=await o.decide({service:e,command:t,version:c.meta.version,actor:o.actor??`anonymous`,channel:o.channel,roles:o.roles,organizationId:o.organizationId,userId:o.userId,flags:[]});if(n.effect===`deny`)throw Error(`PolicyDenied: ${c.meta.name}.v${c.meta.version}`);if(n.rateLimit&&o.rateLimit){let e=n.rateLimit.key??`default`,t=n.rateLimit.rpm??60;await o.rateLimit(e,1,t)}}let f=new Map;if(c.sideEffects?.emits)for(let e of c.sideEffects.emits)t(e)?f.set(`${e.ref.name}.v${e.ref.version}`,e.ref.payload):f.set(`${e.name}.v${e.version}`,e.payload);let p=async(t,n,r)=>{let i=e(t,n),s=f.get(i);if(!s)throw Error(`UndeclaredEvent: ${i} not allowed by ${a(c.meta.name,c.meta.version)}`);let l=s.getZod().parse(r);await o.eventPublisher?.({name:t,version:n,payload:l,traceId:o.traceId})};o.appConfig&&(o.branding||=o.appConfig.branding,o.translation?o.translation.config||(o.translation={...o.translation,config:o.appConfig.translation}):o.translation={config:o.appConfig.translation});let m=o.telemetry,h=async(e,t)=>{if(!(!m||!e?.event))try{let n=e.properties?.(t)??{};await m.track(e.event.name,e.event.version??1,n,{tenantId:o.organizationId??void 0,organizationId:o.organizationId,userId:o.userId,actor:o.actor,channel:o.channel,metadata:o.traceId?{traceId:o.traceId}:void 0})}catch{}},g;try{g=await u(d,{...o,__emitGuard__:p})}catch(e){throw c.telemetry?.failure&&await h(c.telemetry.failure,{input:d??i,error:e}),e}c.telemetry?.success&&await h(c.telemetry.success,{input:d??i,output:g});let _=c.io.output;return _?.getZod?_.getZod().parse(g):g}};export{o as SpecRegistry,n as defaultDocRegistry,r as docId,a as opKey,i as registerDocBlocks};
1
+ import { filterBy, getUniqueTags, groupBy, init_registry_utils } from "./registry-utils.js";
2
+
3
+ //#region src/registry.ts
4
+ init_registry_utils();
5
+ const keyOfSpecContract = (spec) => `${spec.meta.key}.v${spec.meta.version}`;
6
+ /** In-memory registry for PresentationSpec. */
7
+ var SpecContractRegistry = class {
8
+ items = /* @__PURE__ */ new Map();
9
+ constructor(contractType, items) {
10
+ this.contractType = contractType;
11
+ if (items) items.forEach((p) => this.register(p));
12
+ }
13
+ register(p) {
14
+ const key = keyOfSpecContract(p);
15
+ if (this.items.has(key)) throw new Error(`Duplicate contract \`${this.contractType}\` ${key}`);
16
+ this.items.set(key, p);
17
+ return this;
18
+ }
19
+ list() {
20
+ return [...this.items.values()];
21
+ }
22
+ get(key, version) {
23
+ if (version != null) return this.items.get(`${key}.v${version}`);
24
+ let candidate;
25
+ let max = -Infinity;
26
+ for (const [k, p] of this.items.entries()) {
27
+ if (!k.startsWith(`${key}.v`)) continue;
28
+ if (p.meta.version > max) {
29
+ max = p.meta.version;
30
+ candidate = p;
31
+ }
32
+ }
33
+ return candidate;
34
+ }
35
+ /** Filter presentations by criteria. */
36
+ filter(criteria) {
37
+ return filterBy(this.list(), criteria);
38
+ }
39
+ /** List presentations with specific tag. */
40
+ listByTag(tag) {
41
+ return this.list().filter((p) => p.meta.tags?.includes(tag));
42
+ }
43
+ /** List presentations by owner. */
44
+ listByOwner(owner) {
45
+ return this.list().filter((p) => p.meta.owners?.includes(owner));
46
+ }
47
+ /** Group presentations by key function. */
48
+ groupBy(keyFn) {
49
+ return groupBy(this.list(), keyFn);
50
+ }
51
+ /** Get unique tags from all presentations. */
52
+ getUniqueTags() {
53
+ return getUniqueTags(this.list());
54
+ }
55
+ };
56
+
57
+ //#endregion
58
+ export { SpecContractRegistry, keyOfSpecContract };
@@ -0,0 +1,64 @@
1
+ import { Tag } from "./ownership.js";
2
+ import * as z$1 from "zod";
3
+
4
+ //#region src/resources.d.ts
5
+ interface ResourceMeta {
6
+ /** URI scheme, e.g. "content://doc/{id}" or "marketplace://offers/{city}/{tag}" */
7
+ uriTemplate: string;
8
+ /** Human title for discovery */
9
+ title: string;
10
+ /** Short description */
11
+ description?: string;
12
+ /** MIME type for resource body */
13
+ mimeType: string;
14
+ /** Tags for filtering/grouping */
15
+ tags?: Tag[];
16
+ }
17
+ interface ResourceTemplateSpec<I extends z$1.ZodType> {
18
+ meta: ResourceMeta;
19
+ /** Arguments to materialize the URI (zod validates input) */
20
+ input: I;
21
+ /**
22
+ * Resolve returns the resource body and a resolved URI.
23
+ * It MUST be read-only (no side effects).
24
+ */
25
+ resolve: (args: z$1.infer<I>, ctx: {
26
+ userId?: string | null;
27
+ orgId?: string | null;
28
+ locale?: string;
29
+ }) => Promise<{
30
+ uri: string;
31
+ mimeType?: string;
32
+ data: Uint8Array | string;
33
+ }>;
34
+ }
35
+ declare function defineResourceTemplate<I extends z$1.ZodType>(spec: ResourceTemplateSpec<I>): ResourceTemplateSpec<I>;
36
+ declare class ResourceRegistry {
37
+ private templates;
38
+ register<I extends z$1.ZodType>(tmpl: ResourceTemplateSpec<I>): this;
39
+ listTemplates(): ResourceTemplateSpec<any>[];
40
+ /** Try to match a concrete URI to a template by naive pattern substitution */
41
+ match(uri: string): {
42
+ tmpl: ResourceTemplateSpec<any>;
43
+ params: Record<string, string>;
44
+ } | undefined;
45
+ }
46
+ interface ResourceRefDescriptor<Many extends boolean> {
47
+ kind: 'resource_ref';
48
+ /** URI template, e.g. 'strit://spot/{id}' */
49
+ uriTemplate: string;
50
+ /** Variable name inside result payload to substitute into template; defaults to 'id' */
51
+ varName?: string;
52
+ /** Optional GraphQL type name to use when exposing over GraphQL (e.g., 'Spot') */
53
+ graphQLType: string;
54
+ /** Cardinality: when present and true, the handler returns an array of resources */
55
+ many: Many;
56
+ }
57
+ declare function resourceRef<Many extends boolean>(uriTemplate: string, opts: {
58
+ varName?: string;
59
+ graphQLType: string;
60
+ many: Many;
61
+ }): ResourceRefDescriptor<Many>;
62
+ declare function isResourceRef(x: unknown): x is ResourceRefDescriptor<boolean>;
63
+ //#endregion
64
+ export { ResourceMeta, ResourceRefDescriptor, ResourceRegistry, ResourceTemplateSpec, defineResourceTemplate, isResourceRef, resourceRef };
package/dist/resources.js CHANGED
@@ -1 +1,50 @@
1
- import"zod";function e(e){return e}var t=class{templates=[];register(e){return this.templates.push(e),this}listTemplates(){return[...this.templates]}match(e){for(let t of this.templates){let n=RegExp(`^`+t.meta.uriTemplate.replace(/\{[^}]+\}/g,`([^/]+)`)+`$`),r=e.match(n);if(!r)continue;let i=[...t.meta.uriTemplate.matchAll(/\{([^}]+)\}/g)].map(e=>e[1]),a={};return i.forEach((e,t)=>a[e]=decodeURIComponent(r[t+1])),{tmpl:t,params:a}}}};function n(e,t){return{kind:`resource_ref`,uriTemplate:e,varName:t.varName??`id`,graphQLType:t.graphQLType,many:t.many}}function r(e){let t=e;return!!t&&t.kind===`resource_ref`&&typeof t.uriTemplate==`string`}export{t as ResourceRegistry,e as defineResourceTemplate,r as isResourceRef,n as resourceRef};
1
+ import "zod";
2
+
3
+ //#region src/resources.ts
4
+ function defineResourceTemplate(spec) {
5
+ return spec;
6
+ }
7
+ var ResourceRegistry = class {
8
+ templates = [];
9
+ register(tmpl) {
10
+ this.templates.push(tmpl);
11
+ return this;
12
+ }
13
+ listTemplates() {
14
+ return [...this.templates];
15
+ }
16
+ /** Try to match a concrete URI to a template by naive pattern substitution */
17
+ match(uri) {
18
+ for (const tmpl of this.templates) {
19
+ const re = /* @__PURE__ */ new RegExp("^" + tmpl.meta.uriTemplate.replace(/\{[^}]+\}/g, "([^/]+)") + "$");
20
+ const m = uri.match(re);
21
+ if (!m) continue;
22
+ const names = [...tmpl.meta.uriTemplate.matchAll(/\{([^}]+)\}/g)].map((x) => x[1]);
23
+ const params = {};
24
+ names.forEach((n, i) => {
25
+ const val = m[i + 1];
26
+ if (n && val) params[n] = decodeURIComponent(val);
27
+ });
28
+ return {
29
+ tmpl,
30
+ params
31
+ };
32
+ }
33
+ }
34
+ };
35
+ function resourceRef(uriTemplate, opts) {
36
+ return {
37
+ kind: "resource_ref",
38
+ uriTemplate,
39
+ varName: opts.varName ?? "id",
40
+ graphQLType: opts.graphQLType,
41
+ many: opts.many
42
+ };
43
+ }
44
+ function isResourceRef(x) {
45
+ const o = x;
46
+ return !!o && o.kind === "resource_ref" && typeof o.uriTemplate === "string";
47
+ }
48
+
49
+ //#endregion
50
+ export { ResourceRegistry, defineResourceTemplate, isResourceRef, resourceRef };
@@ -0,0 +1,54 @@
1
+ import { AnySchemaModel } from "@lssm/lib.schema";
2
+
3
+ //#region src/schema-to-markdown.d.ts
4
+
5
+ /**
6
+ * Options for schema-to-markdown generation
7
+ */
8
+ interface SchemaMarkdownOptions {
9
+ /** Title for the markdown section */
10
+ title?: string;
11
+ /** Description to include below the title */
12
+ description?: string;
13
+ /** Output format: table for lists, list for simple items, detail for single objects */
14
+ format?: 'table' | 'list' | 'detail' | 'auto';
15
+ /** Maximum number of items to render (for arrays) */
16
+ maxItems?: number;
17
+ /** Only include these fields (if not specified, all fields are included) */
18
+ includeFields?: string[];
19
+ /** Exclude these fields from output */
20
+ excludeFields?: string[];
21
+ /** Custom field labels (field name -> display label) */
22
+ fieldLabels?: Record<string, string>;
23
+ /** Fields to use for summary in list format */
24
+ summaryFields?: string[];
25
+ /** Nesting depth for nested schemas (default: 2) */
26
+ maxDepth?: number;
27
+ }
28
+ /**
29
+ * Generate markdown from a SchemaModel and data.
30
+ * Automatically detects array vs object data and formats accordingly.
31
+ */
32
+ declare function schemaToMarkdown(schema: AnySchemaModel, data: unknown, options?: SchemaMarkdownOptions): string;
33
+ /**
34
+ * Generate a markdown table from array data using schema fields as columns.
35
+ */
36
+ declare function schemaToMarkdownTable(schema: AnySchemaModel, items: unknown[], options?: SchemaMarkdownOptions): string;
37
+ /**
38
+ * Generate a markdown list from array data.
39
+ * Uses summaryFields to create concise list items.
40
+ */
41
+ declare function schemaToMarkdownList(schema: AnySchemaModel, items: unknown[], options?: SchemaMarkdownOptions): string;
42
+ /**
43
+ * Generate a markdown detail view (key-value pairs) from object data.
44
+ */
45
+ declare function schemaToMarkdownDetail(schema: AnySchemaModel, item: unknown, options?: SchemaMarkdownOptions): string;
46
+ /**
47
+ * Generate markdown summary statistics for numeric fields in array data.
48
+ */
49
+ declare function schemaToMarkdownSummary(items: unknown[], options?: {
50
+ numericFields?: string[];
51
+ countByField?: string;
52
+ }): string;
53
+ //#endregion
54
+ export { SchemaMarkdownOptions, schemaToMarkdown, schemaToMarkdownDetail, schemaToMarkdownList, schemaToMarkdownSummary, schemaToMarkdownTable };