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

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 (813) hide show
  1. package/dist/app-config/app-config.feature.d.ts +1 -2
  2. package/dist/app-config/app-config.feature.js +1 -2
  3. package/dist/app-config/branding.d.ts +1 -2
  4. package/dist/app-config/contracts.d.ts +51 -52
  5. package/dist/app-config/contracts.js +1 -2
  6. package/dist/app-config/docs/app-config.docblock.d.ts +1 -2
  7. package/dist/app-config/docs/app-config.docblock.js +1 -2
  8. package/dist/app-config/events.d.ts +28 -29
  9. package/dist/app-config/events.js +1 -2
  10. package/dist/app-config/lifecycle-contracts.d.ts +81 -82
  11. package/dist/app-config/lifecycle-contracts.js +1 -2
  12. package/dist/app-config/lifecycle.d.ts +1 -2
  13. package/dist/app-config/runtime.d.ts +1 -2
  14. package/dist/app-config/runtime.js +1 -2
  15. package/dist/app-config/spec.d.ts +1 -2
  16. package/dist/app-config/spec.js +1 -2
  17. package/dist/app-config/validation.d.ts +1 -2
  18. package/dist/app-config/validation.js +1 -2
  19. package/dist/capabilities/docs/capabilities.docblock.d.ts +1 -2
  20. package/dist/capabilities/docs/capabilities.docblock.js +1 -2
  21. package/dist/capabilities/openbanking.d.ts +1 -2
  22. package/dist/capabilities/openbanking.js +1 -2
  23. package/dist/capabilities.d.ts +1 -2
  24. package/dist/capabilities.js +1 -2
  25. package/dist/client/react/drivers/rn-reusables.d.ts +1 -2
  26. package/dist/client/react/drivers/rn-reusables.js +1 -2
  27. package/dist/client/react/drivers/shadcn.d.ts +1 -2
  28. package/dist/client/react/drivers/shadcn.js +1 -2
  29. package/dist/client/react/feature-render.d.ts +1 -2
  30. package/dist/client/react/feature-render.js +1 -2
  31. package/dist/client/react/form-render.d.ts +1 -2
  32. package/dist/client/react/form-render.js +1 -2
  33. package/dist/contract-registry/schemas.d.ts +1 -2
  34. package/dist/contract-registry/schemas.js +1 -2
  35. package/dist/contract-registry/types.d.ts +1 -2
  36. package/dist/contracts-adapter-hydration.d.ts +1 -2
  37. package/dist/contracts-adapter-hydration.js +3 -4
  38. package/dist/contracts-adapter-input.d.ts +1 -2
  39. package/dist/contracts-adapter-input.js +1 -2
  40. package/dist/data-views/docs/data-views.docblock.d.ts +1 -2
  41. package/dist/data-views/docs/data-views.docblock.js +1 -2
  42. package/dist/data-views/query-generator.d.ts +3 -4
  43. package/dist/data-views/query-generator.js +2 -3
  44. package/dist/data-views/runtime.d.ts +3 -4
  45. package/dist/data-views/runtime.js +3 -4
  46. package/dist/data-views.d.ts +1 -2
  47. package/dist/data-views.js +1 -2
  48. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +1 -2
  49. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +1 -2
  50. package/dist/docs/meta.docs.d.ts +1 -2
  51. package/dist/docs/meta.docs.js +1 -2
  52. package/dist/docs/presentations.d.ts +1 -2
  53. package/dist/docs/presentations.js +1 -2
  54. package/dist/docs/registry.d.ts +1 -2
  55. package/dist/docs/registry.js +1 -2
  56. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +1 -2
  57. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +1 -2
  58. package/dist/docs/tech/contracts/README.docblock.d.ts +1 -2
  59. package/dist/docs/tech/contracts/README.docblock.js +1 -2
  60. package/dist/docs/tech/contracts/create-subscription.docblock.d.ts +1 -2
  61. package/dist/docs/tech/contracts/create-subscription.docblock.js +1 -2
  62. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts +1 -2
  63. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +1 -2
  64. package/dist/docs/tech/contracts/migrations.docblock.d.ts +1 -2
  65. package/dist/docs/tech/contracts/migrations.docblock.js +1 -2
  66. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +1 -2
  67. package/dist/docs/tech/contracts/openapi-export.docblock.js +1 -2
  68. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +1 -2
  69. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +1 -2
  70. package/dist/docs/tech/contracts/overlays.docblock.d.ts +1 -2
  71. package/dist/docs/tech/contracts/overlays.docblock.js +1 -2
  72. package/dist/docs/tech/contracts/tests.docblock.d.ts +1 -2
  73. package/dist/docs/tech/contracts/tests.docblock.js +1 -2
  74. package/dist/docs/tech/contracts/themes.docblock.d.ts +1 -2
  75. package/dist/docs/tech/contracts/themes.docblock.js +1 -2
  76. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +1 -2
  77. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +1 -2
  78. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +1 -2
  79. package/dist/docs/tech/lifecycle-stage-system.docblock.js +1 -2
  80. package/dist/docs/tech/llm/llm-integration.docblock.d.ts +1 -2
  81. package/dist/docs/tech/llm/llm-integration.docblock.js +1 -2
  82. package/dist/docs/tech/mcp-endpoints.docblock.d.ts +1 -2
  83. package/dist/docs/tech/mcp-endpoints.docblock.js +1 -2
  84. package/dist/docs/tech/presentation-runtime.docblock.d.ts +1 -2
  85. package/dist/docs/tech/presentation-runtime.docblock.js +1 -2
  86. package/dist/docs/tech/schema/README.docblock.d.ts +1 -2
  87. package/dist/docs/tech/schema/README.docblock.js +1 -2
  88. package/dist/docs/tech/studio/learning-events.docblock.d.ts +1 -2
  89. package/dist/docs/tech/studio/learning-events.docblock.js +1 -2
  90. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +1 -2
  91. package/dist/docs/tech/studio/learning-journeys.docblock.js +1 -2
  92. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +1 -2
  93. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +1 -2
  94. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +1 -2
  95. package/dist/docs/tech/studio/project-access-teams.docblock.js +1 -2
  96. package/dist/docs/tech/studio/project-routing.docblock.d.ts +1 -2
  97. package/dist/docs/tech/studio/project-routing.docblock.js +1 -2
  98. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +1 -2
  99. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +1 -2
  100. package/dist/docs/tech/studio/team-invitations.docblock.d.ts +1 -2
  101. package/dist/docs/tech/studio/team-invitations.docblock.js +1 -2
  102. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +1 -2
  103. package/dist/docs/tech/studio/workspace-ops.docblock.js +1 -2
  104. package/dist/docs/tech/studio/workspaces.docblock.d.ts +1 -2
  105. package/dist/docs/tech/studio/workspaces.docblock.js +1 -2
  106. package/dist/docs/tech/telemetry-ingest.docblock.d.ts +1 -2
  107. package/dist/docs/tech/telemetry-ingest.docblock.js +1 -2
  108. package/dist/docs/tech/templates/runtime.docblock.d.ts +1 -2
  109. package/dist/docs/tech/templates/runtime.docblock.js +1 -2
  110. package/dist/docs/tech/vscode-extension.docblock.d.ts +1 -2
  111. package/dist/docs/tech/vscode-extension.docblock.js +1 -2
  112. package/dist/docs/tech/workflows/overview.docblock.d.ts +1 -2
  113. package/dist/docs/tech/workflows/overview.docblock.js +1 -2
  114. package/dist/docs/tech-contracts.docs.d.ts +1 -2
  115. package/dist/docs/tech-contracts.docs.js +1 -2
  116. package/dist/docs/types.d.ts +1 -2
  117. package/dist/events.d.ts +1 -2
  118. package/dist/events.js +1 -2
  119. package/dist/experiments/docs/experiments.docblock.d.ts +1 -2
  120. package/dist/experiments/docs/experiments.docblock.js +1 -2
  121. package/dist/experiments/evaluator.d.ts +1 -2
  122. package/dist/experiments/evaluator.js +1 -2
  123. package/dist/experiments/spec-resolver.d.ts +1 -2
  124. package/dist/experiments/spec.d.ts +1 -2
  125. package/dist/experiments/spec.js +1 -2
  126. package/dist/features.d.ts +1 -2
  127. package/dist/features.js +1 -2
  128. package/dist/forms/docs/forms.docblock.d.ts +1 -2
  129. package/dist/forms/docs/forms.docblock.js +1 -2
  130. package/dist/forms.d.ts +5 -6
  131. package/dist/forms.js +4 -4
  132. package/dist/install.d.ts +1 -2
  133. package/dist/install.js +1 -2
  134. package/dist/integrations/binding.d.ts +1 -2
  135. package/dist/integrations/connection.d.ts +1 -2
  136. package/dist/integrations/contracts.d.ts +106 -106
  137. package/dist/integrations/contracts.js +1 -2
  138. package/dist/integrations/docs/integrations.docblock.d.ts +1 -2
  139. package/dist/integrations/docs/integrations.docblock.js +1 -2
  140. package/dist/integrations/health.d.ts +1 -2
  141. package/dist/integrations/health.js +1 -2
  142. package/dist/integrations/openbanking/contracts/accounts.d.ts +70 -70
  143. package/dist/integrations/openbanking/contracts/accounts.js +1 -2
  144. package/dist/integrations/openbanking/contracts/balances.d.ts +38 -38
  145. package/dist/integrations/openbanking/contracts/balances.js +1 -2
  146. package/dist/integrations/openbanking/contracts/index.d.ts +1 -2
  147. package/dist/integrations/openbanking/contracts/index.js +1 -2
  148. package/dist/integrations/openbanking/contracts/transactions.d.ts +52 -52
  149. package/dist/integrations/openbanking/contracts/transactions.js +1 -2
  150. package/dist/integrations/openbanking/guards.d.ts +1 -2
  151. package/dist/integrations/openbanking/guards.js +2 -2
  152. package/dist/integrations/openbanking/models.d.ts +56 -57
  153. package/dist/integrations/openbanking/models.js +1 -2
  154. package/dist/integrations/openbanking/openbanking.feature.d.ts +1 -2
  155. package/dist/integrations/openbanking/openbanking.feature.js +1 -2
  156. package/dist/integrations/openbanking/telemetry.d.ts +1 -2
  157. package/dist/integrations/openbanking/telemetry.js +1 -2
  158. package/dist/integrations/providers/calendar.d.ts +1 -2
  159. package/dist/integrations/providers/elevenlabs.d.ts +1 -2
  160. package/dist/integrations/providers/elevenlabs.js +1 -2
  161. package/dist/integrations/providers/email.d.ts +1 -2
  162. package/dist/integrations/providers/embedding.d.ts +1 -2
  163. package/dist/integrations/providers/gcs-storage.d.ts +1 -2
  164. package/dist/integrations/providers/gcs-storage.js +1 -2
  165. package/dist/integrations/providers/gmail.d.ts +1 -2
  166. package/dist/integrations/providers/gmail.js +1 -2
  167. package/dist/integrations/providers/google-calendar.d.ts +1 -2
  168. package/dist/integrations/providers/google-calendar.js +1 -2
  169. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +1 -2
  170. package/dist/integrations/providers/impls/elevenlabs-voice.js +1 -2
  171. package/dist/integrations/providers/impls/gcs-storage.d.ts +1 -2
  172. package/dist/integrations/providers/impls/gcs-storage.js +1 -2
  173. package/dist/integrations/providers/impls/gmail-inbound.d.ts +1 -2
  174. package/dist/integrations/providers/impls/gmail-inbound.js +2 -3
  175. package/dist/integrations/providers/impls/gmail-outbound.d.ts +1 -2
  176. package/dist/integrations/providers/impls/gmail-outbound.js +5 -6
  177. package/dist/integrations/providers/impls/google-calendar.d.ts +1 -2
  178. package/dist/integrations/providers/impls/google-calendar.js +1 -2
  179. package/dist/integrations/providers/impls/mistral-embedding.d.ts +1 -2
  180. package/dist/integrations/providers/impls/mistral-embedding.js +1 -2
  181. package/dist/integrations/providers/impls/mistral-llm.d.ts +2 -3
  182. package/dist/integrations/providers/impls/mistral-llm.js +2 -3
  183. package/dist/integrations/providers/impls/postmark-email.d.ts +1 -2
  184. package/dist/integrations/providers/impls/postmark-email.js +1 -2
  185. package/dist/integrations/providers/impls/powens-client.d.ts +1 -2
  186. package/dist/integrations/providers/impls/powens-client.js +1 -2
  187. package/dist/integrations/providers/impls/powens-openbanking.d.ts +2 -3
  188. package/dist/integrations/providers/impls/powens-openbanking.js +1 -2
  189. package/dist/integrations/providers/impls/provider-factory.d.ts +1 -2
  190. package/dist/integrations/providers/impls/provider-factory.js +5 -3
  191. package/dist/integrations/providers/impls/qdrant-vector.d.ts +1 -2
  192. package/dist/integrations/providers/impls/qdrant-vector.js +3 -4
  193. package/dist/integrations/providers/impls/stripe-payments.d.ts +1 -2
  194. package/dist/integrations/providers/impls/stripe-payments.js +1 -2
  195. package/dist/integrations/providers/impls/twilio-sms.d.ts +1 -2
  196. package/dist/integrations/providers/impls/twilio-sms.js +1 -2
  197. package/dist/integrations/providers/llm.d.ts +1 -2
  198. package/dist/integrations/providers/mistral.d.ts +1 -2
  199. package/dist/integrations/providers/mistral.js +1 -2
  200. package/dist/integrations/providers/openbanking.d.ts +1 -2
  201. package/dist/integrations/providers/payments.d.ts +1 -2
  202. package/dist/integrations/providers/postmark.d.ts +1 -2
  203. package/dist/integrations/providers/postmark.js +1 -2
  204. package/dist/integrations/providers/powens.d.ts +1 -2
  205. package/dist/integrations/providers/powens.js +1 -2
  206. package/dist/integrations/providers/qdrant.d.ts +1 -2
  207. package/dist/integrations/providers/qdrant.js +1 -2
  208. package/dist/integrations/providers/registry.d.ts +1 -2
  209. package/dist/integrations/providers/registry.js +1 -2
  210. package/dist/integrations/providers/sms.d.ts +1 -2
  211. package/dist/integrations/providers/storage.d.ts +1 -2
  212. package/dist/integrations/providers/stripe.d.ts +1 -2
  213. package/dist/integrations/providers/stripe.js +1 -2
  214. package/dist/integrations/providers/twilio-sms.d.ts +1 -2
  215. package/dist/integrations/providers/twilio-sms.js +1 -2
  216. package/dist/integrations/providers/vector-store.d.ts +1 -2
  217. package/dist/integrations/providers/voice.d.ts +1 -2
  218. package/dist/integrations/runtime.d.ts +2 -3
  219. package/dist/integrations/runtime.js +2 -3
  220. package/dist/integrations/secrets/aws-secret-manager.d.ts +1 -2
  221. package/dist/integrations/secrets/aws-secret-manager.js +1 -2
  222. package/dist/integrations/secrets/env-secret-provider.d.ts +1 -2
  223. package/dist/integrations/secrets/env-secret-provider.js +1 -2
  224. package/dist/integrations/secrets/gcp-secret-manager.d.ts +1 -2
  225. package/dist/integrations/secrets/gcp-secret-manager.js +1 -2
  226. package/dist/integrations/secrets/manager.d.ts +1 -2
  227. package/dist/integrations/secrets/manager.js +2 -3
  228. package/dist/integrations/secrets/provider.d.ts +1 -2
  229. package/dist/integrations/secrets/provider.js +1 -2
  230. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +1 -2
  231. package/dist/integrations/secrets/scaleway-secret-manager.js +1 -2
  232. package/dist/integrations/spec.d.ts +1 -2
  233. package/dist/integrations/spec.js +1 -2
  234. package/dist/jobs/define-job.d.ts +1 -2
  235. package/dist/jobs/define-job.js +1 -2
  236. package/dist/jobs/gcp-cloud-tasks.d.ts +1 -2
  237. package/dist/jobs/gcp-cloud-tasks.js +1 -2
  238. package/dist/jobs/gcp-pubsub.d.ts +1 -2
  239. package/dist/jobs/gcp-pubsub.js +1 -2
  240. package/dist/jobs/handlers/gmail-sync-handler.d.ts +2 -3
  241. package/dist/jobs/handlers/gmail-sync-handler.js +1 -2
  242. package/dist/jobs/handlers/index.d.ts +1 -2
  243. package/dist/jobs/handlers/index.js +1 -2
  244. package/dist/jobs/handlers/ping-handler.d.ts +1 -2
  245. package/dist/jobs/handlers/ping-handler.js +1 -2
  246. package/dist/jobs/handlers/storage-document-handler.d.ts +1 -2
  247. package/dist/jobs/handlers/storage-document-handler.js +1 -2
  248. package/dist/jobs/memory-queue.d.ts +1 -2
  249. package/dist/jobs/memory-queue.js +1 -2
  250. package/dist/jobs/queue.d.ts +1 -2
  251. package/dist/jobs/queue.js +1 -2
  252. package/dist/jobs/scaleway-sqs-queue.d.ts +1 -2
  253. package/dist/jobs/scaleway-sqs-queue.js +1 -2
  254. package/dist/jsonschema.d.ts +4 -5
  255. package/dist/jsonschema.js +2 -3
  256. package/dist/knowledge/binding.d.ts +1 -2
  257. package/dist/knowledge/contracts.d.ts +70 -70
  258. package/dist/knowledge/contracts.js +1 -2
  259. package/dist/knowledge/docs/knowledge.docblock.d.ts +1 -2
  260. package/dist/knowledge/docs/knowledge.docblock.js +1 -2
  261. package/dist/knowledge/ingestion/document-processor.d.ts +1 -2
  262. package/dist/knowledge/ingestion/document-processor.js +1 -2
  263. package/dist/knowledge/ingestion/embedding-service.d.ts +1 -2
  264. package/dist/knowledge/ingestion/embedding-service.js +1 -2
  265. package/dist/knowledge/ingestion/gmail-adapter.d.ts +1 -2
  266. package/dist/knowledge/ingestion/gmail-adapter.js +1 -2
  267. package/dist/knowledge/ingestion/storage-adapter.d.ts +1 -2
  268. package/dist/knowledge/ingestion/storage-adapter.js +1 -2
  269. package/dist/knowledge/ingestion/vector-indexer.d.ts +1 -2
  270. package/dist/knowledge/ingestion/vector-indexer.js +1 -2
  271. package/dist/knowledge/query/service.d.ts +1 -2
  272. package/dist/knowledge/query/service.js +1 -2
  273. package/dist/knowledge/runtime.d.ts +1 -2
  274. package/dist/knowledge/runtime.js +1 -2
  275. package/dist/knowledge/source.d.ts +1 -2
  276. package/dist/knowledge/spaces/email-threads.d.ts +1 -2
  277. package/dist/knowledge/spaces/email-threads.js +1 -2
  278. package/dist/knowledge/spaces/financial-docs.d.ts +1 -2
  279. package/dist/knowledge/spaces/financial-docs.js +1 -2
  280. package/dist/knowledge/spaces/financial-overview.d.ts +1 -2
  281. package/dist/knowledge/spaces/financial-overview.js +1 -2
  282. package/dist/knowledge/spaces/product-canon.d.ts +1 -2
  283. package/dist/knowledge/spaces/product-canon.js +1 -2
  284. package/dist/knowledge/spaces/support-faq.d.ts +1 -2
  285. package/dist/knowledge/spaces/support-faq.js +1 -2
  286. package/dist/knowledge/spaces/uploaded-docs.d.ts +1 -2
  287. package/dist/knowledge/spaces/uploaded-docs.js +1 -2
  288. package/dist/knowledge/spec.d.ts +1 -2
  289. package/dist/knowledge/spec.js +1 -2
  290. package/dist/llm/exporters.d.ts +1 -2
  291. package/dist/llm/exporters.js +1 -2
  292. package/dist/llm/prompts.d.ts +1 -2
  293. package/dist/llm/prompts.js +1 -2
  294. package/dist/llm/types.d.ts +1 -2
  295. package/dist/markdown.d.ts +2 -3
  296. package/dist/markdown.js +2 -3
  297. package/dist/migrations.d.ts +1 -2
  298. package/dist/migrations.js +1 -2
  299. package/dist/onboarding-base.d.ts +30 -31
  300. package/dist/onboarding-base.js +1 -2
  301. package/dist/openapi.d.ts +1 -2
  302. package/dist/openapi.js +1 -2
  303. package/dist/openbanking/docs/openbanking.docblock.d.ts +1 -2
  304. package/dist/openbanking/docs/openbanking.docblock.js +1 -2
  305. package/dist/ownership.d.ts +3 -2
  306. package/dist/ownership.js +2 -2
  307. package/dist/policy/docs/policy.docblock.d.ts +1 -2
  308. package/dist/policy/docs/policy.docblock.js +1 -2
  309. package/dist/policy/engine.d.ts +1 -2
  310. package/dist/policy/engine.js +1 -2
  311. package/dist/policy/opa-adapter.d.ts +1 -2
  312. package/dist/policy/opa-adapter.js +1 -2
  313. package/dist/policy/spec.d.ts +1 -2
  314. package/dist/policy/spec.js +1 -2
  315. package/dist/presentations/docs/presentations-conventions.docblock.d.ts +1 -2
  316. package/dist/presentations/docs/presentations-conventions.docblock.js +1 -2
  317. package/dist/presentations.backcompat.d.ts +1 -2
  318. package/dist/presentations.backcompat.js +1 -2
  319. package/dist/presentations.d.ts +4 -5
  320. package/dist/presentations.js +1 -2
  321. package/dist/presentations.v2.d.ts +1 -2
  322. package/dist/presentations.v2.js +6 -4
  323. package/dist/prompt.d.ts +1 -2
  324. package/dist/prompt.js +1 -2
  325. package/dist/promptRegistry.d.ts +3 -4
  326. package/dist/promptRegistry.js +3 -4
  327. package/dist/regenerator/adapters.d.ts +1 -2
  328. package/dist/regenerator/docs/regenerator.docblock.d.ts +1 -2
  329. package/dist/regenerator/docs/regenerator.docblock.js +1 -2
  330. package/dist/regenerator/executor.d.ts +1 -2
  331. package/dist/regenerator/executor.js +1 -2
  332. package/dist/regenerator/service.d.ts +1 -2
  333. package/dist/regenerator/service.js +1 -2
  334. package/dist/regenerator/sinks.d.ts +1 -2
  335. package/dist/regenerator/sinks.js +1 -2
  336. package/dist/regenerator/types.d.ts +1 -2
  337. package/dist/regenerator/utils.d.ts +1 -2
  338. package/dist/regenerator/utils.js +1 -2
  339. package/dist/registry.d.ts +2 -3
  340. package/dist/registry.js +2 -2
  341. package/dist/resources.d.ts +1 -2
  342. package/dist/resources.js +5 -3
  343. package/dist/schema/dist/index.js +1 -2
  344. package/dist/schema-to-markdown.d.ts +2 -3
  345. package/dist/schema-to-markdown.js +2 -3
  346. package/dist/server/graphql-pothos.d.ts +1 -2
  347. package/dist/server/graphql-pothos.js +1 -3
  348. package/dist/server/mcp/createMcpServer.d.ts +1 -2
  349. package/dist/server/mcp/createMcpServer.js +1 -2
  350. package/dist/server/mcp/mcpTypes.d.ts +1 -2
  351. package/dist/server/mcp/registerPresentations.d.ts +1 -2
  352. package/dist/server/mcp/registerPresentations.js +1 -2
  353. package/dist/server/mcp/registerPrompts.d.ts +1 -2
  354. package/dist/server/mcp/registerPrompts.js +1 -2
  355. package/dist/server/mcp/registerResources.d.ts +1 -2
  356. package/dist/server/mcp/registerResources.js +1 -2
  357. package/dist/server/mcp/registerTools.d.ts +1 -2
  358. package/dist/server/mcp/registerTools.js +1 -2
  359. package/dist/server/rest-elysia.d.ts +2 -3
  360. package/dist/server/rest-elysia.js +1 -2
  361. package/dist/server/rest-express.d.ts +1 -2
  362. package/dist/server/rest-express.js +1 -5
  363. package/dist/server/rest-generic.d.ts +2 -3
  364. package/dist/server/rest-generic.js +1 -3
  365. package/dist/server/rest-next-app.d.ts +1 -2
  366. package/dist/server/rest-next-app.js +1 -2
  367. package/dist/server/rest-next-mcp.d.ts +1 -2
  368. package/dist/server/rest-next-mcp.js +2 -3
  369. package/dist/server/rest-next-pages.d.ts +1 -2
  370. package/dist/server/rest-next-pages.js +1 -5
  371. package/dist/spec.d.ts +1 -2
  372. package/dist/spec.js +1 -2
  373. package/dist/telemetry/anomaly.d.ts +1 -2
  374. package/dist/telemetry/anomaly.js +1 -2
  375. package/dist/telemetry/docs/telemetry.docblock.d.ts +1 -2
  376. package/dist/telemetry/docs/telemetry.docblock.js +1 -2
  377. package/dist/telemetry/spec.d.ts +1 -2
  378. package/dist/telemetry/spec.js +1 -2
  379. package/dist/telemetry/tracker.d.ts +1 -2
  380. package/dist/telemetry/tracker.js +1 -2
  381. package/dist/tests/runner.d.ts +1 -2
  382. package/dist/tests/runner.js +1 -2
  383. package/dist/tests/spec.d.ts +1 -2
  384. package/dist/tests/spec.js +1 -2
  385. package/dist/themes.d.ts +1 -2
  386. package/dist/themes.js +1 -2
  387. package/dist/translations/catalog.d.ts +1 -2
  388. package/dist/translations/tenant.d.ts +1 -2
  389. package/dist/types.d.ts +1 -2
  390. package/dist/workflow/adapters/db-adapter.d.ts +1 -2
  391. package/dist/workflow/adapters/db-adapter.js +1 -2
  392. package/dist/workflow/adapters/file-adapter.d.ts +1 -2
  393. package/dist/workflow/adapters/file-adapter.js +1 -2
  394. package/dist/workflow/adapters/memory-store.d.ts +1 -2
  395. package/dist/workflow/adapters/memory-store.js +1 -2
  396. package/dist/workflow/expression.d.ts +1 -2
  397. package/dist/workflow/expression.js +4 -4
  398. package/dist/workflow/runner.d.ts +1 -2
  399. package/dist/workflow/runner.js +1 -2
  400. package/dist/workflow/sla-monitor.d.ts +1 -2
  401. package/dist/workflow/sla-monitor.js +1 -2
  402. package/dist/workflow/spec.d.ts +1 -2
  403. package/dist/workflow/spec.js +1 -2
  404. package/dist/workflow/state.d.ts +1 -2
  405. package/dist/workflow/validation.d.ts +1 -2
  406. package/dist/workflow/validation.js +2 -2
  407. package/package.json +14 -8
  408. package/dist/app-config/app-config.feature.d.ts.map +0 -1
  409. package/dist/app-config/app-config.feature.js.map +0 -1
  410. package/dist/app-config/branding.d.ts.map +0 -1
  411. package/dist/app-config/contracts.d.ts.map +0 -1
  412. package/dist/app-config/contracts.js.map +0 -1
  413. package/dist/app-config/docs/app-config.docblock.d.ts.map +0 -1
  414. package/dist/app-config/docs/app-config.docblock.js.map +0 -1
  415. package/dist/app-config/events.d.ts.map +0 -1
  416. package/dist/app-config/events.js.map +0 -1
  417. package/dist/app-config/lifecycle-contracts.d.ts.map +0 -1
  418. package/dist/app-config/lifecycle-contracts.js.map +0 -1
  419. package/dist/app-config/lifecycle.d.ts.map +0 -1
  420. package/dist/app-config/runtime.d.ts.map +0 -1
  421. package/dist/app-config/runtime.js.map +0 -1
  422. package/dist/app-config/spec.d.ts.map +0 -1
  423. package/dist/app-config/spec.js.map +0 -1
  424. package/dist/app-config/validation.d.ts.map +0 -1
  425. package/dist/app-config/validation.js.map +0 -1
  426. package/dist/capabilities/docs/capabilities.docblock.d.ts.map +0 -1
  427. package/dist/capabilities/docs/capabilities.docblock.js.map +0 -1
  428. package/dist/capabilities/openbanking.d.ts.map +0 -1
  429. package/dist/capabilities/openbanking.js.map +0 -1
  430. package/dist/capabilities.d.ts.map +0 -1
  431. package/dist/capabilities.js.map +0 -1
  432. package/dist/client/react/drivers/rn-reusables.d.ts.map +0 -1
  433. package/dist/client/react/drivers/rn-reusables.js.map +0 -1
  434. package/dist/client/react/drivers/shadcn.d.ts.map +0 -1
  435. package/dist/client/react/drivers/shadcn.js.map +0 -1
  436. package/dist/client/react/feature-render.d.ts.map +0 -1
  437. package/dist/client/react/feature-render.js.map +0 -1
  438. package/dist/client/react/form-render.d.ts.map +0 -1
  439. package/dist/client/react/form-render.js.map +0 -1
  440. package/dist/contract-registry/schemas.d.ts.map +0 -1
  441. package/dist/contract-registry/schemas.js.map +0 -1
  442. package/dist/contract-registry/types.d.ts.map +0 -1
  443. package/dist/contracts-adapter-hydration.d.ts.map +0 -1
  444. package/dist/contracts-adapter-hydration.js.map +0 -1
  445. package/dist/contracts-adapter-input.d.ts.map +0 -1
  446. package/dist/contracts-adapter-input.js.map +0 -1
  447. package/dist/data-views/docs/data-views.docblock.d.ts.map +0 -1
  448. package/dist/data-views/docs/data-views.docblock.js.map +0 -1
  449. package/dist/data-views/query-generator.d.ts.map +0 -1
  450. package/dist/data-views/query-generator.js.map +0 -1
  451. package/dist/data-views/runtime.d.ts.map +0 -1
  452. package/dist/data-views/runtime.js.map +0 -1
  453. package/dist/data-views.d.ts.map +0 -1
  454. package/dist/data-views.js.map +0 -1
  455. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts.map +0 -1
  456. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +0 -1
  457. package/dist/docs/meta.docs.d.ts.map +0 -1
  458. package/dist/docs/meta.docs.js.map +0 -1
  459. package/dist/docs/presentations.d.ts.map +0 -1
  460. package/dist/docs/presentations.js.map +0 -1
  461. package/dist/docs/registry.d.ts.map +0 -1
  462. package/dist/docs/registry.js.map +0 -1
  463. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts.map +0 -1
  464. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +0 -1
  465. package/dist/docs/tech/contracts/README.docblock.d.ts.map +0 -1
  466. package/dist/docs/tech/contracts/README.docblock.js.map +0 -1
  467. package/dist/docs/tech/contracts/create-subscription.docblock.d.ts.map +0 -1
  468. package/dist/docs/tech/contracts/create-subscription.docblock.js.map +0 -1
  469. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts.map +0 -1
  470. package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js.map +0 -1
  471. package/dist/docs/tech/contracts/migrations.docblock.d.ts.map +0 -1
  472. package/dist/docs/tech/contracts/migrations.docblock.js.map +0 -1
  473. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts.map +0 -1
  474. package/dist/docs/tech/contracts/openapi-export.docblock.js.map +0 -1
  475. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts.map +0 -1
  476. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js.map +0 -1
  477. package/dist/docs/tech/contracts/overlays.docblock.d.ts.map +0 -1
  478. package/dist/docs/tech/contracts/overlays.docblock.js.map +0 -1
  479. package/dist/docs/tech/contracts/tests.docblock.d.ts.map +0 -1
  480. package/dist/docs/tech/contracts/tests.docblock.js.map +0 -1
  481. package/dist/docs/tech/contracts/themes.docblock.d.ts.map +0 -1
  482. package/dist/docs/tech/contracts/themes.docblock.js.map +0 -1
  483. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts.map +0 -1
  484. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js.map +0 -1
  485. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts.map +0 -1
  486. package/dist/docs/tech/lifecycle-stage-system.docblock.js.map +0 -1
  487. package/dist/docs/tech/llm/llm-integration.docblock.d.ts.map +0 -1
  488. package/dist/docs/tech/llm/llm-integration.docblock.js.map +0 -1
  489. package/dist/docs/tech/mcp-endpoints.docblock.d.ts.map +0 -1
  490. package/dist/docs/tech/mcp-endpoints.docblock.js.map +0 -1
  491. package/dist/docs/tech/presentation-runtime.docblock.d.ts.map +0 -1
  492. package/dist/docs/tech/presentation-runtime.docblock.js.map +0 -1
  493. package/dist/docs/tech/schema/README.docblock.d.ts.map +0 -1
  494. package/dist/docs/tech/schema/README.docblock.js.map +0 -1
  495. package/dist/docs/tech/studio/learning-events.docblock.d.ts.map +0 -1
  496. package/dist/docs/tech/studio/learning-events.docblock.js.map +0 -1
  497. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts.map +0 -1
  498. package/dist/docs/tech/studio/learning-journeys.docblock.js.map +0 -1
  499. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts.map +0 -1
  500. package/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +0 -1
  501. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts.map +0 -1
  502. package/dist/docs/tech/studio/project-access-teams.docblock.js.map +0 -1
  503. package/dist/docs/tech/studio/project-routing.docblock.d.ts.map +0 -1
  504. package/dist/docs/tech/studio/project-routing.docblock.js.map +0 -1
  505. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts.map +0 -1
  506. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +0 -1
  507. package/dist/docs/tech/studio/team-invitations.docblock.d.ts.map +0 -1
  508. package/dist/docs/tech/studio/team-invitations.docblock.js.map +0 -1
  509. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts.map +0 -1
  510. package/dist/docs/tech/studio/workspace-ops.docblock.js.map +0 -1
  511. package/dist/docs/tech/studio/workspaces.docblock.d.ts.map +0 -1
  512. package/dist/docs/tech/studio/workspaces.docblock.js.map +0 -1
  513. package/dist/docs/tech/telemetry-ingest.docblock.d.ts.map +0 -1
  514. package/dist/docs/tech/telemetry-ingest.docblock.js.map +0 -1
  515. package/dist/docs/tech/templates/runtime.docblock.d.ts.map +0 -1
  516. package/dist/docs/tech/templates/runtime.docblock.js.map +0 -1
  517. package/dist/docs/tech/vscode-extension.docblock.d.ts.map +0 -1
  518. package/dist/docs/tech/vscode-extension.docblock.js.map +0 -1
  519. package/dist/docs/tech/workflows/overview.docblock.d.ts.map +0 -1
  520. package/dist/docs/tech/workflows/overview.docblock.js.map +0 -1
  521. package/dist/docs/tech-contracts.docs.d.ts.map +0 -1
  522. package/dist/docs/tech-contracts.docs.js.map +0 -1
  523. package/dist/docs/types.d.ts.map +0 -1
  524. package/dist/events.d.ts.map +0 -1
  525. package/dist/events.js.map +0 -1
  526. package/dist/experiments/docs/experiments.docblock.d.ts.map +0 -1
  527. package/dist/experiments/docs/experiments.docblock.js.map +0 -1
  528. package/dist/experiments/evaluator.d.ts.map +0 -1
  529. package/dist/experiments/evaluator.js.map +0 -1
  530. package/dist/experiments/spec-resolver.d.ts.map +0 -1
  531. package/dist/experiments/spec.d.ts.map +0 -1
  532. package/dist/experiments/spec.js.map +0 -1
  533. package/dist/features.d.ts.map +0 -1
  534. package/dist/features.js.map +0 -1
  535. package/dist/forms/docs/forms.docblock.d.ts.map +0 -1
  536. package/dist/forms/docs/forms.docblock.js.map +0 -1
  537. package/dist/forms.d.ts.map +0 -1
  538. package/dist/forms.js.map +0 -1
  539. package/dist/install.d.ts.map +0 -1
  540. package/dist/install.js.map +0 -1
  541. package/dist/integrations/binding.d.ts.map +0 -1
  542. package/dist/integrations/connection.d.ts.map +0 -1
  543. package/dist/integrations/contracts.d.ts.map +0 -1
  544. package/dist/integrations/contracts.js.map +0 -1
  545. package/dist/integrations/docs/integrations.docblock.d.ts.map +0 -1
  546. package/dist/integrations/docs/integrations.docblock.js.map +0 -1
  547. package/dist/integrations/health.d.ts.map +0 -1
  548. package/dist/integrations/health.js.map +0 -1
  549. package/dist/integrations/openbanking/contracts/accounts.d.ts.map +0 -1
  550. package/dist/integrations/openbanking/contracts/accounts.js.map +0 -1
  551. package/dist/integrations/openbanking/contracts/balances.d.ts.map +0 -1
  552. package/dist/integrations/openbanking/contracts/balances.js.map +0 -1
  553. package/dist/integrations/openbanking/contracts/index.d.ts.map +0 -1
  554. package/dist/integrations/openbanking/contracts/index.js.map +0 -1
  555. package/dist/integrations/openbanking/contracts/transactions.d.ts.map +0 -1
  556. package/dist/integrations/openbanking/contracts/transactions.js.map +0 -1
  557. package/dist/integrations/openbanking/guards.d.ts.map +0 -1
  558. package/dist/integrations/openbanking/guards.js.map +0 -1
  559. package/dist/integrations/openbanking/models.d.ts.map +0 -1
  560. package/dist/integrations/openbanking/models.js.map +0 -1
  561. package/dist/integrations/openbanking/openbanking.feature.d.ts.map +0 -1
  562. package/dist/integrations/openbanking/openbanking.feature.js.map +0 -1
  563. package/dist/integrations/openbanking/telemetry.d.ts.map +0 -1
  564. package/dist/integrations/openbanking/telemetry.js.map +0 -1
  565. package/dist/integrations/providers/calendar.d.ts.map +0 -1
  566. package/dist/integrations/providers/elevenlabs.d.ts.map +0 -1
  567. package/dist/integrations/providers/elevenlabs.js.map +0 -1
  568. package/dist/integrations/providers/email.d.ts.map +0 -1
  569. package/dist/integrations/providers/embedding.d.ts.map +0 -1
  570. package/dist/integrations/providers/gcs-storage.d.ts.map +0 -1
  571. package/dist/integrations/providers/gcs-storage.js.map +0 -1
  572. package/dist/integrations/providers/gmail.d.ts.map +0 -1
  573. package/dist/integrations/providers/gmail.js.map +0 -1
  574. package/dist/integrations/providers/google-calendar.d.ts.map +0 -1
  575. package/dist/integrations/providers/google-calendar.js.map +0 -1
  576. package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +0 -1
  577. package/dist/integrations/providers/impls/elevenlabs-voice.js.map +0 -1
  578. package/dist/integrations/providers/impls/gcs-storage.d.ts.map +0 -1
  579. package/dist/integrations/providers/impls/gcs-storage.js.map +0 -1
  580. package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +0 -1
  581. package/dist/integrations/providers/impls/gmail-inbound.js.map +0 -1
  582. package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +0 -1
  583. package/dist/integrations/providers/impls/gmail-outbound.js.map +0 -1
  584. package/dist/integrations/providers/impls/google-calendar.d.ts.map +0 -1
  585. package/dist/integrations/providers/impls/google-calendar.js.map +0 -1
  586. package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +0 -1
  587. package/dist/integrations/providers/impls/mistral-embedding.js.map +0 -1
  588. package/dist/integrations/providers/impls/mistral-llm.d.ts.map +0 -1
  589. package/dist/integrations/providers/impls/mistral-llm.js.map +0 -1
  590. package/dist/integrations/providers/impls/postmark-email.d.ts.map +0 -1
  591. package/dist/integrations/providers/impls/postmark-email.js.map +0 -1
  592. package/dist/integrations/providers/impls/powens-client.d.ts.map +0 -1
  593. package/dist/integrations/providers/impls/powens-client.js.map +0 -1
  594. package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +0 -1
  595. package/dist/integrations/providers/impls/powens-openbanking.js.map +0 -1
  596. package/dist/integrations/providers/impls/provider-factory.d.ts.map +0 -1
  597. package/dist/integrations/providers/impls/provider-factory.js.map +0 -1
  598. package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +0 -1
  599. package/dist/integrations/providers/impls/qdrant-vector.js.map +0 -1
  600. package/dist/integrations/providers/impls/stripe-payments.d.ts.map +0 -1
  601. package/dist/integrations/providers/impls/stripe-payments.js.map +0 -1
  602. package/dist/integrations/providers/impls/twilio-sms.d.ts.map +0 -1
  603. package/dist/integrations/providers/impls/twilio-sms.js.map +0 -1
  604. package/dist/integrations/providers/llm.d.ts.map +0 -1
  605. package/dist/integrations/providers/mistral.d.ts.map +0 -1
  606. package/dist/integrations/providers/mistral.js.map +0 -1
  607. package/dist/integrations/providers/openbanking.d.ts.map +0 -1
  608. package/dist/integrations/providers/payments.d.ts.map +0 -1
  609. package/dist/integrations/providers/postmark.d.ts.map +0 -1
  610. package/dist/integrations/providers/postmark.js.map +0 -1
  611. package/dist/integrations/providers/powens.d.ts.map +0 -1
  612. package/dist/integrations/providers/powens.js.map +0 -1
  613. package/dist/integrations/providers/qdrant.d.ts.map +0 -1
  614. package/dist/integrations/providers/qdrant.js.map +0 -1
  615. package/dist/integrations/providers/registry.d.ts.map +0 -1
  616. package/dist/integrations/providers/registry.js.map +0 -1
  617. package/dist/integrations/providers/sms.d.ts.map +0 -1
  618. package/dist/integrations/providers/storage.d.ts.map +0 -1
  619. package/dist/integrations/providers/stripe.d.ts.map +0 -1
  620. package/dist/integrations/providers/stripe.js.map +0 -1
  621. package/dist/integrations/providers/twilio-sms.d.ts.map +0 -1
  622. package/dist/integrations/providers/twilio-sms.js.map +0 -1
  623. package/dist/integrations/providers/vector-store.d.ts.map +0 -1
  624. package/dist/integrations/providers/voice.d.ts.map +0 -1
  625. package/dist/integrations/runtime.d.ts.map +0 -1
  626. package/dist/integrations/runtime.js.map +0 -1
  627. package/dist/integrations/secrets/aws-secret-manager.d.ts.map +0 -1
  628. package/dist/integrations/secrets/aws-secret-manager.js.map +0 -1
  629. package/dist/integrations/secrets/env-secret-provider.d.ts.map +0 -1
  630. package/dist/integrations/secrets/env-secret-provider.js.map +0 -1
  631. package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +0 -1
  632. package/dist/integrations/secrets/gcp-secret-manager.js.map +0 -1
  633. package/dist/integrations/secrets/manager.d.ts.map +0 -1
  634. package/dist/integrations/secrets/manager.js.map +0 -1
  635. package/dist/integrations/secrets/provider.d.ts.map +0 -1
  636. package/dist/integrations/secrets/provider.js.map +0 -1
  637. package/dist/integrations/secrets/scaleway-secret-manager.d.ts.map +0 -1
  638. package/dist/integrations/secrets/scaleway-secret-manager.js.map +0 -1
  639. package/dist/integrations/spec.d.ts.map +0 -1
  640. package/dist/integrations/spec.js.map +0 -1
  641. package/dist/jobs/define-job.d.ts.map +0 -1
  642. package/dist/jobs/define-job.js.map +0 -1
  643. package/dist/jobs/gcp-cloud-tasks.d.ts.map +0 -1
  644. package/dist/jobs/gcp-cloud-tasks.js.map +0 -1
  645. package/dist/jobs/gcp-pubsub.d.ts.map +0 -1
  646. package/dist/jobs/gcp-pubsub.js.map +0 -1
  647. package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +0 -1
  648. package/dist/jobs/handlers/gmail-sync-handler.js.map +0 -1
  649. package/dist/jobs/handlers/index.d.ts.map +0 -1
  650. package/dist/jobs/handlers/index.js.map +0 -1
  651. package/dist/jobs/handlers/ping-handler.d.ts.map +0 -1
  652. package/dist/jobs/handlers/ping-handler.js.map +0 -1
  653. package/dist/jobs/handlers/storage-document-handler.d.ts.map +0 -1
  654. package/dist/jobs/handlers/storage-document-handler.js.map +0 -1
  655. package/dist/jobs/memory-queue.d.ts.map +0 -1
  656. package/dist/jobs/memory-queue.js.map +0 -1
  657. package/dist/jobs/queue.d.ts.map +0 -1
  658. package/dist/jobs/queue.js.map +0 -1
  659. package/dist/jobs/scaleway-sqs-queue.d.ts.map +0 -1
  660. package/dist/jobs/scaleway-sqs-queue.js.map +0 -1
  661. package/dist/jsonschema.d.ts.map +0 -1
  662. package/dist/jsonschema.js.map +0 -1
  663. package/dist/knowledge/binding.d.ts.map +0 -1
  664. package/dist/knowledge/contracts.d.ts.map +0 -1
  665. package/dist/knowledge/contracts.js.map +0 -1
  666. package/dist/knowledge/docs/knowledge.docblock.d.ts.map +0 -1
  667. package/dist/knowledge/docs/knowledge.docblock.js.map +0 -1
  668. package/dist/knowledge/ingestion/document-processor.d.ts.map +0 -1
  669. package/dist/knowledge/ingestion/document-processor.js.map +0 -1
  670. package/dist/knowledge/ingestion/embedding-service.d.ts.map +0 -1
  671. package/dist/knowledge/ingestion/embedding-service.js.map +0 -1
  672. package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +0 -1
  673. package/dist/knowledge/ingestion/gmail-adapter.js.map +0 -1
  674. package/dist/knowledge/ingestion/storage-adapter.d.ts.map +0 -1
  675. package/dist/knowledge/ingestion/storage-adapter.js.map +0 -1
  676. package/dist/knowledge/ingestion/vector-indexer.d.ts.map +0 -1
  677. package/dist/knowledge/ingestion/vector-indexer.js.map +0 -1
  678. package/dist/knowledge/query/service.d.ts.map +0 -1
  679. package/dist/knowledge/query/service.js.map +0 -1
  680. package/dist/knowledge/runtime.d.ts.map +0 -1
  681. package/dist/knowledge/runtime.js.map +0 -1
  682. package/dist/knowledge/source.d.ts.map +0 -1
  683. package/dist/knowledge/spaces/email-threads.d.ts.map +0 -1
  684. package/dist/knowledge/spaces/email-threads.js.map +0 -1
  685. package/dist/knowledge/spaces/financial-docs.d.ts.map +0 -1
  686. package/dist/knowledge/spaces/financial-docs.js.map +0 -1
  687. package/dist/knowledge/spaces/financial-overview.d.ts.map +0 -1
  688. package/dist/knowledge/spaces/financial-overview.js.map +0 -1
  689. package/dist/knowledge/spaces/product-canon.d.ts.map +0 -1
  690. package/dist/knowledge/spaces/product-canon.js.map +0 -1
  691. package/dist/knowledge/spaces/support-faq.d.ts.map +0 -1
  692. package/dist/knowledge/spaces/support-faq.js.map +0 -1
  693. package/dist/knowledge/spaces/uploaded-docs.d.ts.map +0 -1
  694. package/dist/knowledge/spaces/uploaded-docs.js.map +0 -1
  695. package/dist/knowledge/spec.d.ts.map +0 -1
  696. package/dist/knowledge/spec.js.map +0 -1
  697. package/dist/llm/exporters.d.ts.map +0 -1
  698. package/dist/llm/exporters.js.map +0 -1
  699. package/dist/llm/prompts.d.ts.map +0 -1
  700. package/dist/llm/prompts.js.map +0 -1
  701. package/dist/llm/types.d.ts.map +0 -1
  702. package/dist/markdown.d.ts.map +0 -1
  703. package/dist/markdown.js.map +0 -1
  704. package/dist/migrations.d.ts.map +0 -1
  705. package/dist/migrations.js.map +0 -1
  706. package/dist/onboarding-base.d.ts.map +0 -1
  707. package/dist/onboarding-base.js.map +0 -1
  708. package/dist/openapi.d.ts.map +0 -1
  709. package/dist/openapi.js.map +0 -1
  710. package/dist/openbanking/docs/openbanking.docblock.d.ts.map +0 -1
  711. package/dist/openbanking/docs/openbanking.docblock.js.map +0 -1
  712. package/dist/ownership.d.ts.map +0 -1
  713. package/dist/ownership.js.map +0 -1
  714. package/dist/policy/docs/policy.docblock.d.ts.map +0 -1
  715. package/dist/policy/docs/policy.docblock.js.map +0 -1
  716. package/dist/policy/engine.d.ts.map +0 -1
  717. package/dist/policy/engine.js.map +0 -1
  718. package/dist/policy/opa-adapter.d.ts.map +0 -1
  719. package/dist/policy/opa-adapter.js.map +0 -1
  720. package/dist/policy/spec.d.ts.map +0 -1
  721. package/dist/policy/spec.js.map +0 -1
  722. package/dist/presentations/docs/presentations-conventions.docblock.d.ts.map +0 -1
  723. package/dist/presentations/docs/presentations-conventions.docblock.js.map +0 -1
  724. package/dist/presentations.backcompat.d.ts.map +0 -1
  725. package/dist/presentations.backcompat.js.map +0 -1
  726. package/dist/presentations.d.ts.map +0 -1
  727. package/dist/presentations.js.map +0 -1
  728. package/dist/presentations.v2.d.ts.map +0 -1
  729. package/dist/presentations.v2.js.map +0 -1
  730. package/dist/prompt.d.ts.map +0 -1
  731. package/dist/prompt.js.map +0 -1
  732. package/dist/promptRegistry.d.ts.map +0 -1
  733. package/dist/promptRegistry.js.map +0 -1
  734. package/dist/regenerator/adapters.d.ts.map +0 -1
  735. package/dist/regenerator/docs/regenerator.docblock.d.ts.map +0 -1
  736. package/dist/regenerator/docs/regenerator.docblock.js.map +0 -1
  737. package/dist/regenerator/executor.d.ts.map +0 -1
  738. package/dist/regenerator/executor.js.map +0 -1
  739. package/dist/regenerator/service.d.ts.map +0 -1
  740. package/dist/regenerator/service.js.map +0 -1
  741. package/dist/regenerator/sinks.d.ts.map +0 -1
  742. package/dist/regenerator/sinks.js.map +0 -1
  743. package/dist/regenerator/types.d.ts.map +0 -1
  744. package/dist/regenerator/utils.d.ts.map +0 -1
  745. package/dist/regenerator/utils.js.map +0 -1
  746. package/dist/registry.d.ts.map +0 -1
  747. package/dist/registry.js.map +0 -1
  748. package/dist/resources.d.ts.map +0 -1
  749. package/dist/resources.js.map +0 -1
  750. package/dist/schema/dist/index.js.map +0 -1
  751. package/dist/schema-to-markdown.d.ts.map +0 -1
  752. package/dist/schema-to-markdown.js.map +0 -1
  753. package/dist/server/graphql-pothos.d.ts.map +0 -1
  754. package/dist/server/graphql-pothos.js.map +0 -1
  755. package/dist/server/mcp/createMcpServer.d.ts.map +0 -1
  756. package/dist/server/mcp/createMcpServer.js.map +0 -1
  757. package/dist/server/mcp/mcpTypes.d.ts.map +0 -1
  758. package/dist/server/mcp/registerPresentations.d.ts.map +0 -1
  759. package/dist/server/mcp/registerPresentations.js.map +0 -1
  760. package/dist/server/mcp/registerPrompts.d.ts.map +0 -1
  761. package/dist/server/mcp/registerPrompts.js.map +0 -1
  762. package/dist/server/mcp/registerResources.d.ts.map +0 -1
  763. package/dist/server/mcp/registerResources.js.map +0 -1
  764. package/dist/server/mcp/registerTools.d.ts.map +0 -1
  765. package/dist/server/mcp/registerTools.js.map +0 -1
  766. package/dist/server/rest-elysia.d.ts.map +0 -1
  767. package/dist/server/rest-elysia.js.map +0 -1
  768. package/dist/server/rest-express.d.ts.map +0 -1
  769. package/dist/server/rest-express.js.map +0 -1
  770. package/dist/server/rest-generic.d.ts.map +0 -1
  771. package/dist/server/rest-generic.js.map +0 -1
  772. package/dist/server/rest-next-app.d.ts.map +0 -1
  773. package/dist/server/rest-next-app.js.map +0 -1
  774. package/dist/server/rest-next-mcp.d.ts.map +0 -1
  775. package/dist/server/rest-next-mcp.js.map +0 -1
  776. package/dist/server/rest-next-pages.d.ts.map +0 -1
  777. package/dist/server/rest-next-pages.js.map +0 -1
  778. package/dist/spec.d.ts.map +0 -1
  779. package/dist/spec.js.map +0 -1
  780. package/dist/telemetry/anomaly.d.ts.map +0 -1
  781. package/dist/telemetry/anomaly.js.map +0 -1
  782. package/dist/telemetry/docs/telemetry.docblock.d.ts.map +0 -1
  783. package/dist/telemetry/docs/telemetry.docblock.js.map +0 -1
  784. package/dist/telemetry/spec.d.ts.map +0 -1
  785. package/dist/telemetry/spec.js.map +0 -1
  786. package/dist/telemetry/tracker.d.ts.map +0 -1
  787. package/dist/telemetry/tracker.js.map +0 -1
  788. package/dist/tests/runner.d.ts.map +0 -1
  789. package/dist/tests/runner.js.map +0 -1
  790. package/dist/tests/spec.d.ts.map +0 -1
  791. package/dist/tests/spec.js.map +0 -1
  792. package/dist/themes.d.ts.map +0 -1
  793. package/dist/themes.js.map +0 -1
  794. package/dist/translations/catalog.d.ts.map +0 -1
  795. package/dist/translations/tenant.d.ts.map +0 -1
  796. package/dist/types.d.ts.map +0 -1
  797. package/dist/workflow/adapters/db-adapter.d.ts.map +0 -1
  798. package/dist/workflow/adapters/db-adapter.js.map +0 -1
  799. package/dist/workflow/adapters/file-adapter.d.ts.map +0 -1
  800. package/dist/workflow/adapters/file-adapter.js.map +0 -1
  801. package/dist/workflow/adapters/memory-store.d.ts.map +0 -1
  802. package/dist/workflow/adapters/memory-store.js.map +0 -1
  803. package/dist/workflow/expression.d.ts.map +0 -1
  804. package/dist/workflow/expression.js.map +0 -1
  805. package/dist/workflow/runner.d.ts.map +0 -1
  806. package/dist/workflow/runner.js.map +0 -1
  807. package/dist/workflow/sla-monitor.d.ts.map +0 -1
  808. package/dist/workflow/sla-monitor.js.map +0 -1
  809. package/dist/workflow/spec.d.ts.map +0 -1
  810. package/dist/workflow/spec.js.map +0 -1
  811. package/dist/workflow/state.d.ts.map +0 -1
  812. package/dist/workflow/validation.d.ts.map +0 -1
  813. package/dist/workflow/validation.js.map +0 -1
@@ -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 };
@@ -13,12 +13,12 @@ function evaluateSingle(expr, ctx) {
13
13
  const trimmed = expr.trim();
14
14
  if (!trimmed) return true;
15
15
  if (trimmed.startsWith("!")) return !evaluateSingle(trimmed.slice(1), ctx);
16
- const comparisonMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);
16
+ const comparisonMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);
17
17
  if (comparisonMatch) {
18
18
  const [, root, path, operator, rawRight] = comparisonMatch;
19
19
  return compare(resolveRoot(root, ctx, path), parseLiteral(rawRight), operator);
20
20
  }
21
- const truthyMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)$/);
21
+ const truthyMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)$/);
22
22
  if (truthyMatch) {
23
23
  const [, root, path] = truthyMatch;
24
24
  const value = resolveRoot(root, ctx, path);
@@ -71,6 +71,7 @@ function splitByOperator(expr, operator) {
71
71
  let inDoubleQuote = false;
72
72
  for (let i = 0; i < expr.length; i++) {
73
73
  const char = expr[i];
74
+ if (!char) continue;
74
75
  const next = expr.slice(i, i + operator.length);
75
76
  if (char === "'" && !inDoubleQuote) {
76
77
  inSingleQuote = !inSingleQuote;
@@ -95,5 +96,4 @@ function splitByOperator(expr, operator) {
95
96
  }
96
97
 
97
98
  //#endregion
98
- export { evaluateExpression };
99
- //# sourceMappingURL=expression.js.map
99
+ export { 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 };
@@ -334,5 +334,4 @@ function capabilityKey(ref) {
334
334
  }
335
335
 
336
336
  //#endregion
337
- export { WorkflowPreFlightError, WorkflowRunner };
338
- //# sourceMappingURL=runner.js.map
337
+ export { WorkflowPreFlightError, 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 };
@@ -44,5 +44,4 @@ var SLAMonitor = class {
44
44
  };
45
45
 
46
46
  //#endregion
47
- export { SLAMonitor };
48
- //# sourceMappingURL=sla-monitor.js.map
47
+ export { 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 };
@@ -29,5 +29,4 @@ var WorkflowRegistry = class {
29
29
  };
30
30
 
31
31
  //#endregion
32
- export { WorkflowRegistry };
33
- //# sourceMappingURL=spec.js.map
32
+ export { 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 };
@@ -133,6 +133,7 @@ function validateReachability(entryStepId, stepsById, adjacency, issues) {
133
133
  visited.add(entryStepId);
134
134
  while (queue.length) {
135
135
  const current = queue.shift();
136
+ if (!current) continue;
136
137
  const neighbours = adjacency.get(current);
137
138
  if (!neighbours) continue;
138
139
  for (const next of neighbours) {
@@ -172,5 +173,4 @@ function detectCycles(adjacency, issues) {
172
173
  }
173
174
 
174
175
  //#endregion
175
- export { WorkflowValidationError, assertWorkflowSpecValid, validateWorkflowSpec };
176
- //# sourceMappingURL=validation.js.map
176
+ export { WorkflowValidationError, assertWorkflowSpecValid, validateWorkflowSpec };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/lib.contracts",
3
- "version": "0.0.0-canary-20251219202229",
3
+ "version": "0.0.0-canary-20251220015515",
4
4
  "scripts": {
5
5
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
6
6
  "publish:pkg:canary": "bun publish:pkg --tag canary",
@@ -16,8 +16,8 @@
16
16
  "test": "bun run"
17
17
  },
18
18
  "devDependencies": {
19
- "@lssm/tool.tsdown": "0.0.0-canary-20251219202229",
20
- "@lssm/tool.typescript": "0.0.0-canary-20251219202229",
19
+ "@lssm/tool.tsdown": "0.0.0-canary-20251220015515",
20
+ "@lssm/tool.typescript": "0.0.0-canary-20251220015515",
21
21
  "@types/express": "^5.0.3",
22
22
  "@types/turndown": "^5.0.6",
23
23
  "tsdown": "^0.18.1",
@@ -35,8 +35,8 @@
35
35
  "@elevenlabs/elevenlabs-js": "^2.27.0",
36
36
  "@google-cloud/secret-manager": "^6.1.1",
37
37
  "@google-cloud/storage": "^7.18.0",
38
- "@lssm/lib.logger": "0.0.0-canary-20251219202229",
39
- "@lssm/lib.schema": "0.0.0-canary-20251219202229",
38
+ "@lssm/lib.logger": "0.0.0-canary-20251220015515",
39
+ "@lssm/lib.schema": "0.0.0-canary-20251220015515",
40
40
  "@mistralai/mistralai": "^1.11.0",
41
41
  "@modelcontextprotocol/sdk": "^1.24.3",
42
42
  "@qdrant/js-client-rest": "^1.16.2",
@@ -54,7 +54,7 @@
54
54
  "elysia": "^1.4.19",
55
55
  "express": "^5.2.1",
56
56
  "graphql-scalars": "^1.24.2",
57
- "next": "16.0.10",
57
+ "next": "16.1.0",
58
58
  "@blocknote/core": "^0.45.0",
59
59
  "@blocknote/react": "^0.45.0",
60
60
  "react": "^19.2.3",
@@ -563,7 +563,13 @@
563
563
  "./workflow/state": "./dist/workflow/state.js",
564
564
  "./workflow/validation": "./dist/workflow/validation.js",
565
565
  "./*": "./*"
566
- }
566
+ },
567
+ "registry": "https://registry.npmjs.org/"
567
568
  },
568
- "license": "MIT"
569
+ "license": "MIT",
570
+ "repository": {
571
+ "type": "git",
572
+ "url": "https://github.com/lssm-tech/contractspec.git",
573
+ "directory": "packages/libs/contracts"
574
+ }
569
575
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config.feature.d.ts","names":[],"sources":["../../src/app-config/app-config.feature.ts"],"sourcesContent":[],"mappings":";;;;;;;;cAWa,kBAAkB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config.feature.js","names":["AppConfigFeature: FeatureModuleSpec"],"sources":["../../src/app-config/app-config.feature.ts"],"sourcesContent":["/**\n * App Config Feature Module Specification\n *\n * Defines the feature module for tenant app configuration lifecycle.\n */\nimport type { FeatureModuleSpec } from '../features';\n\n/**\n * App Config feature module that bundles tenant configuration\n * lifecycle events for draft, preview, publish, and rollback stages.\n */\nexport const AppConfigFeature: FeatureModuleSpec = {\n meta: {\n key: 'app-config',\n title: 'App Configuration',\n description:\n 'Tenant app configuration lifecycle management with draft, preview, and publish stages',\n domain: 'platform',\n owners: ['@platform.sigil'],\n tags: ['app-config', 'lifecycle', 'configuration', 'tenant'],\n stability: 'beta',\n },\n\n // No operations for this feature - it's events-only\n operations: [],\n\n // Events emitted by this feature\n events: [\n { name: 'app_config.draft_created', version: 1 },\n { name: 'app_config.promoted_to_preview', version: 1 },\n { name: 'app_config.published', version: 1 },\n { name: 'app_config.rolled_back', version: 1 },\n ],\n\n // No presentations for this library feature\n presentations: [],\n opToPresentation: [],\n presentationsTargets: [],\n\n // Capability definitions\n capabilities: {\n provides: [{ key: 'app-config', version: 1 }],\n requires: [],\n },\n};\n"],"mappings":";;;;;AAWA,MAAaA,mBAAsC;CACjD,MAAM;EACJ,KAAK;EACL,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,kBAAkB;EAC3B,MAAM;GAAC;GAAc;GAAa;GAAiB;GAAS;EAC5D,WAAW;EACZ;CAGD,YAAY,EAAE;CAGd,QAAQ;EACN;GAAE,MAAM;GAA4B,SAAS;GAAG;EAChD;GAAE,MAAM;GAAkC,SAAS;GAAG;EACtD;GAAE,MAAM;GAAwB,SAAS;GAAG;EAC5C;GAAE,MAAM;GAA0B,SAAS;GAAG;EAC/C;CAGD,eAAe,EAAE;CACjB,kBAAkB,EAAE;CACpB,sBAAsB,EAAE;CAGxB,cAAc;EACZ,UAAU,CAAC;GAAE,KAAK;GAAc,SAAS;GAAG,CAAC;EAC7C,UAAU,EAAE;EACb;CACF"}
@@ -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,kBAAA,CAAA;IApBW,UAAA,EAAA,KAAA;EAoBX,CAAA;;;;;;;;;;;;;;;MApBsC,IAAA,EAAA;QAAA,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;QAAA,IAAA,8BAAA,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,8BAoBX,OAAA,CAAA,MAAA,EAAA,OAAA,CAAA,QAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;IAAA,UAAA,EAAA,IAAA;;;;;;;;;;;EApBmD,OAAA,EAAA;IAAA,IAAA,EA5Cb,kBAAA,CAAA,SA4Ca,CAAA,OAAA,EAAA,OAAA,CAAA;;;;IAAA,IAAA,8BAAA,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAsBxC,CAAA;CAoBX,CAAA,EAAA,SAAA,CAAA;cAhEW,2BAAyB,aAAA;;UAoBpC,kBAAA,CAAA;;;;;;EAwBkD,CAAA;EAAA,MAAA,EAAA;;;;CAAA,CAAA,aAAA,CAAA;EAAA,MAAA,EAAA;IAsBvC,IAAA,EAlEyB,kBAAA,CAAA,SAqGpC,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;IAnCmC,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;cA5CxB,0CAAwC,aAAA;EA4ChB,aAAA,EAAA;IAAA,IAAA,EAxBnC,kBAAA,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,8BAAmC,CAAA,MAAf,EAAM,MAAA,CAAA;IASvB,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAjHqC,kBAAA,CAAA;;;;;;;;cAsBxC,yCAAuC,aAAA;;UAoBlD,kBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UApBkD,kBAAA,CAAA;;;;;;;;cAsBvC,0BAAwB,aAAA;;UAmCnC,kBAAA,CAAA;;;;;;;;;;;;;;;;;cAEW,qBAAmB,aAAA;;UAqB9B,kBAAA,CAAA;;;;;;;;;;;;;;;;;UArB8B,kBAAA,CAAA;;;;;;;;cAuBnB,oBAAoB,eAAe;iBAShC,0BAAA,WAAqC,eAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.js","names":["SchemaModel","ScalarTypeEnum","appConfigContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../src/app-config/contracts.ts"],"sourcesContent":["import { ScalarTypeEnum, SchemaModel } from '@lssm/lib.schema';\nimport { defineCommand, defineQuery } from '../spec';\nimport { OwnersEnum, StabilityEnum, TagsEnum } from '../ownership';\nimport type { ContractSpec } from '../spec';\nimport type { SpecRegistry } from '../registry';\n\nconst BrandingAssetInput = new SchemaModel({\n name: 'BrandingAssetInput',\n fields: {\n type: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n url: { type: ScalarTypeEnum.URL(), isOptional: false },\n mimeType: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst UpdateTenantBrandingInput = new SchemaModel({\n name: 'UpdateTenantBrandingInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n appName: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n assets: { type: BrandingAssetInput, isOptional: true, isArray: true },\n colors: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n customDomain: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n subdomain: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst UpdateTenantBrandingOutput = new SchemaModel({\n name: 'UpdateTenantBrandingOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst VerifyCustomDomainInput = new SchemaModel({\n name: 'VerifyCustomDomainInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n domain: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst VerifyCustomDomainOutput = new SchemaModel({\n name: 'VerifyCustomDomainOutput',\n fields: {\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n message: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst TranslationEntryInput = new SchemaModel({\n name: 'TranslationEntryInput',\n fields: {\n key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n context: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst UpdateBlueprintTranslationInput = new SchemaModel({\n name: 'UpdateBlueprintTranslationInput',\n fields: {\n blueprintName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n blueprintVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n catalogName: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n catalogVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n defaultLocale: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n supportedLocales: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n isArray: true,\n },\n entries: {\n type: TranslationEntryInput,\n isOptional: false,\n isArray: true,\n },\n },\n});\n\nconst UpdateTenantTranslationInput = new SchemaModel({\n name: 'UpdateTenantTranslationInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n entries: {\n type: TranslationEntryInput,\n isOptional: false,\n isArray: true,\n },\n defaultLocale: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n enabledLocales: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n});\n\nconst MessageResolutionInput = new SchemaModel({\n name: 'MessageResolutionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst MessageResolutionOutput = new SchemaModel({\n name: 'MessageResolutionOutput',\n fields: {\n value: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n source: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nexport const UpdateTenantBrandingCommand = defineCommand({\n meta: {\n name: 'appConfig.updateTenantBranding',\n version: 1,\n description: 'Applies tenant branding overrides (names, assets, domains).',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['branding'],\n stability: StabilityEnum.Beta,\n goal: 'Maintain tenant-specific branding assets and domains.',\n context:\n 'Invoked by the Studio or automation when a tenant updates branding settings.',\n },\n io: {\n input: UpdateTenantBrandingInput,\n output: UpdateTenantBrandingOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const VerifyCustomDomainCommand = defineCommand({\n meta: {\n name: 'appConfig.verifyCustomDomain',\n version: 1,\n description: 'Validates DNS ownership for tenant custom domains.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['branding'],\n stability: StabilityEnum.Experimental,\n goal: 'Confirm tenant-provided domains before activation.',\n context:\n 'Triggered after the tenant adds DNS records to verify domain ownership.',\n },\n io: {\n input: VerifyCustomDomainInput,\n output: VerifyCustomDomainOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const UpdateBlueprintTranslationCatalogCommand = defineCommand({\n meta: {\n name: 'appConfig.updateBlueprintTranslationCatalog',\n version: 1,\n description: 'Registers or updates translation entries for a blueprint.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.I18n],\n stability: StabilityEnum.Beta,\n goal: 'Keep blueprint translation catalogs in sync with shipped copy.',\n context:\n 'Executed by platform automation or CI when committing updated translation catalogs.',\n },\n io: {\n input: UpdateBlueprintTranslationInput,\n output: UpdateTenantBrandingOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const UpdateTenantTranslationOverridesCommand = defineCommand({\n meta: {\n name: 'appConfig.updateTenantTranslations',\n version: 1,\n description: 'Applies tenant-specific translation entries.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.I18n],\n stability: StabilityEnum.Beta,\n goal: 'Allow tenants to override selected message keys.',\n context:\n 'Called by the Studio when a tenant customizes labels or copy for their locale.',\n },\n io: {\n input: UpdateTenantTranslationInput,\n output: UpdateTenantBrandingOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const GetResolvedBrandingQuery = defineQuery({\n meta: {\n name: 'appConfig.getResolvedBranding',\n version: 1,\n description: 'Returns the resolved branding for a tenant/app/environment.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['branding'],\n stability: StabilityEnum.Beta,\n goal: 'Expose hydrated branding assets for rendering UI/email experiences.',\n context:\n 'Used by runtime surfaces to fetch brand assets prior to rendering tenant-specific experiences.',\n },\n io: {\n input: new SchemaModel({\n name: 'GetResolvedBrandingInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n environment: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n },\n }),\n output: new SchemaModel({\n name: 'GetResolvedBrandingOutput',\n fields: {\n branding: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n }),\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.read', version: 1 }],\n },\n});\n\nexport const ResolveMessageQuery = defineQuery({\n meta: {\n name: 'appConfig.resolveMessage',\n version: 1,\n description:\n 'Resolves a translation key for a tenant in the requested locale.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.I18n],\n stability: StabilityEnum.Experimental,\n goal: 'Expose a server-side API for resolving message keys on demand.',\n context:\n 'Used by backend services or scripts that need translated copy outside the front-end runtime.',\n },\n io: {\n input: MessageResolutionInput,\n output: MessageResolutionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.read', version: 1 }],\n },\n});\n\nexport const appConfigContracts: Record<string, ContractSpec<any, any>> = {\n UpdateTenantBrandingCommand,\n VerifyCustomDomainCommand,\n UpdateBlueprintTranslationCatalogCommand,\n UpdateTenantTranslationOverridesCommand,\n GetResolvedBrandingQuery,\n ResolveMessageQuery,\n};\n\nexport function registerAppConfigContracts(registry: SpecRegistry) {\n return registry\n .register(UpdateTenantBrandingCommand)\n .register(VerifyCustomDomainCommand)\n .register(UpdateBlueprintTranslationCatalogCommand)\n .register(UpdateTenantTranslationOverridesCommand)\n .register(GetResolvedBrandingQuery)\n .register(ResolveMessageQuery);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config.docblock.d.ts","names":[],"sources":["../../../src/app-config/docs/app-config.docblock.ts"],"sourcesContent":[],"mappings":";;;cAGa,qCAAqC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config.docblock.js","names":["tech_contracts_app_config_DocBlocks: DocBlock[]"],"sources":["../../../src/app-config/docs/app-config.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@lssm/lib.contracts/docs';\nimport { registerDocBlocks } from '../../registry';\n\nexport const tech_contracts_app_config_DocBlocks: DocBlock[] = [\n {\n id: 'docs.tech.contracts.app-config',\n title: 'App Configuration Layers',\n summary: 'App orchestration is split into three explicit layers:',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/tech/contracts/app-config',\n tags: ['tech', 'contracts', 'app-config'],\n body: \"## App Configuration Layers\\n\\nApp orchestration is split into three explicit layers:\\n\\n1. **AppBlueprintSpec** \\u2013 global, versioned description of what an app can look like. Stored in Git, no tenant/environment data.\\n2. **TenantAppConfig** \\u2013 tenant/environment overrides that the future Studio edits. Stored per tenant (DB/contract), mutable at runtime.\\n3. **ResolvedAppConfig** \\u2013 pure, merged view consumed by the runtime. Derived in-memory from a blueprint + tenant config.\\n\\n- Types & registry: `packages/libs/contracts/src/app-config/spec.ts`\\n- Resolution helpers: `packages/libs/contracts/src/app-config/runtime.ts`\\n- CLI wizard (blueprint scaffolding): `contractspec create app-config`\\n\\n### 1. AppBlueprintSpec\\n\\n```ts\\nexport interface AppBlueprintSpec {\\n meta: AppBlueprintMeta; // { name, version, appId, ownership }\\n capabilities?: { enabled?: CapabilityRef[]; disabled?: CapabilityRef[] };\\n features?: { include?: FeatureRef[]; exclude?: FeatureRef[] };\\n integrationSlots?: AppIntegrationSlot[];\\n branding?: BrandingDefaults;\\n dataViews?: Record<string, SpecPointer>;\\n workflows?: Record<string, SpecPointer>;\\n policies?: PolicyRef[];\\n theme?: AppThemeBinding;\\n telemetry?: TelemetryBinding;\\n experiments?: { active?: ExperimentRef[]; paused?: ExperimentRef[] };\\n featureFlags?: FeatureFlagState[];\\n routes?: AppRouteConfig[];\\n notes?: string;\\n}\\n```\\n\\nRegister blueprints with `AppBlueprintRegistry`. Blueprints only capture the default/global experience.\\n\\n- **Integration slots** declare the categories and capability requirements an app expects (e.g. `\\\"primary-payments\\\"` must be a payments provider that supports managed or BYOK credentials). Slots never include secrets; tenants bind concrete connections later.\\n- **Branding defaults** provide message-key based names, placeholder assets, and theme token references that downstream tenants can override.\\n\\n### 2. TenantAppConfig\\n\\n```ts\\nexport interface TenantAppConfig {\\n meta: TenantAppConfigMeta; // { id, tenantId, appId, blueprintName/version, environment?, version, timestamps }\\n capabilities?: { enable?: CapabilityRef[]; disable?: CapabilityRef[] };\\n features?: { include?: FeatureRef[]; exclude?: FeatureRef[] };\\n dataViewOverrides?: TenantSpecOverride[];\\n workflowOverrides?: TenantSpecOverride[];\\n additionalPolicies?: PolicyRef[];\\n themeOverride?: { primary?: ThemeRef | null; fallbacks?: ThemeRef[] };\\n telemetryOverride?: { spec?: SpecPointer | null; disabledEvents?: string[] };\\n experiments?: { active?: ExperimentRef[]; paused?: ExperimentRef[] };\\n featureFlags?: FeatureFlagState[];\\n routeOverrides?: TenantRouteOverride[];\\n integrations?: AppIntegrationBinding[];\\n knowledge?: AppKnowledgeBinding[];\\n branding?: TenantBrandingConfig;\\n notes?: string;\\n}\\n```\\n\\nThis object represents what a tenant edits via the Studio (stored in DB/contracts later).\\n\\n- **AppIntegrationBinding** now maps `slotId` \\u2192 `connectionId` (plus optional workflow scopes). It no longer carries capability lists; those are defined once in the slot.\\n- **TenantBrandingConfig** allows per-tenant names, assets, and domain overrides while keeping secrets and large files out of blueprints.\\n\\n### 3. ResolvedAppConfig\\n\\n```ts\\nexport interface ResolvedAppConfig {\\n appId: string;\\n tenantId: string;\\n environment?: string;\\n blueprintName: string;\\n blueprintVersion: number;\\n configVersion: number;\\n capabilities: { enabled: CapabilityRef[]; disabled: CapabilityRef[] };\\n features: { include: FeatureRef[]; exclude: FeatureRef[] };\\n dataViews: Record<string, SpecPointer>;\\n workflows: Record<string, SpecPointer>;\\n policies: PolicyRef[];\\n theme?: AppThemeBinding;\\n telemetry?: TelemetryBinding;\\n experiments: { catalog: ExperimentRef[]; active: ExperimentRef[]; paused: ExperimentRef[] };\\n featureFlags: FeatureFlagState[];\\n routes: AppRouteConfig[];\\n integrations: ResolvedIntegration[];\\n knowledge: ResolvedKnowledge[];\\n branding: ResolvedBranding;\\n notes?: string;\\n}\\n```\\n\\nUse `resolveAppConfig(blueprint, tenant)` to produce this merged view. No IO, no registry lookups\\u2014pure data merge.\\n\\n- `resolveAppConfig` validates slot/category/mode constraints when `integrationConnections` and `integrationSpecs` are provided.\\n- `branding` merges blueprint defaults with tenant overrides, producing a runtime-friendly shape (resolved asset URLs, color values, and effective domain).\\n\\n### Materializing specs\\n\\n`composeAppConfig(blueprint, tenant, registries, { strict })`:\\n\\n1. Calls `resolveAppConfig` to build the merged pointers.\\n2. Looks up referenced specs in the provided registries.\\n3. Returns:\\n - `resolved` \\u2013 the merged pointer view\\n - `capabilities`, `features`, `dataViews`, `workflows`, `policies`, `theme`, `telemetry`, `experiments`\\n - `missing` \\u2013 unresolved references (strict mode throws).\\n\\n```ts\\nconst blueprint = blueprintRegistry.get('core.app', 1)!;\\nconst tenant = loadTenantConfigFromDB();\\n\\nconst composition = composeAppConfig(blueprint, tenant, {\\n capabilities,\\n features,\\n dataViews,\\n workflows,\\n policies,\\n themes,\\n telemetry,\\n experiments,\\n});\\n\\nif (composition.missing.length) {\\n console.warn('Unresolved references', composition.missing);\\n}\\n```\\n\\n### CLI workflow\\n\\n```\\ncontractspec create app-config\\n```\\n\\nGenerates an `AppBlueprintSpec`. A separate flow will later scaffold tenant configs.\\n\\n### Best practices\\n\\n1. Keep blueprint and tenant versions monotonic; bump when referenced spec versions change.\\n2. Favor stable slot keys (e.g. `dataViews.dashboard`) to align with Studio UX.\\n3. Reference telemetry and experiments declared in their respective specs to maintain observability.\\n4. Run `resolveAppConfig` in pure unit tests and `composeAppConfig(..., { strict: true })` in CI to catch drift early.\\n5. Pair resolved configs with `TestSpec` scenarios to guard tenant experiences end-to-end.\\n\\n### Static validation\\n\\nUse the validation helpers in `@lssm/lib.contracts/app-config/validation` to keep blueprints and tenant configs safe before publish time.\\n\\n```ts\\nimport {\\n validateConfig,\\n validateBlueprint,\\n validateTenantConfig,\\n validateResolvedConfig,\\n} from '@lssm/lib.contracts/app-config/validation';\\n\\nconst context = {\\n integrationSpecs,\\n tenantConnections,\\n knowledgeSpaces,\\n knowledgeSources,\\n translationCatalogs: {\\n blueprint: blueprintCatalog,\\n platform: platformCatalog,\\n },\\n existingConfigs,\\n};\\n\\nconst blueprintReport = validateBlueprint(blueprint, context);\\nconst tenantReport = validateTenantConfig(blueprint, tenant, context);\\nconst publishReport = validateConfig(blueprint, tenant, context);\\n```\\n\\n- `ValidationResult` exposes `valid`, plus structured `errors`, `warnings`, and `info`.\\n- Core rules cover capability references, integration slot bindings (category/ownership/capabilities), knowledge bindings, branding constraints (domains + assets), and translation coverage.\\n- Call `validateBlueprint` in CI when committing new specs, and `validateConfig` before promoting/publishing a tenant config.\\n- `validateResolvedConfig` can be used as a runtime pre-flight check when composing full configs for workflows.\\n- CLI usage example (blueprint + tenant):\\n\\n```\\npnpm contractspec validate \\\\\\n packages/examples/integration-stripe/blueprint.ts \\\\\\n --blueprint packages/examples/integration-stripe/blueprint.ts \\\\\\n --tenant-config packages/examples/integration-stripe/tenant.ts\\n```\\n- Repository script:\\n\\n```\\nbun run validate:blueprints\\n```\\n\\nRuns the static validator for the sample blueprints/tenants and is wired into CI.\\n\\n\\n### Lifecycle types & events\\n\\nTo model multi-step configuration changes, use the lifecycle helpers exported from `@lssm/lib.contracts/app-config`:\\n\\n```ts\\nimport type {\\n ConfigStatus,\\n TenantAppConfigVersion,\\n ConfigTransition,\\n} from '@lssm/lib.contracts/app-config';\\nimport {\\n ConfigDraftCreatedEvent,\\n ConfigPromotedToPreviewEvent,\\n ConfigPublishedEvent,\\n ConfigRolledBackEvent,\\n} from '@lssm/lib.contracts/app-config';\\n```\\n\\n- `ConfigStatus` enumerates the canonical states: `draft`, `preview`, `published`, `archived`, `superseded`.\\n- `TenantAppConfigMeta` now includes lifecycle metadata (`status`, `createdBy`, `publishedBy`, `publishedAt`, `rolledBackFrom`, `rolledBackTo`, `changeSummary`).\\n- `TenantAppConfigVersion` couples the lifecycle-aware metadata with the `TenantAppConfig` payload for history views.\\n- `ConfigTransition` captures state changes with actor, timestamp, and optional reason.\\n- Lifecycle events (`app_config.draft_created`, `app_config.promoted_to_preview`, `app_config.published`, `app_config.rolled_back`) standardize observability across services.\\n- Lifecycle contract specs (`appConfig.lifecycle.*`) expose typed commands/queries for create \\u2192 preview \\u2192 publish \\u2192 rollback flows.\\n\\n\",\n },\n];\nregisterDocBlocks(tech_contracts_app_config_DocBlocks);\n"],"mappings":";;;;AAGA,MAAaA,sCAAkD,CAC7D;CACE,IAAI;CACJ,OAAO;CACP,SAAS;CACT,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM;EAAC;EAAQ;EAAa;EAAa;CACzC,MAAM;CACP,CACF;AACD,kBAAkB,oCAAoC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","names":[],"sources":["../../src/app-config/events.ts"],"sourcesContent":[],"mappings":";;;;;;cAca,yBAAuB,UAAA;;UAuBlC,kBAAA,CAAA;;;EAvBW,KAAA,EAAA;IAuBX,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EAvBkC,aAAA,EAAA;IAAA,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAyBvB,CAAA;EAmBX,gBAAA,EAAA;;;;;IAnBuC,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAAA,CAAA;EAqB5B,UAAA,EAAA;IA8BX,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;cAnDW,8BAA4B,UAAA;;UAmBvC,kBAAA,CAAA;IAE+B,UAAA,EAAA,KAAA;EAAA,CAAA;EAAA,KAAA,EAAA;IAgCpB,IAAA,8BA0BX,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;IA1BgC,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAAA,CAAA;;;;;;;cAhCrB,sBAAoB,UAAA;;UA8B/B,kBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEW,uBAAqB,UAAA;;UA0BhC,kBAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","names":["SchemaModel","ScalarTypeEnum"],"sources":["../../src/app-config/events.ts"],"sourcesContent":["import { SchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';\nimport { defineEvent } from '../events';\nimport { OwnersEnum, StabilityEnum, TagsEnum } from '../ownership';\n\nconst lifecycleOwnership = {\n title: 'Tenant App Config Lifecycle',\n description:\n 'Events emitted when tenant app configurations move through lifecycle stages.',\n domain: 'app-config.lifecycle',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene],\n stability: StabilityEnum.Beta,\n};\n\nexport const ConfigDraftCreatedEvent = defineEvent({\n name: 'app_config.draft_created',\n version: 1,\n description: 'A new tenant config draft was created.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigDraftCreatedPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n blueprintName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n blueprintVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n clonedFrom: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n }),\n});\n\nexport const ConfigPromotedToPreviewEvent = defineEvent({\n name: 'app_config.promoted_to_preview',\n version: 1,\n description: 'A tenant config draft was promoted to preview.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigPromotedToPreviewPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n promotedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n warnings: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n }),\n});\n\nexport const ConfigPublishedEvent = defineEvent({\n name: 'app_config.published',\n version: 1,\n description: 'A tenant config version was published to production.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigPublishedPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n previousVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n publishedBy: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n changeSummary: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n changedSections: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n }),\n});\n\nexport const ConfigRolledBackEvent = defineEvent({\n name: 'app_config.rolled_back',\n version: 1,\n description: 'A tenant config was rolled back to a previous version.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigRolledBackPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n newVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n rolledBackFrom: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n rolledBackTo: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n rolledBackBy: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n }),\n});\n"],"mappings":";;;;;AAIA,MAAM,qBAAqB;CACzB,OAAO;CACP,aACE;CACF,QAAQ;CACR,QAAQ,CAAC,WAAW,cAAc;CAClC,MAAM,CAAC,SAAS,QAAQ;CACxB,WAAW,cAAc;CAC1B;AAED,MAAa,0BAA0B,YAAY;CACjD,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAIA,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,SAAS;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACnE,eAAe;IACb,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,kBAAkB;IAChB,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,WAAW;IAAE,MAAMA,GAAe,iBAAiB;IAAE,YAAY;IAAO;GACxE,YAAY;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAM;GACtE;EACF,CAAC;CACH,CAAC;AAEF,MAAa,+BAA+B,YAAY;CACtD,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAID,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,SAAS;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACnE,YAAY;IAAE,MAAMA,GAAe,iBAAiB;IAAE,YAAY;IAAO;GACzE,UAAU;IACR,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACZ,SAAS;IACV;GACF;EACF,CAAC;CACH,CAAC;AAEF,MAAa,uBAAuB,YAAY;CAC9C,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAID,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,SAAS;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACnE,iBAAiB;IACf,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,aAAa;IACX,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,eAAe;IACb,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,iBAAiB;IACf,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACZ,SAAS;IACV;GACF;EACF,CAAC;CACH,CAAC;AAEF,MAAa,wBAAwB,YAAY;CAC/C,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAID,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,YAAY;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACtE,gBAAgB;IACd,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,cAAc;IACZ,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,cAAc;IACZ,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,QAAQ;IAAE,MAAMA,GAAe,iBAAiB;IAAE,YAAY;IAAO;GACtE;EACF,CAAC;CACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle-contracts.d.ts","names":[],"sources":["../../src/app-config/lifecycle-contracts.ts"],"sourcesContent":[],"mappings":";;;;;;;;cA2Ea,gCAA8B,aAAA;;UAyBzC,mBAAA,CAAA;;;EAzBW,KAAA,EAAA;IAyBX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EAzByC,gBAAA,EAAA;IAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;EAAA,CAAA;CAAA,CAAA,aAAA,CAAA;EAkD9B,OAAA,EAAA;IAyBX,IAAA,EA3EyC,mBAAA,CAAA,SA2EzC,CAAA,MAAA,EAAA,MAAA,CAAA;;;;IAzB8C,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;IAAA,CAAA;IAAA,KAAA,EAAA;MAoDnC,IAAA,+BAyBX,CAAA,MAAA,EAAA,MAAA,CAAA;MAAA,UAAA,EAAA,KAAA;;;;;;IAzBqC,aAAA,EAAA;MAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;EAAA,CAAA,CAAA,CAAA;EAAA,IAAA,EAAA,MAAA;AAgDvC,CAAA,EAAA,CAAa;AAyBX,cA7HW,mCA6HX,EA7H8C,YA6H9C,CA7H8C,WA6H9C,CAAA;;UApGA,mBAAA,CAAA;;;;IA2EsC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;UApGQ,mBAAA,CAAA;IAoGR,UAAA,EAAA,KAAA;EAAA,CAAA;EA+C3B,MAAA,EAAA;IAiBX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;EAjBwC,CAAA;;;;;;;;;;;;;;;;;;;IAAA,CAAA;IAAA,UAAA,EAAA;MAmC7B,IAAA,+BAiBX,CAAA,MAAA,EAAA,MAAA,CAAA;MAAA,UAAA,EAAA,KAAA;;;MAjBsC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;cAlI3B,4BAA0B,aAAA;;IAkIC,IAAA,EAzGtC,mBAAA,CAAA,SAyGsC,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAmB3B,CAAA;EASG,KAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;UA9JuB,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgD1B,6BAA2B,aAAA;;UAyBtC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;UAzBsC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+C3B,+BAA6B,aAAA;;UAiBxC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkBW,6BAA2B,aAAA;;UAiBtC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAEW,oBAAoB,eAAe;iBAShC,mCAAA,WAA8C,eAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle-contracts.js","names":["SchemaModel","ScalarTypeEnum","lifecycleContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../src/app-config/lifecycle-contracts.ts"],"sourcesContent":["import { SchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';\nimport type { ContractSpec } from '../spec';\nimport { defineCommand, defineQuery } from '../spec';\nimport { OwnersEnum, StabilityEnum, TagsEnum } from '../ownership';\nimport type { SpecRegistry } from '../registry';\nimport {\n ConfigDraftCreatedEvent,\n ConfigPromotedToPreviewEvent,\n ConfigPublishedEvent,\n ConfigRolledBackEvent,\n} from './events';\n\nconst LifecyclePolicy = {\n auth: 'admin' as const,\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n};\n\nconst LifecycleReadPolicy = {\n auth: 'admin' as const,\n policies: [{ name: 'platform.app-config.read', version: 1 }],\n};\n\nconst ConfigVersionRecord = new SchemaModel({\n name: 'ConfigVersionRecord',\n fields: {\n meta: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n});\n\nconst ConfigTransitionRecord = new SchemaModel({\n name: 'ConfigTransitionRecord',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n fromStatus: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n toStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n actor: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst CreateDraftInput = new SchemaModel({\n name: 'CreateTenantConfigDraftInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n blueprintName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n blueprintVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n fromVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst CreateDraftOutput = new SchemaModel({\n name: 'CreateTenantConfigDraftOutput',\n fields: {\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CreateTenantConfigDraftCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.createDraft',\n version: 1,\n description: 'Creates a new draft tenant config version.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Allow operators to start editing a new tenant config version.',\n context:\n 'Invoked by the Studio or automation when starting a new configuration run.',\n },\n io: {\n input: CreateDraftInput,\n output: CreateDraftOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigDraftCreatedEvent,\n when: 'after successful draft creation',\n },\n ],\n },\n});\n\nconst PromotePreviewInput = new SchemaModel({\n name: 'PromoteTenantConfigPreviewInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n promotedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst PromotePreviewOutput = new SchemaModel({\n name: 'PromoteTenantConfigPreviewOutput',\n fields: {\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n warnings: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n});\n\nexport const PromoteTenantConfigToPreviewCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.promoteToPreview',\n version: 1,\n description: 'Promotes a draft tenant config to preview/testing state.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Enable validation and testing of draft configurations.',\n context:\n 'Called when a draft passes initial checks and should be exposed to preview environments.',\n },\n io: {\n input: PromotePreviewInput,\n output: PromotePreviewOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigPromotedToPreviewEvent,\n when: 'after promotion to preview',\n },\n ],\n },\n});\n\nconst PublishConfigInput = new SchemaModel({\n name: 'PublishTenantConfigInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n publishedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n changeSummary: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n },\n});\n\nconst PublishConfigOutput = new SchemaModel({\n name: 'PublishTenantConfigOutput',\n fields: {\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n publishedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const PublishTenantConfigCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.publish',\n version: 1,\n description: 'Publishes a preview tenant config to production.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Promote tested configurations to production safely.',\n context:\n 'Triggered after validation passes and change management approvals are complete.',\n },\n io: {\n input: PublishConfigInput,\n output: PublishConfigOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigPublishedEvent,\n when: 'after publish succeeds',\n },\n ],\n },\n});\n\nconst RollbackConfigInput = new SchemaModel({\n name: 'RollbackTenantConfigInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n toVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n rolledBackBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst RollbackConfigOutput = new SchemaModel({\n name: 'RollbackTenantConfigOutput',\n fields: {\n newVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n rolledBackFrom: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n },\n});\n\nexport const RollbackTenantConfigCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.rollback',\n version: 1,\n description: 'Rolls back to a previously published tenant config version.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide rapid recovery when new configs regress production.',\n context:\n 'Called manually or automatically when monitoring detects regression and a rollback is required.',\n },\n io: {\n input: RollbackConfigInput,\n output: RollbackConfigOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigRolledBackEvent,\n when: 'after rollback completes',\n },\n ],\n },\n});\n\nconst ListVersionsInput = new SchemaModel({\n name: 'ListTenantConfigVersionsInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst ListVersionsOutput = new SchemaModel({\n name: 'ListTenantConfigVersionsOutput',\n fields: {\n versions: { type: ConfigVersionRecord, isOptional: false, isArray: true },\n transitions: {\n type: ConfigTransitionRecord,\n isOptional: true,\n isArray: true,\n },\n },\n});\n\nexport const ListTenantConfigVersionsQuery = defineQuery({\n meta: {\n name: 'appConfig.lifecycle.listVersions',\n version: 1,\n description: 'Lists all versions of a tenant configuration.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['app-config', TagsEnum.Hygiene],\n stability: StabilityEnum.Experimental,\n goal: 'Support lifecycle views and change audit tooling.',\n context:\n 'Used by the Studio to render history timelines and by automation for change tracking.',\n },\n io: {\n input: ListVersionsInput,\n output: ListVersionsOutput,\n },\n policy: LifecycleReadPolicy,\n});\n\nconst GetVersionInput = new SchemaModel({\n name: 'GetTenantConfigVersionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n },\n});\n\nconst GetVersionOutput = new SchemaModel({\n name: 'GetTenantConfigVersionOutput',\n fields: {\n version: { type: ConfigVersionRecord, isOptional: false },\n },\n});\n\nexport const GetTenantConfigVersionQuery = defineQuery({\n meta: {\n name: 'appConfig.lifecycle.getVersion',\n version: 1,\n description: 'Fetches a single tenant config version by id.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['app-config', TagsEnum.Hygiene],\n stability: StabilityEnum.Experimental,\n goal: 'Allow detail drill-down for lifecycle entries.',\n context:\n 'Used by automation to fetch config payloads for comparison or export.',\n },\n io: {\n input: GetVersionInput,\n output: GetVersionOutput,\n },\n policy: LifecycleReadPolicy,\n});\n\nexport const lifecycleContracts: Record<string, ContractSpec<any, any>> = {\n CreateTenantConfigDraftCommand,\n PromoteTenantConfigToPreviewCommand,\n PublishTenantConfigCommand,\n RollbackTenantConfigCommand,\n ListTenantConfigVersionsQuery,\n GetTenantConfigVersionQuery,\n};\n\nexport function registerAppConfigLifecycleContracts(registry: SpecRegistry) {\n return registry\n .register(CreateTenantConfigDraftCommand)\n .register(PromoteTenantConfigToPreviewCommand)\n .register(PublishTenantConfigCommand)\n .register(RollbackTenantConfigCommand)\n .register(ListTenantConfigVersionsQuery)\n .register(GetTenantConfigVersionQuery);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lifecycle.d.ts","names":[],"sources":["../../src/app-config/lifecycle.ts"],"sourcesContent":[],"mappings":";;;KAEY,YAAA;UAOK,sBAAA;EAPL,IAAA,EAQJ,eARgB,CAAA,MAAA,CAAA;EAOP,MAAA,EAEP,eAFO;AAKjB;AAGc,UAHG,gBAAA,CAGH;EACF,QAAA,EAAA,MAAA;EAEU,KAAA,EAAA,MAAA;EAAI,UAAA,EAHZ,YAGY;EAKT,QAAA,EAPL,YAOK;;sBALK;;;;UAKL,oBAAA;;;YAGL;eACG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","names":[],"sources":["../../src/app-config/runtime.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","names":["missing: MissingReference[]","merged: Record<string, SpecPointer>","binding: TelemetryBinding","localePreferenceOrder: string[]","appName: string | undefined","assets","assets: ResolvedBranding['assets']","colors: ResolvedBranding['colors']","resolved: ResolvedIntegration[]","resolved: CapabilitySpec[]","resolved: FeatureModuleSpec[]","resolved: Record<string, TSpec>","resolved: PolicySpec[]","themeMissing: MissingReference[]","fallbacks: ThemeSpec[]","telemetryMissing: MissingReference[]","resolved: ExperimentSpec[]"],"sources":["../../src/app-config/runtime.ts"],"sourcesContent":["import type {\n CapabilityRef,\n CapabilityRegistry,\n CapabilitySpec,\n} from '../capabilities';\nimport type {\n FeatureRegistry,\n FeatureModuleSpec,\n FeatureRef,\n} from '../features';\nimport type { DataViewRegistry, DataViewSpec } from '../data-views';\nimport type { WorkflowRegistry, WorkflowSpec } from '../workflow/spec';\nimport type { PolicyRef, PolicyRegistry, PolicySpec } from '../policy/spec';\nimport type { ThemeRegistry, ThemeSpec } from '../themes';\nimport type { TelemetryRegistry, TelemetrySpec } from '../telemetry/spec';\nimport type {\n ExperimentRef,\n ExperimentRegistry,\n ExperimentSpec,\n} from '../experiments/spec';\nimport type {\n IntegrationSpec,\n IntegrationSpecRegistry,\n} from '../integrations/spec';\nimport type { IntegrationConnection } from '../integrations/connection';\nimport type { AppIntegrationBinding } from '../integrations/binding';\nimport type {\n KnowledgeSpaceSpec,\n KnowledgeSpaceRegistry,\n} from '../knowledge/spec';\nimport type { KnowledgeSourceConfig } from '../knowledge/source';\nimport type { AppKnowledgeBinding } from '../knowledge/binding';\nimport type {\n BrandingAssetRef,\n BrandingDefaults,\n ResolvedBranding,\n TenantBrandingAsset,\n TenantBrandingConfig,\n} from './branding';\nimport type { Locale, TranslationEntry } from '../translations/catalog';\nimport type {\n AppBlueprintSpec,\n AppIntegrationSlot,\n AppRouteConfig,\n AppThemeBinding,\n FeatureFlagState,\n SpecPointer,\n TelemetryBinding,\n TenantAppConfig,\n TenantRouteOverride,\n TenantSpecOverride,\n TranslationCatalogPointer,\n} from './spec';\n\nexport interface ResolvedIntegration {\n slot: AppIntegrationSlot;\n binding: AppIntegrationBinding;\n connection: IntegrationConnection;\n spec: IntegrationSpec;\n}\n\nexport interface ResolvedKnowledge {\n binding: AppKnowledgeBinding;\n space: KnowledgeSpaceSpec;\n sources: KnowledgeSourceConfig[];\n}\n\nexport interface ResolvedTranslation {\n defaultLocale: Locale;\n supportedLocales: Locale[];\n blueprintCatalog?: TranslationCatalogPointer;\n tenantOverrides: TranslationEntry[];\n}\n\nexport interface ResolvedAppConfig {\n appId: string;\n tenantId: string;\n environment?: string;\n blueprintName: string;\n blueprintVersion: number;\n configVersion: number;\n capabilities: {\n enabled: CapabilityRef[];\n disabled: CapabilityRef[];\n };\n features: {\n include: FeatureRef[];\n exclude: FeatureRef[];\n };\n dataViews: Record<string, SpecPointer>;\n workflows: Record<string, SpecPointer>;\n policies: PolicyRef[];\n theme?: AppThemeBinding;\n telemetry?: TelemetryBinding;\n experiments: {\n catalog: ExperimentRef[];\n active: ExperimentRef[];\n paused: ExperimentRef[];\n };\n featureFlags: FeatureFlagState[];\n routes: AppRouteConfig[];\n integrations: ResolvedIntegration[];\n knowledge: ResolvedKnowledge[];\n translation: ResolvedTranslation;\n branding: ResolvedBranding;\n notes?: string;\n}\n\nexport interface AppComposition {\n resolved: ResolvedAppConfig;\n capabilities: CapabilitySpec[];\n features: FeatureModuleSpec[];\n dataViews: Record<string, DataViewSpec>;\n workflows: Record<string, WorkflowSpec>;\n policies: PolicySpec[];\n theme?: ThemeSpec;\n themeFallbacks: ThemeSpec[];\n telemetry?: TelemetrySpec;\n experiments: {\n active: ExperimentSpec[];\n paused: ExperimentSpec[];\n };\n integrations: ResolvedIntegration[];\n knowledge: ResolvedKnowledge[];\n missing: MissingReference[];\n}\n\nexport interface MissingReference {\n type:\n | 'capability'\n | 'feature'\n | 'dataView'\n | 'workflow'\n | 'policy'\n | 'theme'\n | 'telemetry'\n | 'experiment'\n | 'integrationConnection'\n | 'integrationSpec'\n | 'integrationSlot'\n | 'knowledgeSpace'\n | 'knowledgeSource';\n identifier: string;\n}\n\nexport interface ResolveAppConfigDeps {\n integrationSpecs?: IntegrationSpecRegistry;\n integrationConnections?: IntegrationConnection[];\n knowledgeSpaces?: KnowledgeSpaceRegistry;\n knowledgeSources?: KnowledgeSourceConfig[];\n}\n\nexport interface AppCompositionDeps extends ResolveAppConfigDeps {\n capabilities?: CapabilityRegistry;\n features?: FeatureRegistry;\n dataViews?: DataViewRegistry;\n workflows?: WorkflowRegistry;\n policies?: PolicyRegistry;\n themes?: ThemeRegistry;\n telemetry?: TelemetryRegistry;\n experiments?: ExperimentRegistry;\n}\n\nexport interface ComposeOptions {\n strict?: boolean;\n}\n\nexport function resolveAppConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n deps: ResolveAppConfigDeps = {}\n): ResolvedAppConfig {\n const capabilities = mergeCapabilities(\n blueprint.capabilities,\n tenant.capabilities\n );\n const features = mergeFeatures(blueprint.features, tenant.features);\n const dataViews = mergeMappings(\n blueprint.dataViews ?? {},\n tenant.dataViewOverrides\n );\n const workflows = mergeMappings(\n blueprint.workflows ?? {},\n tenant.workflowOverrides\n );\n const policies = mergePolicies(\n blueprint.policies ?? [],\n tenant.additionalPolicies ?? []\n );\n const theme = mergeTheme(blueprint.theme, tenant.themeOverride);\n const telemetry = mergeTelemetry(\n blueprint.telemetry,\n tenant.telemetryOverride\n );\n const experiments = mergeExperiments(\n blueprint.experiments,\n tenant.experiments\n );\n const featureFlags = mergeFeatureFlags(\n blueprint.featureFlags ?? [],\n tenant.featureFlags ?? []\n );\n const routes = mergeRoutes(\n blueprint.routes ?? [],\n tenant.routeOverrides ?? []\n );\n const { resolved: integrations } = evaluateIntegrationSlots(\n blueprint.integrationSlots,\n tenant.integrations,\n deps.integrationConnections,\n deps.integrationSpecs\n );\n const knowledge = resolveKnowledgeBindings(\n tenant.knowledge,\n deps.knowledgeSpaces,\n deps.knowledgeSources\n );\n const branding = resolveBranding(blueprint.branding, tenant);\n const translation = resolveTranslation(\n blueprint.translationCatalog,\n tenant.locales,\n tenant.translationOverrides\n );\n\n return {\n appId: blueprint.meta.appId,\n tenantId: tenant.meta.tenantId,\n environment: tenant.meta.environment,\n blueprintName: blueprint.meta.name,\n blueprintVersion: blueprint.meta.version,\n configVersion: tenant.meta.version,\n capabilities,\n features,\n dataViews,\n workflows,\n policies,\n theme,\n telemetry,\n experiments,\n featureFlags,\n routes,\n integrations,\n knowledge,\n translation,\n branding,\n notes: tenant.notes ?? blueprint.notes,\n };\n}\n\nexport function composeAppConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n deps: AppCompositionDeps,\n options: ComposeOptions = {}\n): AppComposition {\n const resolved = resolveAppConfig(blueprint, tenant, deps);\n const missing: MissingReference[] = [];\n\n const integrationEvaluation = evaluateIntegrationSlots(\n blueprint.integrationSlots,\n tenant.integrations,\n deps.integrationConnections,\n deps.integrationSpecs\n );\n resolved.integrations = integrationEvaluation.resolved;\n missing.push(...integrationEvaluation.missing);\n missing.push(\n ...collectMissingKnowledge(\n tenant.knowledge ?? [],\n deps.knowledgeSpaces,\n deps.knowledgeSources\n )\n );\n\n const capabilities = resolveCapabilityRefs(\n resolved.capabilities.enabled,\n deps.capabilities,\n missing\n );\n\n const features = resolveFeatureRefs(\n resolved.features.include,\n deps.features,\n missing\n );\n\n const dataViews = resolvePointerRecord(\n resolved.dataViews,\n deps.dataViews,\n 'dataView',\n missing\n );\n\n const workflows = resolvePointerRecord(\n resolved.workflows,\n deps.workflows,\n 'workflow',\n missing\n );\n\n const policies = resolvePolicies(resolved.policies, deps.policies, missing);\n\n const { theme, fallbacks, themeMissing } = resolveThemeBinding(\n resolved.theme,\n deps.themes\n );\n missing.push(...themeMissing);\n\n const { telemetry, telemetryMissing } = resolveTelemetryBinding(\n resolved.telemetry,\n deps.telemetry\n );\n missing.push(...telemetryMissing);\n\n const experiments = resolveExperimentsSpecs(\n resolved.experiments,\n deps.experiments,\n missing\n );\n\n if (options.strict && missing.length > 0) {\n const reasons = missing\n .map((item) => `${item.type}:${item.identifier}`)\n .join(', ');\n throw new Error(`composeAppConfig: missing references -> ${reasons}`);\n }\n\n return {\n resolved,\n capabilities,\n features,\n dataViews,\n workflows,\n policies,\n theme,\n themeFallbacks: fallbacks,\n telemetry,\n experiments,\n integrations: resolved.integrations,\n knowledge: resolved.knowledge,\n missing,\n };\n}\n\nfunction mergeCapabilities(\n blueprint: AppBlueprintSpec['capabilities'],\n tenant: TenantAppConfig['capabilities']\n): { enabled: CapabilityRef[]; disabled: CapabilityRef[] } {\n const enabled = dedupeRefs(\n [...(blueprint?.enabled ?? []), ...(tenant?.enable ?? [])],\n capabilityKey\n );\n const disabled = dedupeRefs(\n [...(blueprint?.disabled ?? []), ...(tenant?.disable ?? [])],\n capabilityKey\n );\n const disabledKeys = new Set(disabled.map(capabilityKey));\n const filteredEnabled = enabled.filter(\n (ref) => !disabledKeys.has(capabilityKey(ref))\n );\n return { enabled: filteredEnabled, disabled };\n}\n\nfunction mergeFeatures(\n blueprint: AppBlueprintSpec['features'],\n tenant: TenantAppConfig['features']\n): { include: FeatureRef[]; exclude: FeatureRef[] } {\n const include = dedupeRefs(\n [...(blueprint?.include ?? []), ...(tenant?.include ?? [])],\n featureKey\n );\n const exclude = dedupeRefs(\n [...(blueprint?.exclude ?? []), ...(tenant?.exclude ?? [])],\n featureKey\n );\n const excludeSet = new Set(exclude.map(featureKey));\n const filteredInclude = include.filter(\n (ref) => !excludeSet.has(featureKey(ref))\n );\n return { include: filteredInclude, exclude };\n}\n\nfunction mergeMappings(\n blueprint: Record<string, SpecPointer>,\n overrides: TenantSpecOverride[] | undefined\n): Record<string, SpecPointer> {\n const merged: Record<string, SpecPointer> = { ...blueprint };\n if (!overrides) return merged;\n for (const override of overrides) {\n if (!override) continue;\n if (!override.pointer) {\n delete merged[override.slot];\n } else {\n merged[override.slot] = override.pointer;\n }\n }\n return merged;\n}\n\nfunction mergePolicies(\n blueprint: PolicyRef[],\n additional: PolicyRef[]\n): PolicyRef[] {\n return dedupeRefs([...blueprint, ...additional], policyKey);\n}\n\nfunction mergeTheme(\n blueprint: AppThemeBinding | undefined,\n override: TenantAppConfig['themeOverride']\n): AppThemeBinding | undefined {\n if (!blueprint && !override) return undefined;\n const primary = override?.primary ?? blueprint?.primary;\n if (!primary) return undefined;\n const fallbacks = override?.fallbacks ?? blueprint?.fallbacks ?? [];\n return { primary, fallbacks };\n}\n\nfunction mergeTelemetry(\n blueprint: TelemetryBinding | undefined,\n override: TenantAppConfig['telemetryOverride']\n): TelemetryBinding | undefined {\n if (!blueprint && !override) return undefined;\n const binding: TelemetryBinding = {\n spec: blueprint?.spec,\n disabledEvents: blueprint?.disabledEvents\n ? [...blueprint.disabledEvents]\n : undefined,\n samplingOverrides: blueprint?.samplingOverrides\n ? { ...blueprint.samplingOverrides }\n : undefined,\n };\n if (override?.spec !== undefined) {\n binding.spec = override.spec ?? undefined;\n }\n if (override?.disabledEvents) {\n binding.disabledEvents = dedupeStrings([\n ...(binding.disabledEvents ?? []),\n ...override.disabledEvents,\n ]);\n }\n if (override?.samplingOverrides) {\n binding.samplingOverrides = {\n ...(binding.samplingOverrides ?? {}),\n ...override.samplingOverrides,\n };\n }\n if (!binding.spec && !binding.disabledEvents?.length) {\n return undefined;\n }\n return binding;\n}\n\nfunction mergeExperiments(\n blueprint: AppBlueprintSpec['experiments'],\n tenant: TenantAppConfig['experiments']\n): {\n catalog: ExperimentRef[];\n active: ExperimentRef[];\n paused: ExperimentRef[];\n} {\n const defaultActive = blueprint?.active ?? [];\n const defaultPaused = blueprint?.paused ?? [];\n const tenantActive = tenant?.active;\n const tenantPaused = tenant?.paused;\n\n const activeSource =\n tenantActive && tenantActive.length > 0 ? tenantActive : defaultActive;\n const pausedSource =\n tenantPaused && tenantPaused.length > 0 ? tenantPaused : defaultPaused;\n\n const active = dedupeRefs(activeSource, experimentKey);\n let paused = dedupeRefs(pausedSource, experimentKey);\n const activeKeys = new Set(active.map(experimentKey));\n paused = paused.filter((ref) => !activeKeys.has(experimentKey(ref)));\n\n const catalog = dedupeRefs(\n [\n ...defaultActive,\n ...defaultPaused,\n ...(tenantActive ?? []),\n ...(tenantPaused ?? []),\n ],\n experimentKey\n );\n\n return { catalog, active, paused };\n}\n\nfunction resolveBranding(\n defaults: BrandingDefaults | undefined,\n tenant: TenantAppConfig\n): ResolvedBranding {\n const override = tenant.branding;\n const tenantMeta = tenant.meta;\n const baseDomain = 'app.localhost';\n const domain =\n override?.customDomain ??\n (override?.subdomain\n ? `${override.subdomain}.${baseDomain}`\n : `${tenantMeta.tenantId}.${baseDomain}`);\n\n const localePreferenceOrder: string[] = [];\n if (tenant.locales?.defaultLocale) {\n localePreferenceOrder.push(tenant.locales.defaultLocale);\n }\n if (override?.appName) {\n localePreferenceOrder.push('default', 'en');\n }\n\n let appName: string | undefined;\n if (override?.appName) {\n for (const key of localePreferenceOrder) {\n const candidate = override.appName[key];\n if (candidate) {\n appName = candidate;\n break;\n }\n }\n if (!appName) {\n const [, firstValue] = Object.entries(override.appName)[0] ?? [];\n if (typeof firstValue === 'string') {\n appName = firstValue;\n }\n }\n }\n if (!appName) {\n appName = defaults?.appNameKey ?? tenantMeta.appId;\n }\n\n const assetEntries = new Map<BrandingAssetRef['type'], string | undefined>();\n\n const applyAssets = (assets?: (BrandingAssetRef | TenantBrandingAsset)[]) => {\n if (!assets) return;\n for (const asset of assets) {\n if (!asset?.type) continue;\n if ('url' in asset && asset.url) {\n assetEntries.set(asset.type, asset.url);\n }\n }\n };\n\n applyAssets(defaults?.assets);\n applyAssets(override?.assets);\n\n const assets: ResolvedBranding['assets'] = {\n logo: assetEntries.get('logo'),\n logoDark: assetEntries.get('logo-dark'),\n favicon: assetEntries.get('favicon'),\n ogImage: assetEntries.get('og-image'),\n };\n\n const colors: ResolvedBranding['colors'] = {\n primary:\n override?.colors?.primary ?? defaults?.colorTokens?.primary ?? '#1f2937',\n secondary:\n override?.colors?.secondary ??\n defaults?.colorTokens?.secondary ??\n '#4b5563',\n };\n\n return {\n appName,\n assets,\n colors,\n domain,\n };\n}\n\nfunction resolveTranslation(\n catalogPointer: TranslationCatalogPointer | undefined,\n locales: TenantAppConfig['locales'],\n overrides: TenantAppConfig['translationOverrides']\n): ResolvedTranslation {\n const defaultLocale = locales?.defaultLocale ?? 'en';\n const enabled = locales?.enabledLocales ?? [];\n const supportedLocales = dedupeStrings([defaultLocale, ...enabled]);\n const entries = overrides?.entries ?? [];\n\n return {\n defaultLocale,\n supportedLocales,\n blueprintCatalog: catalogPointer,\n tenantOverrides: entries,\n };\n}\n\nfunction mergeFeatureFlags(\n blueprint: FeatureFlagState[],\n overrides: FeatureFlagState[]\n): FeatureFlagState[] {\n const merged = new Map<string, FeatureFlagState>();\n for (const flag of blueprint) {\n merged.set(flag.key, { ...flag });\n }\n for (const override of overrides) {\n merged.set(override.key, { ...override });\n }\n return [...merged.values()];\n}\n\nfunction mergeRoutes(\n blueprint: AppRouteConfig[],\n overrides: TenantRouteOverride[]\n): AppRouteConfig[] {\n const routes = new Map<string, AppRouteConfig>();\n for (const route of blueprint) {\n routes.set(route.path, { ...route });\n }\n for (const override of overrides) {\n const existing = routes.get(override.path) ?? { path: override.path };\n if (override.label !== undefined) {\n if (override.label === null) delete existing.label;\n else existing.label = override.label;\n }\n if (override.dataView !== undefined) {\n if (override.dataView === null) delete existing.dataView;\n else existing.dataView = override.dataView;\n }\n if (override.workflow !== undefined) {\n if (override.workflow === null) delete existing.workflow;\n else existing.workflow = override.workflow;\n }\n if (override.guard !== undefined) {\n if (override.guard === null) delete existing.guard;\n else existing.guard = override.guard;\n }\n if (override.featureFlag !== undefined) {\n if (override.featureFlag === null) delete existing.featureFlag;\n else existing.featureFlag = override.featureFlag;\n }\n if (override.experiment !== undefined) {\n if (override.experiment === null) delete existing.experiment;\n else existing.experiment = override.experiment;\n }\n routes.set(existing.path, existing);\n }\n return [...routes.values()];\n}\n\nfunction evaluateIntegrationSlots(\n slots: AppIntegrationSlot[] | undefined,\n bindings: AppIntegrationBinding[] | undefined,\n connections: IntegrationConnection[] | undefined,\n specs: IntegrationSpecRegistry | undefined\n): { resolved: ResolvedIntegration[]; missing: MissingReference[] } {\n const resolved: ResolvedIntegration[] = [];\n const missing: MissingReference[] = [];\n const missingKeys = new Set<string>();\n\n const recordMissing = (entry: MissingReference) => {\n const key = `${entry.type}:${entry.identifier}`;\n if (missingKeys.has(key)) return;\n missingKeys.add(key);\n missing.push(entry);\n };\n\n const slotList = slots ?? [];\n const slotById = new Map<string, AppIntegrationSlot>();\n for (const slot of slotList) {\n slotById.set(slot.slotId, slot);\n }\n\n const bindingsBySlot = new Map<string, AppIntegrationBinding[]>();\n for (const binding of bindings ?? []) {\n const slot = slotById.get(binding.slotId);\n if (!slot) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${binding.slotId}`,\n });\n continue;\n }\n const entries = bindingsBySlot.get(binding.slotId);\n if (entries) entries.push(binding);\n else bindingsBySlot.set(binding.slotId, [binding]);\n }\n\n for (const slot of slotList) {\n const slotBindings = bindingsBySlot.get(slot.slotId) ?? [];\n if (slot.required && slotBindings.length === 0) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${slot.slotId}`,\n });\n }\n }\n\n if (!connections || !specs) {\n return { resolved, missing };\n }\n\n const connectionById = new Map<string, IntegrationConnection>();\n for (const connection of connections) {\n connectionById.set(connection.meta.id, connection);\n }\n\n for (const slot of slotList) {\n const slotBindings = bindingsBySlot.get(slot.slotId) ?? [];\n if (slotBindings.length === 0) continue;\n\n const orderedBindings = [...slotBindings].sort((a, b) => {\n const aPriority = a.priority ?? Number.MAX_SAFE_INTEGER;\n const bPriority = b.priority ?? Number.MAX_SAFE_INTEGER;\n if (aPriority === bPriority) return 0;\n return aPriority < bPriority ? -1 : 1;\n });\n\n let slotResolved = false;\n for (const binding of orderedBindings) {\n const connection = connectionById.get(binding.connectionId);\n if (!connection) {\n recordMissing({\n type: 'integrationConnection',\n identifier: `connection:${binding.connectionId}`,\n });\n continue;\n }\n\n const spec = specs.get(\n connection.meta.integrationKey,\n connection.meta.integrationVersion\n );\n if (!spec) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${connection.meta.integrationKey}.v${connection.meta.integrationVersion}`,\n });\n continue;\n }\n\n if (spec.meta.category !== slot.requiredCategory) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.category`,\n });\n continue;\n }\n\n if (!spec.supportedModes.includes(connection.ownershipMode)) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.mode:${connection.ownershipMode}`,\n });\n continue;\n }\n\n if (\n slot.allowedModes &&\n slot.allowedModes.length > 0 &&\n !slot.allowedModes.includes(connection.ownershipMode)\n ) {\n recordMissing({\n type: 'integrationConnection',\n identifier: `connection:${connection.meta.id}:mode`,\n });\n continue;\n }\n\n if (\n slot.requiredCapabilities &&\n !slot.requiredCapabilities.every((requirement) =>\n integrationProvidesCapability(spec, requirement)\n )\n ) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.capabilities`,\n });\n continue;\n }\n\n resolved.push({\n slot,\n binding,\n connection,\n spec,\n });\n slotResolved = true;\n break;\n }\n\n if (!slotResolved && slot.required) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${slot.slotId}`,\n });\n }\n }\n\n return { resolved, missing };\n}\n\nfunction integrationProvidesCapability(\n spec: IntegrationSpec,\n required: CapabilityRef\n): boolean {\n return spec.capabilities.provides.some((capability) => {\n if (capability.key !== required.key) return false;\n if (required.version == null) return true;\n return capability.version === required.version;\n });\n}\n\nfunction resolveKnowledgeBindings(\n bindings: AppKnowledgeBinding[] | undefined,\n spaces: KnowledgeSpaceRegistry | undefined,\n sources: KnowledgeSourceConfig[] | undefined\n): ResolvedKnowledge[] {\n if (!bindings?.length || !spaces) return [];\n const sourceList = sources ?? [];\n return bindings\n .map((binding) => {\n const space = spaces.get(binding.spaceKey, binding.spaceVersion);\n if (!space) return null;\n const relevantSources = sourceList.filter((source) => {\n if (source.meta.spaceKey !== binding.spaceKey) return false;\n if (binding.spaceVersion != null) {\n return source.meta.spaceVersion === binding.spaceVersion;\n }\n return true;\n });\n return {\n binding,\n space,\n sources: relevantSources,\n };\n })\n .filter((entry): entry is ResolvedKnowledge => entry !== null);\n}\n\nfunction collectMissingKnowledge(\n bindings: AppKnowledgeBinding[],\n spaces: KnowledgeSpaceRegistry | undefined,\n sources: KnowledgeSourceConfig[] | undefined\n): MissingReference[] {\n if (!bindings.length || !spaces) return [];\n const missing: MissingReference[] = [];\n const sourceList = sources ?? [];\n\n for (const binding of bindings) {\n const space = spaces.get(binding.spaceKey, binding.spaceVersion);\n if (!space) {\n missing.push({\n type: 'knowledgeSpace',\n identifier: binding.spaceVersion\n ? `${binding.spaceKey}@${binding.spaceVersion}`\n : binding.spaceKey,\n });\n continue;\n }\n if (sources) {\n const relevantSources = sourceList.filter((source) => {\n if (source.meta.spaceKey !== binding.spaceKey) return false;\n if (binding.spaceVersion != null) {\n return source.meta.spaceVersion === binding.spaceVersion;\n }\n return true;\n });\n if (relevantSources.length === 0) {\n missing.push({\n type: 'knowledgeSource',\n identifier: binding.spaceVersion\n ? `${binding.spaceKey}@${binding.spaceVersion}`\n : binding.spaceKey,\n });\n }\n }\n }\n\n return missing;\n}\n\nfunction resolveCapabilityRefs(\n refs: CapabilityRef[],\n registry: CapabilityRegistry | undefined,\n missing: MissingReference[]\n): CapabilitySpec[] {\n if (!registry) {\n if (refs.length > 0) {\n for (const ref of refs) {\n missing.push({\n type: 'capability',\n identifier: capabilityKey(ref),\n });\n }\n }\n return [];\n }\n\n const resolved: CapabilitySpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.key, ref.version);\n if (!spec) {\n missing.push({\n type: 'capability',\n identifier: capabilityKey(ref),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolveFeatureRefs(\n refs: FeatureRef[],\n registry: FeatureRegistry | undefined,\n missing: MissingReference[]\n): FeatureModuleSpec[] {\n if (!registry) {\n if (refs.length > 0) {\n for (const ref of refs) {\n missing.push({ type: 'feature', identifier: ref.key });\n }\n }\n return [];\n }\n const resolved: FeatureModuleSpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.key);\n if (!spec) {\n missing.push({ type: 'feature', identifier: ref.key });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolvePointerRecord<TSpec>(\n record: Record<string, SpecPointer>,\n registry:\n | { get(name: string, version?: number): TSpec | undefined }\n | undefined,\n type: 'dataView' | 'workflow',\n missing: MissingReference[]\n): Record<string, TSpec> {\n if (!registry) {\n if (Object.keys(record).length > 0) {\n for (const [slot, pointer] of Object.entries(record)) {\n missing.push({\n type,\n identifier: `${slot} -> ${specPointerKey(pointer)}`,\n });\n }\n }\n return {};\n }\n const resolved: Record<string, TSpec> = {};\n for (const [slot, pointer] of Object.entries(record)) {\n const spec = registry.get(pointer.name, pointer.version);\n if (!spec) {\n missing.push({\n type,\n identifier: `${slot} -> ${specPointerKey(pointer)}`,\n });\n continue;\n }\n resolved[slot] = spec;\n }\n return resolved;\n}\n\nfunction resolvePolicies(\n policies: PolicyRef[],\n registry: PolicyRegistry | undefined,\n missing: MissingReference[]\n): PolicySpec[] {\n if (!registry) {\n if (policies.length > 0) {\n for (const policy of policies) {\n missing.push({\n type: 'policy',\n identifier: policyKey(policy),\n });\n }\n }\n return [];\n }\n const resolved: PolicySpec[] = [];\n for (const policy of policies) {\n const spec = registry.get(policy.name, policy.version);\n if (!spec) {\n missing.push({\n type: 'policy',\n identifier: policyKey(policy),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolveThemeBinding(\n binding: AppThemeBinding | undefined,\n registry: ThemeRegistry | undefined\n): {\n theme?: ThemeSpec;\n fallbacks: ThemeSpec[];\n themeMissing: MissingReference[];\n} {\n const themeMissing: MissingReference[] = [];\n if (!binding) {\n return { theme: undefined, fallbacks: [], themeMissing };\n }\n if (!registry) {\n themeMissing.push({\n type: 'theme',\n identifier: `${binding.primary.name}.v${binding.primary.version}`,\n });\n for (const fallback of binding.fallbacks ?? []) {\n themeMissing.push({\n type: 'theme',\n identifier: `${fallback.name}.v${fallback.version}`,\n });\n }\n return { theme: undefined, fallbacks: [], themeMissing };\n }\n const theme = registry.get(binding.primary.name, binding.primary.version);\n if (!theme) {\n themeMissing.push({\n type: 'theme',\n identifier: `${binding.primary.name}.v${binding.primary.version}`,\n });\n }\n const fallbacks: ThemeSpec[] = [];\n for (const fallback of binding.fallbacks ?? []) {\n const spec = registry.get(fallback.name, fallback.version);\n if (!spec) {\n themeMissing.push({\n type: 'theme',\n identifier: `${fallback.name}.v${fallback.version}`,\n });\n continue;\n }\n fallbacks.push(spec);\n }\n return { theme: theme ?? undefined, fallbacks, themeMissing };\n}\n\nfunction resolveTelemetryBinding(\n binding: TelemetryBinding | undefined,\n registry: TelemetryRegistry | undefined\n): { telemetry?: TelemetrySpec; telemetryMissing: MissingReference[] } {\n const telemetryMissing: MissingReference[] = [];\n if (!binding?.spec) {\n return { telemetry: undefined, telemetryMissing };\n }\n if (!registry) {\n telemetryMissing.push({\n type: 'telemetry',\n identifier: specPointerKey(binding.spec),\n });\n return { telemetry: undefined, telemetryMissing };\n }\n const telemetry = registry.get(binding.spec.name, binding.spec.version);\n if (!telemetry) {\n telemetryMissing.push({\n type: 'telemetry',\n identifier: specPointerKey(binding.spec),\n });\n }\n return { telemetry: telemetry ?? undefined, telemetryMissing };\n}\n\nfunction resolveExperimentsSpecs(\n experiments: ResolvedAppConfig['experiments'],\n registry: ExperimentRegistry | undefined,\n missing: MissingReference[]\n): { active: ExperimentSpec[]; paused: ExperimentSpec[] } {\n const resolveList = (refs: ExperimentRef[]): ExperimentSpec[] => {\n if (refs.length === 0) return [];\n if (!registry) {\n for (const ref of refs) {\n missing.push({\n type: 'experiment',\n identifier: experimentKey(ref),\n });\n }\n return [];\n }\n const resolved: ExperimentSpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.name, ref.version);\n if (!spec) {\n missing.push({\n type: 'experiment',\n identifier: experimentKey(ref),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n };\n\n return {\n active: resolveList(experiments.active),\n paused: resolveList(experiments.paused),\n };\n}\n\nfunction capabilityKey(ref: CapabilityRef) {\n return `${ref.key}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction featureKey(ref: FeatureRef) {\n return ref.key;\n}\n\nfunction specPointerKey(pointer: SpecPointer) {\n return `${pointer.name}${pointer.version ? `.v${pointer.version}` : ''}`;\n}\n\nfunction policyKey(ref: PolicyRef) {\n return `${ref.name}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction experimentKey(ref: ExperimentRef) {\n return `${ref.name}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction dedupeRefs<T>(refs: T[], keyFn: (value: T) => string): T[] {\n const map = new Map<string, T>();\n for (const ref of refs) {\n map.set(keyFn(ref), ref);\n }\n return [...map.values()];\n}\n\nfunction dedupeStrings(values: string[]): string[] {\n return [...new Set(values)];\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.d.ts","names":[],"sources":["../../src/app-config/spec.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;UAgBiB,WAAA;;EAAA,OAAA,CAAA,EAAA,MAAW;AAK5B;AAUiB,UAVA,cAAA,CAUyB;EAKzB,IAAA,EAAA,MAAA;EAIG,KAAA,CAAA,EAAA,MAAA;EAEH,QAAA,CAAA,EAAA,MAAA;EAEQ,QAAA,CAAA,EAAA,MAAA;EAAa,KAAA,CAAA,EAlB5B,SAkB4B;EAOrB,WAAA,CAAA,EAAA,MAAgB;EAOhB,UAAA,CAAA,EA9BF,aA8BkB;AAMjC;AAKiB,UAtCA,yBAAA,CAsCyB;EASzB,IAAA,EAAA,MAAA;EACT,OAAA,EAAA,MAAA;;AAGO,UA9CE,kBAAA,CA8CF;EAGD;EACA,MAAA,EAAA,MAAA;EAEO;EACR,gBAAA,EAjDO,mBAiDP;EACU;EACM,YAAA,CAAA,EAjDZ,wBAiDY,EAAA;EAAf;EACe,oBAAA,CAAA,EAhDJ,aAgDI,EAAA;EAAf;EACD,QAAA,CAAA,EAAA,OAAA;EACH;EACI,WAAA,CAAA,EAAA,MAAA;;AAGD,UA/CI,gBAAA,CA+CJ;EAEI,GAAA,EAAA,MAAA;EACN,OAAA,EAAA,OAAA;EAAc,OAAA,CAAA,EAAA,MAAA;EAOZ,WAAA,CAAA,EAAA,MAAA;;AAYH,UA9DO,gBAAA,CA8DP;EAI6B,IAAA,CAAA,EAjE9B,WAiE8B;EAAgB,cAAA,CAAA,EAAA,MAAA,EAAA;EAiBvC,iBAAA,CAAA,EAhFM,MAgFa,CAAA,MAAA,EAAO,MAAA,CAAA;AAI1C;AASU,UA1FO,eAAA,CA0FP;EAGe,OAAA,EA5Fd,QA4Fc;EAIF,SAAA,CAAA,EA/FT,QA+FS,EAAA;;AACI,UA7FV,gBAAA,SAAyB,aA6Ff,CAAA;EAGV;EAKA,IAAA,EAAA,MAAA;EAUA;EACT,OAAA,EAAA,MAAA;EAEK;EACC,KAAA,EAAA,MAAA;;AAIA,UA9GG,gBAAA,CA8GH;EAEQ,IAAA,EA/Gd,gBA+Gc;EACA,YAAA,CAAA,EAAA;IACC,OAAA,CAAA,EA/GT,aA+GS,EAAA;IAET,QAAA,CAAA,EAhHC,aAgHD,EAAA;EACE,CAAA;EAGL,QAAA,CAAA,EAAA;IAEa,OAAA,CAAA,EAnHV,UAmHU,EAAA;IAGX,OAAA,CAAA,EArHC,UAqHD,EAAA;EACA,CAAA;EAEI,gBAAA,CAAA,EAtHI,kBAsHJ,EAAA;EACE,QAAA,CAAA,EAtHN,gBAsHM;EACF,kBAAA,CAAA,EAtHM,yBAsHN;EACH,SAAA,CAAA,EAtHA,MAsHA,CAAA,MAAA,EAtHe,WAsHf,CAAA;EAEK,SAAA,CAAA,EAvHL,MAuHK,CAAA,MAAA,EAvHU,WAuHV,CAAA;EACC,QAAA,CAAA,EAvHP,SAuHO,EAAA;EAGN,KAAA,CAAA,EAzHJ,eAyHI;EAED,SAAA,CAAA,EA1HC,gBA0HD;EAAoB,WAAA,CAAA,EAAA;aAxHpB;aACA;;iBAEI;WACN;;;cAOE,oBAAA;;iBAGI;UASP;uCAI6B;;iBAiBvB,mBAAA,OAA0B;UAIzB,mBAAA;;;;;;;;;UASP;;;yBAGe;;;;uBAIF;uBACA;;UAGN,kBAAA;;YAEL;;UAGK,mBAAA;;;;;UAKP;;eAEK;;UAGE,eAAA;QACT;;aAEK;cACC;;;cAGA;cACA;;sBAEQ;sBACA;uBACC;;cAET;gBACE;;;WAGL;;wBAEa;;;aAGX;aACA;;iBAEI;mBACE;iBACF;cACH;;mBAEK;oBACC;;;cAGN;;aAED"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.js","names":["latest: AppBlueprintSpec | undefined"],"sources":["../../src/app-config/spec.ts"],"sourcesContent":["import type { OwnerShipMeta } from '../ownership';\nimport type { CapabilityRef } from '../capabilities';\nimport type { FeatureRef } from '../features';\nimport type { PolicyRef } from '../policy/spec';\nimport type { ThemeRef } from '../themes';\nimport type { ExperimentRef } from '../experiments/spec';\nimport type {\n IntegrationCategory,\n IntegrationOwnershipMode,\n} from '../integrations/spec';\nimport type { AppIntegrationBinding } from '../integrations/binding';\nimport type { AppKnowledgeBinding } from '../knowledge/binding';\nimport type { BrandingDefaults, TenantBrandingConfig } from './branding';\nimport type { Locale, TranslationEntry } from '../translations/catalog';\nimport type { ConfigStatus } from './lifecycle';\n\nexport interface SpecPointer {\n name: string;\n version?: number;\n}\n\nexport interface AppRouteConfig {\n path: string;\n label?: string;\n dataView?: string;\n workflow?: string;\n guard?: PolicyRef;\n featureFlag?: string;\n experiment?: ExperimentRef;\n}\n\nexport interface TranslationCatalogPointer {\n name: string;\n version: number;\n}\n\nexport interface AppIntegrationSlot {\n /** Slot identifier unique within the blueprint (e.g., \"primaryPayments\"). */\n slotId: string;\n /** Integration category required to satisfy this slot. */\n requiredCategory: IntegrationCategory;\n /** Ownership modes allowed for this slot (defaults to any supported mode). */\n allowedModes?: IntegrationOwnershipMode[];\n /** Capabilities that must be provided by the integration spec. */\n requiredCapabilities?: CapabilityRef[];\n /** Whether this slot must be satisfied for the app to function. */\n required?: boolean;\n /** Description for App Studio UX. */\n description?: string;\n}\n\nexport interface FeatureFlagState {\n key: string;\n enabled: boolean;\n variant?: string;\n description?: string;\n}\n\nexport interface TelemetryBinding {\n spec?: SpecPointer;\n disabledEvents?: string[];\n samplingOverrides?: Record<string, number>;\n}\n\nexport interface AppThemeBinding {\n primary: ThemeRef;\n fallbacks?: ThemeRef[];\n}\n\nexport interface AppBlueprintMeta extends OwnerShipMeta {\n /** Fully qualified blueprint name (e.g. \"artisan.app\"). */\n name: string;\n /** Versioned definition of the blueprint. Increment on breaking changes. */\n version: number;\n /** Logical application id (e.g. \"artisan\"). */\n appId: string;\n}\n\nexport interface AppBlueprintSpec {\n meta: AppBlueprintMeta;\n capabilities?: {\n enabled?: CapabilityRef[];\n disabled?: CapabilityRef[];\n };\n features?: {\n include?: FeatureRef[];\n exclude?: FeatureRef[];\n };\n integrationSlots?: AppIntegrationSlot[];\n branding?: BrandingDefaults;\n translationCatalog?: TranslationCatalogPointer;\n dataViews?: Record<string, SpecPointer>;\n workflows?: Record<string, SpecPointer>;\n policies?: PolicyRef[];\n theme?: AppThemeBinding;\n telemetry?: TelemetryBinding;\n experiments?: {\n active?: ExperimentRef[];\n paused?: ExperimentRef[];\n };\n featureFlags?: FeatureFlagState[];\n routes?: AppRouteConfig[];\n notes?: string;\n}\n\nconst blueprintKey = (meta: Pick<AppBlueprintMeta, 'name' | 'version'>) =>\n `${meta.name}.v${meta.version}`;\n\nexport class AppBlueprintRegistry {\n private readonly items = new Map<string, AppBlueprintSpec>();\n\n register(spec: AppBlueprintSpec): this {\n const key = blueprintKey(spec.meta);\n if (this.items.has(key)) {\n throw new Error(`Duplicate AppBlueprint ${key}`);\n }\n this.items.set(key, spec);\n return this;\n }\n\n list(): AppBlueprintSpec[] {\n return [...this.items.values()];\n }\n\n get(name: string, version?: number): AppBlueprintSpec | undefined {\n if (version != null) {\n return this.items.get(blueprintKey({ name, version }));\n }\n let latest: AppBlueprintSpec | undefined;\n let maxVersion = -Infinity;\n for (const spec of this.items.values()) {\n if (spec.meta.name !== name) continue;\n if (spec.meta.version > maxVersion) {\n maxVersion = spec.meta.version;\n latest = spec;\n }\n }\n return latest;\n }\n}\n\nexport function makeAppBlueprintKey(meta: AppBlueprintMeta) {\n return blueprintKey(meta);\n}\n\nexport interface TenantAppConfigMeta {\n id: string;\n tenantId: string;\n appId: string;\n blueprintName: string;\n blueprintVersion: number;\n environment?: string;\n /** Monotonic version for auditing changes to the tenant config. */\n version: number;\n status: ConfigStatus;\n createdBy?: string;\n publishedBy?: string;\n publishedAt?: string | Date;\n rolledBackFrom?: number;\n rolledBackTo?: number;\n changeSummary?: string;\n createdAt?: string | Date;\n updatedAt?: string | Date;\n}\n\nexport interface TenantSpecOverride {\n slot: string;\n pointer?: SpecPointer | null;\n}\n\nexport interface TenantRouteOverride {\n path: string;\n label?: string | null;\n dataView?: string | null;\n workflow?: string | null;\n guard?: PolicyRef | null;\n featureFlag?: string | null;\n experiment?: ExperimentRef | null;\n}\n\nexport interface TenantAppConfig {\n meta: TenantAppConfigMeta;\n capabilities?: {\n enable?: CapabilityRef[];\n disable?: CapabilityRef[];\n };\n features?: {\n include?: FeatureRef[];\n exclude?: FeatureRef[];\n };\n dataViewOverrides?: TenantSpecOverride[];\n workflowOverrides?: TenantSpecOverride[];\n additionalPolicies?: PolicyRef[];\n themeOverride?: {\n primary?: ThemeRef | null;\n fallbacks?: ThemeRef[];\n };\n telemetryOverride?: {\n spec?: SpecPointer | null;\n disabledEvents?: string[];\n samplingOverrides?: Record<string, number>;\n };\n experiments?: {\n active?: ExperimentRef[];\n paused?: ExperimentRef[];\n };\n featureFlags?: FeatureFlagState[];\n routeOverrides?: TenantRouteOverride[];\n integrations?: AppIntegrationBinding[];\n knowledge?: AppKnowledgeBinding[];\n locales?: {\n defaultLocale: Locale;\n enabledLocales: Locale[];\n };\n translationOverrides?: {\n entries?: TranslationEntry[];\n };\n branding?: TenantBrandingConfig;\n notes?: string;\n}\n"],"mappings":";AAyGA,MAAM,gBAAgB,SACpB,GAAG,KAAK,KAAK,IAAI,KAAK;AAExB,IAAa,uBAAb,MAAkC;CAChC,AAAiB,wBAAQ,IAAI,KAA+B;CAE5D,SAAS,MAA8B;EACrC,MAAM,MAAM,aAAa,KAAK,KAAK;AACnC,MAAI,KAAK,MAAM,IAAI,IAAI,CACrB,OAAM,IAAI,MAAM,0BAA0B,MAAM;AAElD,OAAK,MAAM,IAAI,KAAK,KAAK;AACzB,SAAO;;CAGT,OAA2B;AACzB,SAAO,CAAC,GAAG,KAAK,MAAM,QAAQ,CAAC;;CAGjC,IAAI,MAAc,SAAgD;AAChE,MAAI,WAAW,KACb,QAAO,KAAK,MAAM,IAAI,aAAa;GAAE;GAAM;GAAS,CAAC,CAAC;EAExD,IAAIA;EACJ,IAAI,aAAa;AACjB,OAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE;AACtC,OAAI,KAAK,KAAK,SAAS,KAAM;AAC7B,OAAI,KAAK,KAAK,UAAU,YAAY;AAClC,iBAAa,KAAK,KAAK;AACvB,aAAS;;;AAGb,SAAO;;;AAIX,SAAgB,oBAAoB,MAAwB;AAC1D,QAAO,aAAa,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/app-config/validation.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAkBY,kBAAA;UAEK,eAAA;EAFL,IAAA,EAAA,MAAA;EAEK,QAAA,EAEL,kBAFoB;EASf,IAAA,EAAA,MAAA;EAEP,OAAA,EAAA,MAAA;EACE,UAAA,CAAA,EAAA,MAAA;EACJ,OAAA,CAAA,EAAA,MAAA;;AAGS,UAPA,gBAAA,CAOiB;EACb,KAAA,EAAA,OAAA;EACD,MAAA,EAPV,eAOU,EAAA;EACC,QAAA,EAPT,eAOS,EAAA;EACJ,IAAA,EAPT,eAOS,EAAA;;AAEH,UANG,iBAAA,CAMH;EACQ,gBAAA,CAAA,EAND,uBAMC;EACF,eAAA,CAAA,EANA,sBAMA;EAGZ,gBAAA,CAAA,EARa,qBAQb,EAAA;EACA,YAAA,CAAA,EARS,kBAQT;EAGA,SAAA,CAAA,EAVM,gBAUN;EACA,SAAA,CAAA,EAVM,gBAUN;EAA2B,iBAAA,CAAA,EATb,qBASa,EAAA;EAyHnB,eAAA,CAAA,EAjII,eAiIU,EAAA;EACjB,mBAAA,CAAA,EAAA;IACH,QAAA,CAAA,EAhIF,0BAgIE,GA/HF,0BA+HE,EAAA,GAAA,SAAA;IACC,SAAA,CAAA,EA7HH,2BA6HG,GA5HH,2BA4HG,EAAA,GAAA,SAAA;EACR,CAAA;;AAWa,iBAfA,cAAA,CAeiB,SAAA,EAdpB,gBAcoB,EAAA,MAAA,EAbvB,eAauB,EAAA,OAAA,CAAA,EAZtB,iBAYsB,CAAA,EAX9B,gBAW8B;AACpB,iBADG,iBAAA,CACH,SAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACF,iBADE,CAAA,EAEV,gBAFU;AACF,iBAMK,oBAAA,CANL,SAAA,EAOE,gBAPF,EAAA,MAAA,EAQD,eARC,EAAA,OAAA,CAAA,EASA,iBATA,CAAA,EAUR,gBAVQ;AACR,iBAca,sBAAA,CAdb,SAAA,EAeU,gBAfV,EAAA,QAAA,EAgBS,iBAhBT,EAAA,OAAA,CAAA,EAiBQ,iBAjBR,CAAA,EAkBA,gBAlBA"}