@endora-commerce/platform 0.100.0

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 (657) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/cli/dispatch.d.ts +146 -0
  4. package/dist/cli/dispatch.d.ts.map +1 -0
  5. package/dist/cli/dispatch.js +259 -0
  6. package/dist/cli/dispatch.js.map +1 -0
  7. package/dist/cli/index.d.ts +58 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +58 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/module-commands.d.ts +118 -0
  12. package/dist/cli/module-commands.d.ts.map +1 -0
  13. package/dist/cli/module-commands.js +120 -0
  14. package/dist/cli/module-commands.js.map +1 -0
  15. package/dist/commands/actor.d.ts +19 -0
  16. package/dist/commands/actor.d.ts.map +1 -0
  17. package/dist/commands/actor.js +45 -0
  18. package/dist/commands/actor.js.map +1 -0
  19. package/dist/commands/audit-from-context.d.ts +24 -0
  20. package/dist/commands/audit-from-context.d.ts.map +1 -0
  21. package/dist/commands/audit-from-context.js +28 -0
  22. package/dist/commands/audit-from-context.js.map +1 -0
  23. package/dist/commands/command-bus.d.ts +40 -0
  24. package/dist/commands/command-bus.d.ts.map +1 -0
  25. package/dist/commands/command-bus.js +46 -0
  26. package/dist/commands/command-bus.js.map +1 -0
  27. package/dist/commands/command.d.ts +76 -0
  28. package/dist/commands/command.d.ts.map +1 -0
  29. package/dist/commands/command.js +2 -0
  30. package/dist/commands/command.js.map +1 -0
  31. package/dist/commands/index.d.ts +65 -0
  32. package/dist/commands/index.d.ts.map +1 -0
  33. package/dist/commands/index.js +57 -0
  34. package/dist/commands/index.js.map +1 -0
  35. package/dist/commands/reversible.d.ts +66 -0
  36. package/dist/commands/reversible.d.ts.map +1 -0
  37. package/dist/commands/reversible.js +41 -0
  38. package/dist/commands/reversible.js.map +1 -0
  39. package/dist/composition/compose-app.d.ts +305 -0
  40. package/dist/composition/compose-app.d.ts.map +1 -0
  41. package/dist/composition/compose-app.js +939 -0
  42. package/dist/composition/compose-app.js.map +1 -0
  43. package/dist/composition/index.d.ts +92 -0
  44. package/dist/composition/index.d.ts.map +1 -0
  45. package/dist/composition/index.js +175 -0
  46. package/dist/composition/index.js.map +1 -0
  47. package/dist/composition/newsletter-token-secret.d.ts +19 -0
  48. package/dist/composition/newsletter-token-secret.d.ts.map +1 -0
  49. package/dist/composition/newsletter-token-secret.js +24 -0
  50. package/dist/composition/newsletter-token-secret.js.map +1 -0
  51. package/dist/composition/process-runs-workers.d.ts +17 -0
  52. package/dist/composition/process-runs-workers.d.ts.map +1 -0
  53. package/dist/composition/process-runs-workers.js +19 -0
  54. package/dist/composition/process-runs-workers.js.map +1 -0
  55. package/dist/db/baseline-migration-inventory.d.ts +15 -0
  56. package/dist/db/baseline-migration-inventory.d.ts.map +1 -0
  57. package/dist/db/baseline-migration-inventory.js +115 -0
  58. package/dist/db/baseline-migration-inventory.js.map +1 -0
  59. package/dist/db/configured-entities.d.ts +74 -0
  60. package/dist/db/configured-entities.d.ts.map +1 -0
  61. package/dist/db/configured-entities.js +20 -0
  62. package/dist/db/configured-entities.js.map +1 -0
  63. package/dist/db/configured-migrations.d.ts +199 -0
  64. package/dist/db/configured-migrations.d.ts.map +1 -0
  65. package/dist/db/configured-migrations.js +181 -0
  66. package/dist/db/configured-migrations.js.map +1 -0
  67. package/dist/db/index.d.ts +54 -0
  68. package/dist/db/index.d.ts.map +1 -0
  69. package/dist/db/index.js +54 -0
  70. package/dist/db/index.js.map +1 -0
  71. package/dist/db/migrate.d.ts +21 -0
  72. package/dist/db/migrate.d.ts.map +1 -0
  73. package/dist/db/migrate.js +48 -0
  74. package/dist/db/migrate.js.map +1 -0
  75. package/dist/db/migration-order.d.ts +159 -0
  76. package/dist/db/migration-order.d.ts.map +1 -0
  77. package/dist/db/migration-order.js +273 -0
  78. package/dist/db/migration-order.js.map +1 -0
  79. package/dist/db/mikro-orm.config.d.ts +51 -0
  80. package/dist/db/mikro-orm.config.d.ts.map +1 -0
  81. package/dist/db/mikro-orm.config.js +64 -0
  82. package/dist/db/mikro-orm.config.js.map +1 -0
  83. package/dist/db/orm.d.ts +40 -0
  84. package/dist/db/orm.d.ts.map +1 -0
  85. package/dist/db/orm.js +25 -0
  86. package/dist/db/orm.js.map +1 -0
  87. package/dist/db/platform-schema.d.ts +102 -0
  88. package/dist/db/platform-schema.d.ts.map +1 -0
  89. package/dist/db/platform-schema.js +79 -0
  90. package/dist/db/platform-schema.js.map +1 -0
  91. package/dist/db/pluralizing-naming-strategy.d.ts +16 -0
  92. package/dist/db/pluralizing-naming-strategy.d.ts.map +1 -0
  93. package/dist/db/pluralizing-naming-strategy.js +66 -0
  94. package/dist/db/pluralizing-naming-strategy.js.map +1 -0
  95. package/dist/demo/guard.d.ts +101 -0
  96. package/dist/demo/guard.d.ts.map +1 -0
  97. package/dist/demo/guard.js +168 -0
  98. package/dist/demo/guard.js.map +1 -0
  99. package/dist/demo/host-command.d.ts +133 -0
  100. package/dist/demo/host-command.d.ts.map +1 -0
  101. package/dist/demo/host-command.js +113 -0
  102. package/dist/demo/host-command.js.map +1 -0
  103. package/dist/demo/index.d.ts +82 -0
  104. package/dist/demo/index.d.ts.map +1 -0
  105. package/dist/demo/index.js +82 -0
  106. package/dist/demo/index.js.map +1 -0
  107. package/dist/demo/packages.d.ts +67 -0
  108. package/dist/demo/packages.d.ts.map +1 -0
  109. package/dist/demo/packages.js +132 -0
  110. package/dist/demo/packages.js.map +1 -0
  111. package/dist/demo/plan.d.ts +111 -0
  112. package/dist/demo/plan.d.ts.map +1 -0
  113. package/dist/demo/plan.js +74 -0
  114. package/dist/demo/plan.js.map +1 -0
  115. package/dist/demo/report.d.ts +17 -0
  116. package/dist/demo/report.d.ts.map +1 -0
  117. package/dist/demo/report.js +85 -0
  118. package/dist/demo/report.js.map +1 -0
  119. package/dist/demo/runner.d.ts +207 -0
  120. package/dist/demo/runner.d.ts.map +1 -0
  121. package/dist/demo/runner.js +169 -0
  122. package/dist/demo/runner.js.map +1 -0
  123. package/dist/demo/scope.d.ts +44 -0
  124. package/dist/demo/scope.d.ts.map +1 -0
  125. package/dist/demo/scope.js +44 -0
  126. package/dist/demo/scope.js.map +1 -0
  127. package/dist/env/index.d.ts +68 -0
  128. package/dist/env/index.d.ts.map +1 -0
  129. package/dist/env/index.js +427 -0
  130. package/dist/env/index.js.map +1 -0
  131. package/dist/events/bus.d.ts +29 -0
  132. package/dist/events/bus.d.ts.map +1 -0
  133. package/dist/events/bus.js +67 -0
  134. package/dist/events/bus.js.map +1 -0
  135. package/dist/events/index.d.ts +19 -0
  136. package/dist/events/index.d.ts.map +1 -0
  137. package/dist/events/index.js +19 -0
  138. package/dist/events/index.js.map +1 -0
  139. package/dist/http/cursor.d.ts +10 -0
  140. package/dist/http/cursor.d.ts.map +1 -0
  141. package/dist/http/cursor.js +20 -0
  142. package/dist/http/cursor.js.map +1 -0
  143. package/dist/http/error-envelope.d.ts +127 -0
  144. package/dist/http/error-envelope.d.ts.map +1 -0
  145. package/dist/http/error-envelope.js +402 -0
  146. package/dist/http/error-envelope.js.map +1 -0
  147. package/dist/http/health.d.ts +88 -0
  148. package/dist/http/health.d.ts.map +1 -0
  149. package/dist/http/health.js +77 -0
  150. package/dist/http/health.js.map +1 -0
  151. package/dist/http/index.d.ts +50 -0
  152. package/dist/http/index.d.ts.map +1 -0
  153. package/dist/http/index.js +50 -0
  154. package/dist/http/index.js.map +1 -0
  155. package/dist/http/interceptors/dispatch.d.ts +14 -0
  156. package/dist/http/interceptors/dispatch.d.ts.map +1 -0
  157. package/dist/http/interceptors/dispatch.js +113 -0
  158. package/dist/http/interceptors/dispatch.js.map +1 -0
  159. package/dist/http/interceptors/index.d.ts +6 -0
  160. package/dist/http/interceptors/index.d.ts.map +1 -0
  161. package/dist/http/interceptors/index.js +5 -0
  162. package/dist/http/interceptors/index.js.map +1 -0
  163. package/dist/http/interceptors/registry.d.ts +44 -0
  164. package/dist/http/interceptors/registry.d.ts.map +1 -0
  165. package/dist/http/interceptors/registry.js +123 -0
  166. package/dist/http/interceptors/registry.js.map +1 -0
  167. package/dist/http/interceptors/route-table.d.ts +33 -0
  168. package/dist/http/interceptors/route-table.d.ts.map +1 -0
  169. package/dist/http/interceptors/route-table.js +39 -0
  170. package/dist/http/interceptors/route-table.js.map +1 -0
  171. package/dist/http/interceptors/types.d.ts +101 -0
  172. package/dist/http/interceptors/types.d.ts.map +1 -0
  173. package/dist/http/interceptors/types.js +2 -0
  174. package/dist/http/interceptors/types.js.map +1 -0
  175. package/dist/http/interceptors/validation.d.ts +22 -0
  176. package/dist/http/interceptors/validation.d.ts.map +1 -0
  177. package/dist/http/interceptors/validation.js +39 -0
  178. package/dist/http/interceptors/validation.js.map +1 -0
  179. package/dist/http/logger.d.ts +9 -0
  180. package/dist/http/logger.d.ts.map +1 -0
  181. package/dist/http/logger.js +25 -0
  182. package/dist/http/logger.js.map +1 -0
  183. package/dist/http/openapi.d.ts +21 -0
  184. package/dist/http/openapi.d.ts.map +1 -0
  185. package/dist/http/openapi.js +114 -0
  186. package/dist/http/openapi.js.map +1 -0
  187. package/dist/http/product-audience.d.ts +78 -0
  188. package/dist/http/product-audience.d.ts.map +1 -0
  189. package/dist/http/product-audience.js +92 -0
  190. package/dist/http/product-audience.js.map +1 -0
  191. package/dist/http/request-actor.d.ts +82 -0
  192. package/dist/http/request-actor.d.ts.map +1 -0
  193. package/dist/http/request-actor.js +2 -0
  194. package/dist/http/request-actor.js.map +1 -0
  195. package/dist/http/server.d.ts +60 -0
  196. package/dist/http/server.d.ts.map +1 -0
  197. package/dist/http/server.js +117 -0
  198. package/dist/http/server.js.map +1 -0
  199. package/dist/http/storefront-revalidator.d.ts +29 -0
  200. package/dist/http/storefront-revalidator.d.ts.map +1 -0
  201. package/dist/http/storefront-revalidator.js +34 -0
  202. package/dist/http/storefront-revalidator.js.map +1 -0
  203. package/dist/http/test-actor-carrier.d.ts +28 -0
  204. package/dist/http/test-actor-carrier.d.ts.map +1 -0
  205. package/dist/http/test-actor-carrier.js +10 -0
  206. package/dist/http/test-actor-carrier.js.map +1 -0
  207. package/dist/http/trusted-proxy.d.ts +48 -0
  208. package/dist/http/trusted-proxy.d.ts.map +1 -0
  209. package/dist/http/trusted-proxy.js +136 -0
  210. package/dist/http/trusted-proxy.js.map +1 -0
  211. package/dist/kernel/audit/audit-log-entry.entity.d.ts +33 -0
  212. package/dist/kernel/audit/audit-log-entry.entity.d.ts.map +1 -0
  213. package/dist/kernel/audit/audit-log-entry.entity.js +102 -0
  214. package/dist/kernel/audit/audit-log-entry.entity.js.map +1 -0
  215. package/dist/kernel/audit/audit-log-service.d.ts +63 -0
  216. package/dist/kernel/audit/audit-log-service.d.ts.map +1 -0
  217. package/dist/kernel/audit/audit-log-service.js +107 -0
  218. package/dist/kernel/audit/audit-log-service.js.map +1 -0
  219. package/dist/kernel/cache/in-process-cache-registry.d.ts +93 -0
  220. package/dist/kernel/cache/in-process-cache-registry.d.ts.map +1 -0
  221. package/dist/kernel/cache/in-process-cache-registry.js +78 -0
  222. package/dist/kernel/cache/in-process-cache-registry.js.map +1 -0
  223. package/dist/kernel/cache/shared-drop-marks.d.ts +39 -0
  224. package/dist/kernel/cache/shared-drop-marks.d.ts.map +1 -0
  225. package/dist/kernel/cache/shared-drop-marks.js +68 -0
  226. package/dist/kernel/cache/shared-drop-marks.js.map +1 -0
  227. package/dist/kernel/compose.d.ts +234 -0
  228. package/dist/kernel/compose.d.ts.map +1 -0
  229. package/dist/kernel/compose.js +279 -0
  230. package/dist/kernel/compose.js.map +1 -0
  231. package/dist/kernel/container.d.ts +95 -0
  232. package/dist/kernel/container.d.ts.map +1 -0
  233. package/dist/kernel/container.js +90 -0
  234. package/dist/kernel/container.js.map +1 -0
  235. package/dist/kernel/contribution-sinks.d.ts +106 -0
  236. package/dist/kernel/contribution-sinks.d.ts.map +1 -0
  237. package/dist/kernel/contribution-sinks.js +153 -0
  238. package/dist/kernel/contribution-sinks.js.map +1 -0
  239. package/dist/kernel/crypto/password-hasher.d.ts +3 -0
  240. package/dist/kernel/crypto/password-hasher.d.ts.map +1 -0
  241. package/dist/kernel/crypto/password-hasher.js +44 -0
  242. package/dist/kernel/crypto/password-hasher.js.map +1 -0
  243. package/dist/kernel/i18n/error-envelope-options.d.ts +56 -0
  244. package/dist/kernel/i18n/error-envelope-options.d.ts.map +1 -0
  245. package/dist/kernel/i18n/error-envelope-options.js +46 -0
  246. package/dist/kernel/i18n/error-envelope-options.js.map +1 -0
  247. package/dist/kernel/i18n/error-translation.d.ts +144 -0
  248. package/dist/kernel/i18n/error-translation.d.ts.map +1 -0
  249. package/dist/kernel/i18n/error-translation.js +84 -0
  250. package/dist/kernel/i18n/error-translation.js.map +1 -0
  251. package/dist/kernel/i18n/request-language.d.ts +80 -0
  252. package/dist/kernel/i18n/request-language.d.ts.map +1 -0
  253. package/dist/kernel/i18n/request-language.js +168 -0
  254. package/dist/kernel/i18n/request-language.js.map +1 -0
  255. package/dist/kernel/index.d.ts +142 -0
  256. package/dist/kernel/index.d.ts.map +1 -0
  257. package/dist/kernel/index.js +160 -0
  258. package/dist/kernel/index.js.map +1 -0
  259. package/dist/kernel/lazy-port.d.ts +59 -0
  260. package/dist/kernel/lazy-port.d.ts.map +1 -0
  261. package/dist/kernel/lazy-port.js +78 -0
  262. package/dist/kernel/lazy-port.js.map +1 -0
  263. package/dist/kernel/lifecycle/activation-resolver.d.ts +63 -0
  264. package/dist/kernel/lifecycle/activation-resolver.d.ts.map +1 -0
  265. package/dist/kernel/lifecycle/activation-resolver.js +70 -0
  266. package/dist/kernel/lifecycle/activation-resolver.js.map +1 -0
  267. package/dist/kernel/lifecycle/capability-registry.d.ts +145 -0
  268. package/dist/kernel/lifecycle/capability-registry.d.ts.map +1 -0
  269. package/dist/kernel/lifecycle/capability-registry.js +170 -0
  270. package/dist/kernel/lifecycle/capability-registry.js.map +1 -0
  271. package/dist/kernel/lifecycle/effective-state.d.ts +126 -0
  272. package/dist/kernel/lifecycle/effective-state.d.ts.map +1 -0
  273. package/dist/kernel/lifecycle/effective-state.js +111 -0
  274. package/dist/kernel/lifecycle/effective-state.js.map +1 -0
  275. package/dist/kernel/lifecycle/module-registration.entity.d.ts +57 -0
  276. package/dist/kernel/lifecycle/module-registration.entity.d.ts.map +1 -0
  277. package/dist/kernel/lifecycle/module-registration.entity.js +111 -0
  278. package/dist/kernel/lifecycle/module-registration.entity.js.map +1 -0
  279. package/dist/kernel/lifecycle/plugin-helpers.d.ts +165 -0
  280. package/dist/kernel/lifecycle/plugin-helpers.d.ts.map +1 -0
  281. package/dist/kernel/lifecycle/plugin-helpers.js +395 -0
  282. package/dist/kernel/lifecycle/plugin-helpers.js.map +1 -0
  283. package/dist/kernel/lifecycle/registry-cache.d.ts +318 -0
  284. package/dist/kernel/lifecycle/registry-cache.d.ts.map +1 -0
  285. package/dist/kernel/lifecycle/registry-cache.js +509 -0
  286. package/dist/kernel/lifecycle/registry-cache.js.map +1 -0
  287. package/dist/kernel/lifecycle/required-modules.d.ts +137 -0
  288. package/dist/kernel/lifecycle/required-modules.d.ts.map +1 -0
  289. package/dist/kernel/lifecycle/required-modules.js +80 -0
  290. package/dist/kernel/lifecycle/required-modules.js.map +1 -0
  291. package/dist/kernel/lifecycle/unique-module-ids.d.ts +58 -0
  292. package/dist/kernel/lifecycle/unique-module-ids.d.ts.map +1 -0
  293. package/dist/kernel/lifecycle/unique-module-ids.js +82 -0
  294. package/dist/kernel/lifecycle/unique-module-ids.js.map +1 -0
  295. package/dist/kernel/logging.d.ts +116 -0
  296. package/dist/kernel/logging.d.ts.map +1 -0
  297. package/dist/kernel/logging.js +71 -0
  298. package/dist/kernel/logging.js.map +1 -0
  299. package/dist/kernel/module-context.d.ts +563 -0
  300. package/dist/kernel/module-context.d.ts.map +1 -0
  301. package/dist/kernel/module-context.js +670 -0
  302. package/dist/kernel/module-context.js.map +1 -0
  303. package/dist/kernel/ports/audit.d.ts +115 -0
  304. package/dist/kernel/ports/audit.d.ts.map +1 -0
  305. package/dist/kernel/ports/audit.js +2 -0
  306. package/dist/kernel/ports/audit.js.map +1 -0
  307. package/dist/kernel/ports/organizations.d.ts +56 -0
  308. package/dist/kernel/ports/organizations.d.ts.map +1 -0
  309. package/dist/kernel/ports/organizations.js +2 -0
  310. package/dist/kernel/ports/organizations.js.map +1 -0
  311. package/dist/kernel/ports/provide.d.ts +14 -0
  312. package/dist/kernel/ports/provide.d.ts.map +1 -0
  313. package/dist/kernel/ports/provide.js +50 -0
  314. package/dist/kernel/ports/provide.js.map +1 -0
  315. package/dist/kernel/ports/require-admin.d.ts +61 -0
  316. package/dist/kernel/ports/require-admin.d.ts.map +1 -0
  317. package/dist/kernel/ports/require-admin.js +2 -0
  318. package/dist/kernel/ports/require-admin.js.map +1 -0
  319. package/dist/kernel/ports/require-customer.d.ts +17 -0
  320. package/dist/kernel/ports/require-customer.d.ts.map +1 -0
  321. package/dist/kernel/ports/require-customer.js +2 -0
  322. package/dist/kernel/ports/require-customer.js.map +1 -0
  323. package/dist/kernel/ports/sales-channel.d.ts +84 -0
  324. package/dist/kernel/ports/sales-channel.d.ts.map +1 -0
  325. package/dist/kernel/ports/sales-channel.js +2 -0
  326. package/dist/kernel/ports/sales-channel.js.map +1 -0
  327. package/dist/kernel/ports/settings.d.ts +59 -0
  328. package/dist/kernel/ports/settings.d.ts.map +1 -0
  329. package/dist/kernel/ports/settings.js +2 -0
  330. package/dist/kernel/ports/settings.js.map +1 -0
  331. package/dist/kernel/public-api-base-url.d.ts +98 -0
  332. package/dist/kernel/public-api-base-url.d.ts.map +1 -0
  333. package/dist/kernel/public-api-base-url.js +144 -0
  334. package/dist/kernel/public-api-base-url.js.map +1 -0
  335. package/dist/kernel/request-scope-hook.d.ts +63 -0
  336. package/dist/kernel/request-scope-hook.d.ts.map +1 -0
  337. package/dist/kernel/request-scope-hook.js +67 -0
  338. package/dist/kernel/request-scope-hook.js.map +1 -0
  339. package/dist/kernel/sales-channels/channel-bridge-registry.d.ts +109 -0
  340. package/dist/kernel/sales-channels/channel-bridge-registry.d.ts.map +1 -0
  341. package/dist/kernel/sales-channels/channel-bridge-registry.js +75 -0
  342. package/dist/kernel/sales-channels/channel-bridge-registry.js.map +1 -0
  343. package/dist/kernel/sales-channels/compose.d.ts +69 -0
  344. package/dist/kernel/sales-channels/compose.d.ts.map +1 -0
  345. package/dist/kernel/sales-channels/compose.js +43 -0
  346. package/dist/kernel/sales-channels/compose.js.map +1 -0
  347. package/dist/kernel/sales-channels/default-channel-reconciler.d.ts +66 -0
  348. package/dist/kernel/sales-channels/default-channel-reconciler.d.ts.map +1 -0
  349. package/dist/kernel/sales-channels/default-channel-reconciler.js +91 -0
  350. package/dist/kernel/sales-channels/default-channel-reconciler.js.map +1 -0
  351. package/dist/kernel/sales-channels/no-system-default-channel.error.d.ts +28 -0
  352. package/dist/kernel/sales-channels/no-system-default-channel.error.d.ts.map +1 -0
  353. package/dist/kernel/sales-channels/no-system-default-channel.error.js +33 -0
  354. package/dist/kernel/sales-channels/no-system-default-channel.error.js.map +1 -0
  355. package/dist/kernel/sales-channels/request-channel-assortment.d.ts +72 -0
  356. package/dist/kernel/sales-channels/request-channel-assortment.d.ts.map +1 -0
  357. package/dist/kernel/sales-channels/request-channel-assortment.js +83 -0
  358. package/dist/kernel/sales-channels/request-channel-assortment.js.map +1 -0
  359. package/dist/kernel/sales-channels/sales-channel-membership.service.d.ts +157 -0
  360. package/dist/kernel/sales-channels/sales-channel-membership.service.d.ts.map +1 -0
  361. package/dist/kernel/sales-channels/sales-channel-membership.service.js +302 -0
  362. package/dist/kernel/sales-channels/sales-channel-membership.service.js.map +1 -0
  363. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.d.ts +76 -0
  364. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.d.ts.map +1 -0
  365. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.js +184 -0
  366. package/dist/kernel/sales-channels/sales-channel-resolver.middleware.js.map +1 -0
  367. package/dist/kernel/sales-channels/sales-channel-resolver.service.d.ts +82 -0
  368. package/dist/kernel/sales-channels/sales-channel-resolver.service.d.ts.map +1 -0
  369. package/dist/kernel/sales-channels/sales-channel-resolver.service.js +126 -0
  370. package/dist/kernel/sales-channels/sales-channel-resolver.service.js.map +1 -0
  371. package/dist/kernel/sales-channels/sales-channel.entity.d.ts +50 -0
  372. package/dist/kernel/sales-channels/sales-channel.entity.d.ts.map +1 -0
  373. package/dist/kernel/sales-channels/sales-channel.entity.js +132 -0
  374. package/dist/kernel/sales-channels/sales-channel.entity.js.map +1 -0
  375. package/dist/kernel/sales-channels/sales-channels-cache.d.ts +170 -0
  376. package/dist/kernel/sales-channels/sales-channels-cache.d.ts.map +1 -0
  377. package/dist/kernel/sales-channels/sales-channels-cache.js +243 -0
  378. package/dist/kernel/sales-channels/sales-channels-cache.js.map +1 -0
  379. package/dist/kernel/scope.d.ts +153 -0
  380. package/dist/kernel/scope.d.ts.map +1 -0
  381. package/dist/kernel/scope.js +172 -0
  382. package/dist/kernel/scope.js.map +1 -0
  383. package/dist/kernel/settings/compose.d.ts +49 -0
  384. package/dist/kernel/settings/compose.d.ts.map +1 -0
  385. package/dist/kernel/settings/compose.js +21 -0
  386. package/dist/kernel/settings/compose.js.map +1 -0
  387. package/dist/kernel/settings/manifest-reconciler.d.ts +78 -0
  388. package/dist/kernel/settings/manifest-reconciler.d.ts.map +1 -0
  389. package/dist/kernel/settings/manifest-reconciler.js +343 -0
  390. package/dist/kernel/settings/manifest-reconciler.js.map +1 -0
  391. package/dist/kernel/settings/secret-value-codec.d.ts +52 -0
  392. package/dist/kernel/settings/secret-value-codec.d.ts.map +1 -0
  393. package/dist/kernel/settings/secret-value-codec.js +102 -0
  394. package/dist/kernel/settings/secret-value-codec.js.map +1 -0
  395. package/dist/kernel/settings/setting-group.entity.d.ts +25 -0
  396. package/dist/kernel/settings/setting-group.entity.d.ts.map +1 -0
  397. package/dist/kernel/settings/setting-group.entity.js +79 -0
  398. package/dist/kernel/settings/setting-group.entity.js.map +1 -0
  399. package/dist/kernel/settings/setting-value.entity.d.ts +23 -0
  400. package/dist/kernel/settings/setting-value.entity.d.ts.map +1 -0
  401. package/dist/kernel/settings/setting-value.entity.js +66 -0
  402. package/dist/kernel/settings/setting-value.entity.js.map +1 -0
  403. package/dist/kernel/settings/setting.entity.d.ts +56 -0
  404. package/dist/kernel/settings/setting.entity.d.ts.map +1 -0
  405. package/dist/kernel/settings/setting.entity.js +147 -0
  406. package/dist/kernel/settings/setting.entity.js.map +1 -0
  407. package/dist/kernel/settings/settings-cache.d.ts +158 -0
  408. package/dist/kernel/settings/settings-cache.d.ts.map +1 -0
  409. package/dist/kernel/settings/settings-cache.js +253 -0
  410. package/dist/kernel/settings/settings-cache.js.map +1 -0
  411. package/dist/kernel/settings/settings.service.d.ts +142 -0
  412. package/dist/kernel/settings/settings.service.d.ts.map +1 -0
  413. package/dist/kernel/settings/settings.service.js +294 -0
  414. package/dist/kernel/settings/settings.service.js.map +1 -0
  415. package/dist/lifecycle/backend.d.ts +51 -0
  416. package/dist/lifecycle/backend.d.ts.map +1 -0
  417. package/dist/lifecycle/backend.js +40 -0
  418. package/dist/lifecycle/backend.js.map +1 -0
  419. package/dist/lifecycle/commands/activation.commands.d.ts +97 -0
  420. package/dist/lifecycle/commands/activation.commands.d.ts.map +1 -0
  421. package/dist/lifecycle/commands/activation.commands.js +142 -0
  422. package/dist/lifecycle/commands/activation.commands.js.map +1 -0
  423. package/dist/lifecycle/commands/disable.d.ts +3 -0
  424. package/dist/lifecycle/commands/disable.d.ts.map +1 -0
  425. package/dist/lifecycle/commands/disable.js +126 -0
  426. package/dist/lifecycle/commands/disable.js.map +1 -0
  427. package/dist/lifecycle/commands/enable.d.ts +3 -0
  428. package/dist/lifecycle/commands/enable.d.ts.map +1 -0
  429. package/dist/lifecycle/commands/enable.js +102 -0
  430. package/dist/lifecycle/commands/enable.js.map +1 -0
  431. package/dist/lifecycle/commands/install.d.ts +3 -0
  432. package/dist/lifecycle/commands/install.d.ts.map +1 -0
  433. package/dist/lifecycle/commands/install.js +263 -0
  434. package/dist/lifecycle/commands/install.js.map +1 -0
  435. package/dist/lifecycle/commands/operator-entry.d.ts +104 -0
  436. package/dist/lifecycle/commands/operator-entry.d.ts.map +1 -0
  437. package/dist/lifecycle/commands/operator-entry.js +127 -0
  438. package/dist/lifecycle/commands/operator-entry.js.map +1 -0
  439. package/dist/lifecycle/commands/operator-runtime.d.ts +147 -0
  440. package/dist/lifecycle/commands/operator-runtime.d.ts.map +1 -0
  441. package/dist/lifecycle/commands/operator-runtime.js +40 -0
  442. package/dist/lifecycle/commands/operator-runtime.js.map +1 -0
  443. package/dist/lifecycle/commands/status.d.ts +3 -0
  444. package/dist/lifecycle/commands/status.d.ts.map +1 -0
  445. package/dist/lifecycle/commands/status.js +108 -0
  446. package/dist/lifecycle/commands/status.js.map +1 -0
  447. package/dist/lifecycle/commands/uninstall.d.ts +3 -0
  448. package/dist/lifecycle/commands/uninstall.d.ts.map +1 -0
  449. package/dist/lifecycle/commands/uninstall.js +223 -0
  450. package/dist/lifecycle/commands/uninstall.js.map +1 -0
  451. package/dist/lifecycle/divergence-declaration.d.ts +74 -0
  452. package/dist/lifecycle/divergence-declaration.d.ts.map +1 -0
  453. package/dist/lifecycle/divergence-declaration.js +92 -0
  454. package/dist/lifecycle/divergence-declaration.js.map +1 -0
  455. package/dist/lifecycle/i18n/en.json +4 -0
  456. package/dist/lifecycle/i18n/pl.json +4 -0
  457. package/dist/lifecycle/index.d.ts +110 -0
  458. package/dist/lifecycle/index.d.ts.map +1 -0
  459. package/dist/lifecycle/index.js +189 -0
  460. package/dist/lifecycle/index.js.map +1 -0
  461. package/dist/lifecycle/manifest-registry.d.ts +244 -0
  462. package/dist/lifecycle/manifest-registry.d.ts.map +1 -0
  463. package/dist/lifecycle/manifest-registry.js +223 -0
  464. package/dist/lifecycle/manifest-registry.js.map +1 -0
  465. package/dist/lifecycle/manifest.d.ts +166 -0
  466. package/dist/lifecycle/manifest.d.ts.map +1 -0
  467. package/dist/lifecycle/manifest.js +121 -0
  468. package/dist/lifecycle/manifest.js.map +1 -0
  469. package/dist/lifecycle/plugin.d.ts +56 -0
  470. package/dist/lifecycle/plugin.d.ts.map +1 -0
  471. package/dist/lifecycle/plugin.js +59 -0
  472. package/dist/lifecycle/plugin.js.map +1 -0
  473. package/dist/lifecycle/resident.d.ts +16 -0
  474. package/dist/lifecycle/resident.d.ts.map +1 -0
  475. package/dist/lifecycle/resident.js +59 -0
  476. package/dist/lifecycle/resident.js.map +1 -0
  477. package/dist/lifecycle/routes.admin.d.ts +57 -0
  478. package/dist/lifecycle/routes.admin.d.ts.map +1 -0
  479. package/dist/lifecycle/routes.admin.js +162 -0
  480. package/dist/lifecycle/routes.admin.js.map +1 -0
  481. package/dist/lifecycle/routes.storefront.d.ts +26 -0
  482. package/dist/lifecycle/routes.storefront.d.ts.map +1 -0
  483. package/dist/lifecycle/routes.storefront.js +36 -0
  484. package/dist/lifecycle/routes.storefront.js.map +1 -0
  485. package/dist/lifecycle/services/deactivation-ledger.d.ts +216 -0
  486. package/dist/lifecycle/services/deactivation-ledger.d.ts.map +1 -0
  487. package/dist/lifecycle/services/deactivation-ledger.js +171 -0
  488. package/dist/lifecycle/services/deactivation-ledger.js.map +1 -0
  489. package/dist/lifecycle/services/dep-graph.d.ts +119 -0
  490. package/dist/lifecycle/services/dep-graph.d.ts.map +1 -0
  491. package/dist/lifecycle/services/dep-graph.js +334 -0
  492. package/dist/lifecycle/services/dep-graph.js.map +1 -0
  493. package/dist/lifecycle/services/gating-graph.d.ts +164 -0
  494. package/dist/lifecycle/services/gating-graph.d.ts.map +1 -0
  495. package/dist/lifecycle/services/gating-graph.js +203 -0
  496. package/dist/lifecycle/services/gating-graph.js.map +1 -0
  497. package/dist/lifecycle/services/lock.d.ts +27 -0
  498. package/dist/lifecycle/services/lock.d.ts.map +1 -0
  499. package/dist/lifecycle/services/lock.js +82 -0
  500. package/dist/lifecycle/services/lock.js.map +1 -0
  501. package/dist/lifecycle/services/manifest-loader.d.ts +125 -0
  502. package/dist/lifecycle/services/manifest-loader.d.ts.map +1 -0
  503. package/dist/lifecycle/services/manifest-loader.js +210 -0
  504. package/dist/lifecycle/services/manifest-loader.js.map +1 -0
  505. package/dist/lifecycle/services/migration-ownership.d.ts +36 -0
  506. package/dist/lifecycle/services/migration-ownership.d.ts.map +1 -0
  507. package/dist/lifecycle/services/migration-ownership.js +15 -0
  508. package/dist/lifecycle/services/migration-ownership.js.map +1 -0
  509. package/dist/lifecycle/services/module-id-claims.d.ts +38 -0
  510. package/dist/lifecycle/services/module-id-claims.d.ts.map +1 -0
  511. package/dist/lifecycle/services/module-id-claims.js +123 -0
  512. package/dist/lifecycle/services/module-id-claims.js.map +1 -0
  513. package/dist/lifecycle/services/module-origin.d.ts +55 -0
  514. package/dist/lifecycle/services/module-origin.d.ts.map +1 -0
  515. package/dist/lifecycle/services/module-origin.js +47 -0
  516. package/dist/lifecycle/services/module-origin.js.map +1 -0
  517. package/dist/lifecycle/services/orchestrator.d.ts +235 -0
  518. package/dist/lifecycle/services/orchestrator.d.ts.map +1 -0
  519. package/dist/lifecycle/services/orchestrator.js +954 -0
  520. package/dist/lifecycle/services/orchestrator.js.map +1 -0
  521. package/dist/lifecycle/services/presence-load.d.ts +281 -0
  522. package/dist/lifecycle/services/presence-load.d.ts.map +1 -0
  523. package/dist/lifecycle/services/presence-load.js +437 -0
  524. package/dist/lifecycle/services/presence-load.js.map +1 -0
  525. package/dist/lifecycle/services/static-registry.d.ts +47 -0
  526. package/dist/lifecycle/services/static-registry.d.ts.map +1 -0
  527. package/dist/lifecycle/services/static-registry.js +41 -0
  528. package/dist/lifecycle/services/static-registry.js.map +1 -0
  529. package/dist/migrations/20260424T165847_core_foundation_init.d.ts +25 -0
  530. package/dist/migrations/20260424T165847_core_foundation_init.d.ts.map +1 -0
  531. package/dist/migrations/20260424T165847_core_foundation_init.js +238 -0
  532. package/dist/migrations/20260424T165847_core_foundation_init.js.map +1 -0
  533. package/dist/migrations/20260425T050720_core_commerce_init.d.ts +19 -0
  534. package/dist/migrations/20260425T050720_core_commerce_init.d.ts.map +1 -0
  535. package/dist/migrations/20260425T050720_core_commerce_init.js +200 -0
  536. package/dist/migrations/20260425T050720_core_commerce_init.js.map +1 -0
  537. package/dist/migrations/20260430T101450_core_settings_init.d.ts +25 -0
  538. package/dist/migrations/20260430T101450_core_settings_init.d.ts.map +1 -0
  539. package/dist/migrations/20260430T101450_core_settings_init.js +113 -0
  540. package/dist/migrations/20260430T101450_core_settings_init.js.map +1 -0
  541. package/dist/migrations/20260430T170044_core_sales_channels_promote.d.ts +67 -0
  542. package/dist/migrations/20260430T170044_core_sales_channels_promote.d.ts.map +1 -0
  543. package/dist/migrations/20260430T170044_core_sales_channels_promote.js +101 -0
  544. package/dist/migrations/20260430T170044_core_sales_channels_promote.js.map +1 -0
  545. package/dist/migrations/20260506T200657_core_module_lifecycle_init.d.ts +21 -0
  546. package/dist/migrations/20260506T200657_core_module_lifecycle_init.d.ts.map +1 -0
  547. package/dist/migrations/20260506T200657_core_module_lifecycle_init.js +41 -0
  548. package/dist/migrations/20260506T200657_core_module_lifecycle_init.js.map +1 -0
  549. package/dist/migrations/20260514T111329_core_settings_global_value.d.ts +30 -0
  550. package/dist/migrations/20260514T111329_core_settings_global_value.d.ts.map +1 -0
  551. package/dist/migrations/20260514T111329_core_settings_global_value.js +34 -0
  552. package/dist/migrations/20260514T111329_core_settings_global_value.js.map +1 -0
  553. package/dist/migrations/20260611T140411_core_settings_secret_value_type.d.ts +26 -0
  554. package/dist/migrations/20260611T140411_core_settings_secret_value_type.d.ts.map +1 -0
  555. package/dist/migrations/20260611T140411_core_settings_secret_value_type.js +63 -0
  556. package/dist/migrations/20260611T140411_core_settings_secret_value_type.js.map +1 -0
  557. package/dist/migrations/20260611T140419_core_settings_enum_options.d.ts +19 -0
  558. package/dist/migrations/20260611T140419_core_settings_enum_options.d.ts.map +1 -0
  559. package/dist/migrations/20260611T140419_core_settings_enum_options.js +23 -0
  560. package/dist/migrations/20260611T140419_core_settings_enum_options.js.map +1 -0
  561. package/dist/migrations/20260629T090100_core_settings_hidden_flag.d.ts +20 -0
  562. package/dist/migrations/20260629T090100_core_settings_hidden_flag.d.ts.map +1 -0
  563. package/dist/migrations/20260629T090100_core_settings_hidden_flag.js +24 -0
  564. package/dist/migrations/20260629T090100_core_settings_hidden_flag.js.map +1 -0
  565. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.d.ts +27 -0
  566. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.d.ts.map +1 -0
  567. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.js +32 -0
  568. package/dist/migrations/20260717T134752_core_tenant_scope_indexes.js.map +1 -0
  569. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.d.ts +24 -0
  570. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.d.ts.map +1 -0
  571. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.js +57 -0
  572. package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.js.map +1 -0
  573. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.d.ts +39 -0
  574. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.d.ts.map +1 -0
  575. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.js +59 -0
  576. package/dist/migrations/20260816T203339_core_retire_core_activation_settings.js.map +1 -0
  577. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.d.ts +34 -0
  578. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.d.ts.map +1 -0
  579. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.js +38 -0
  580. package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.js.map +1 -0
  581. package/dist/migrations/baseline-migrations.generated.d.ts +2 -0
  582. package/dist/migrations/baseline-migrations.generated.d.ts.map +1 -0
  583. package/dist/migrations/baseline-migrations.generated.js +136 -0
  584. package/dist/migrations/baseline-migrations.generated.js.map +1 -0
  585. package/dist/migrations/index.d.ts +62 -0
  586. package/dist/migrations/index.d.ts.map +1 -0
  587. package/dist/migrations/index.js +75 -0
  588. package/dist/migrations/index.js.map +1 -0
  589. package/dist/overlay/deployment-roots.d.ts +37 -0
  590. package/dist/overlay/deployment-roots.d.ts.map +1 -0
  591. package/dist/overlay/deployment-roots.js +90 -0
  592. package/dist/overlay/deployment-roots.js.map +1 -0
  593. package/dist/overlay/index.d.ts +62 -0
  594. package/dist/overlay/index.d.ts.map +1 -0
  595. package/dist/overlay/index.js +62 -0
  596. package/dist/overlay/index.js.map +1 -0
  597. package/dist/overlay/overlay-runtime.d.ts +173 -0
  598. package/dist/overlay/overlay-runtime.d.ts.map +1 -0
  599. package/dist/overlay/overlay-runtime.js +281 -0
  600. package/dist/overlay/overlay-runtime.js.map +1 -0
  601. package/dist/overlay/resolve-overlay.d.ts +41 -0
  602. package/dist/overlay/resolve-overlay.d.ts.map +1 -0
  603. package/dist/overlay/resolve-overlay.js +72 -0
  604. package/dist/overlay/resolve-overlay.js.map +1 -0
  605. package/dist/packages/index.d.ts +57 -0
  606. package/dist/packages/index.d.ts.map +1 -0
  607. package/dist/packages/index.js +57 -0
  608. package/dist/packages/index.js.map +1 -0
  609. package/dist/packages/installed-packages.d.ts +79 -0
  610. package/dist/packages/installed-packages.d.ts.map +1 -0
  611. package/dist/packages/installed-packages.js +312 -0
  612. package/dist/packages/installed-packages.js.map +1 -0
  613. package/dist/packages/package-entity-lookup.d.ts +120 -0
  614. package/dist/packages/package-entity-lookup.d.ts.map +1 -0
  615. package/dist/packages/package-entity-lookup.js +17 -0
  616. package/dist/packages/package-entity-lookup.js.map +1 -0
  617. package/dist/packages/package-runtime.d.ts +177 -0
  618. package/dist/packages/package-runtime.d.ts.map +1 -0
  619. package/dist/packages/package-runtime.js +386 -0
  620. package/dist/packages/package-runtime.js.map +1 -0
  621. package/dist/tenancy/derived-scope.d.ts +43 -0
  622. package/dist/tenancy/derived-scope.d.ts.map +1 -0
  623. package/dist/tenancy/derived-scope.js +76 -0
  624. package/dist/tenancy/derived-scope.js.map +1 -0
  625. package/dist/tenancy/escape-hatch.d.ts +30 -0
  626. package/dist/tenancy/escape-hatch.d.ts.map +1 -0
  627. package/dist/tenancy/escape-hatch.js +50 -0
  628. package/dist/tenancy/escape-hatch.js.map +1 -0
  629. package/dist/tenancy/filters.d.ts +87 -0
  630. package/dist/tenancy/filters.d.ts.map +1 -0
  631. package/dist/tenancy/filters.js +126 -0
  632. package/dist/tenancy/filters.js.map +1 -0
  633. package/dist/tenancy/index.d.ts +63 -0
  634. package/dist/tenancy/index.d.ts.map +1 -0
  635. package/dist/tenancy/index.js +61 -0
  636. package/dist/tenancy/index.js.map +1 -0
  637. package/dist/tenancy/org-scoped.decorator.d.ts +150 -0
  638. package/dist/tenancy/org-scoped.decorator.d.ts.map +1 -0
  639. package/dist/tenancy/org-scoped.decorator.js +339 -0
  640. package/dist/tenancy/org-scoped.decorator.js.map +1 -0
  641. package/dist/tenancy/org-write-guard.d.ts +106 -0
  642. package/dist/tenancy/org-write-guard.d.ts.map +1 -0
  643. package/dist/tenancy/org-write-guard.js +141 -0
  644. package/dist/tenancy/org-write-guard.js.map +1 -0
  645. package/dist/tenancy/resolve-tenant-context.d.ts +91 -0
  646. package/dist/tenancy/resolve-tenant-context.d.ts.map +1 -0
  647. package/dist/tenancy/resolve-tenant-context.js +85 -0
  648. package/dist/tenancy/resolve-tenant-context.js.map +1 -0
  649. package/dist/tenancy/scoped-em.d.ts +10 -0
  650. package/dist/tenancy/scoped-em.d.ts.map +1 -0
  651. package/dist/tenancy/scoped-em.js +11 -0
  652. package/dist/tenancy/scoped-em.js.map +1 -0
  653. package/dist/tenancy/tenant-context.d.ts +154 -0
  654. package/dist/tenancy/tenant-context.d.ts.map +1 -0
  655. package/dist/tenancy/tenant-context.js +109 -0
  656. package/dist/tenancy/tenant-context.js.map +1 -0
  657. package/package.json +123 -0
@@ -0,0 +1,164 @@
1
+ import type { ModuleManifest } from '@endora-commerce/contracts';
2
+ import { type DeclaredContribution } from '../../kernel/contribution-sinks.js';
3
+ /**
4
+ * The graph the **presence refusals** read — feature 073, FR-008, Amendment A1.
5
+ *
6
+ * It is deliberately not the graph the installer reads. `ModuleDepGraph`
7
+ * (`dep-graph.ts`) is built from `manifest.dependencies` alone because it has
8
+ * to be a DAG: it computes the topological install order and the reverse
9
+ * cascade order, and a cycle there fails the build. That constraint is what
10
+ * makes a handful of *real* runtime edges undeclarable — `addresses` must
11
+ * install after `organizations`, so `organizations` cannot declare `addresses`
12
+ * back, however certainly its customer routes call `addressService`.
13
+ *
14
+ * Withholding the declaration used to hide the edge from everything, including
15
+ * the flip-time refusals, which is how `catalog` came to resolve
16
+ * `pricingService` from a module an operator can switch off with nothing
17
+ * refusing the flip. The edges are now declared as
18
+ * `manifest.acknowledgedDependencies` and this graph is their reader:
19
+ *
20
+ * | Direction | Edges used | Why |
21
+ * | --- | --- | --- |
22
+ * | deactivating X — who still needs X? | `dependencies` ∪ `acknowledgedDependencies` | an acknowledged edge is a live resolution; the owner disappearing under it is exactly the failure this refuses |
23
+ * | activating X — what does X need? | `dependencies` only | the acknowledged edges are mutual **by construction**; requiring both ends present before either may be switched on is a deadlock, not a safeguard |
24
+ *
25
+ * That asymmetry is the same trade the install order makes, applied to the
26
+ * other axis, and it is why one union graph with two accessors beats two
27
+ * graphs.
28
+ *
29
+ * **`manifest.nonBindingDependencies` is the third array and this class reads
30
+ * none of it** (D-44). Those edges are real container resolutions whose
31
+ * declaring module has a defined behaviour when the owner is absent — a boot
32
+ * push into an ungated registry, or a read guarded by an
33
+ * `effectiveState.isPresent` probe — so there is nothing for a refusal to
34
+ * protect and refusing anyway would kill the owner's activation control for no
35
+ * gain. {@link nonBindingPortEdgesFrom} flattens them for
36
+ * `check-port-dependencies.ts`, which wants the ownership claim and not the
37
+ * lifecycle one; the omission from the constructor below is the decision, not
38
+ * an oversight, and `test/unit/_lifecycle/gating-graph.test.ts` pins it in both
39
+ * directions.
40
+ */
41
+ /** One withheld edge, flattened from the declaring manifest. */
42
+ export interface AcknowledgedPortEdge {
43
+ /** The module that resolves the port. */
44
+ readonly moduleId: string;
45
+ /** The module that owns it. */
46
+ readonly dependsOn: string;
47
+ /** The container registration name, e.g. `addressService`. */
48
+ readonly port: string;
49
+ readonly reason: string;
50
+ }
51
+ /**
52
+ * Every acknowledged edge in a manifest set, keyed the way
53
+ * `check-port-dependencies.ts` needs them: `<resolving module>:<port>`.
54
+ *
55
+ * The CI check and the runtime refusal read this one function over the one
56
+ * declaration set, so the two cannot disagree about which edges exist — they
57
+ * did, for as long as the list lived in the script as a constant.
58
+ */
59
+ export declare function acknowledgedPortEdgesFrom(manifests: readonly ModuleManifest[]): AcknowledgedPortEdge[];
60
+ /** One non-binding edge, flattened from the declaring manifest — D-44. */
61
+ export interface NonBindingPortEdge {
62
+ /** The module that reads the name. */
63
+ readonly moduleId: string;
64
+ /** The module that owns it. */
65
+ readonly dependsOn: string;
66
+ /** The container registration name, e.g. `promptActionToolRegistry`. */
67
+ readonly name: string;
68
+ readonly kind: 'contributes-to' | 'degrades-without' | 'refuses-without';
69
+ /**
70
+ * What stops working — required for `degrades-without` and for
71
+ * `refuses-without`, `null` for a contribution.
72
+ */
73
+ readonly whenAbsent: string | null;
74
+ readonly reason: string;
75
+ }
76
+ /**
77
+ * Every non-binding edge in a manifest set, keyed the way
78
+ * `check-port-dependencies.ts` needs them: `<resolving module>:<name>`.
79
+ *
80
+ * It sits beside {@link acknowledgedPortEdgesFrom} rather than in the check,
81
+ * for the reason that function exists: one declaration set, read by the check
82
+ * and by the runtime, so the two cannot disagree about which edges exist. What
83
+ * differs is who else reads it — an acknowledged edge reaches the graph below,
84
+ * and a non-binding one reaches the graph not at all.
85
+ *
86
+ * It used to reach **nothing**, which was true of all three kinds until the
87
+ * owner ruling of 2026-09-12. The `contributes-to` subset now reaches the
88
+ * container resolution through {@link declaredContributionsFrom}, so that a
89
+ * push into a registry this composition does not hold is dropped rather than
90
+ * throwing; `degrades-without` and `refuses-without` still reach nothing.
91
+ */
92
+ export declare function nonBindingPortEdgesFrom(manifests: readonly ModuleManifest[]): NonBindingPortEdge[];
93
+ /** Is this module effectively present? Supplied by the caller so this file stays pure. */
94
+ export type PresencePredicate = (moduleId: string) => boolean;
95
+ export declare class ModuleGatingGraph {
96
+ /** moduleId → the modules it declares in `dependencies`. */
97
+ private readonly declared;
98
+ /** moduleId → the modules it acknowledges without declaring. */
99
+ private readonly acknowledged;
100
+ /** moduleId → everything that depends on it, by either kind of edge. */
101
+ private readonly dependents;
102
+ constructor(manifests?: readonly ModuleManifest[]);
103
+ /** `manifest.dependencies` — the install-ordering edges, and only those. */
104
+ declaredDependenciesOf(moduleId: string): string[];
105
+ /** The withheld edges this module declares as acknowledged. */
106
+ acknowledgedDependenciesOf(moduleId: string): string[];
107
+ /** Direct dependents over **both** kinds of edge — the refusal direction. */
108
+ dependentsOf(moduleId: string): string[];
109
+ /**
110
+ * Who would be left resolving a module that is no longer there.
111
+ *
112
+ * **Direct dependents only, and that is not an approximation.** A transitive
113
+ * dependent can only be reached through an intermediate one; if that
114
+ * intermediate is present it blocks here on its own account, and if it is
115
+ * absent then the transitive dependent is already stranded on the
116
+ * intermediate, which this flip neither causes nor repairs. So the refusal
117
+ * decision is identical either way, and the direct set is the one an operator
118
+ * can act on: these are the modules to switch off first.
119
+ *
120
+ * The same shape the CLI takes on the other axis — `orchestrator.disable`
121
+ * blocks on currently-installed *direct* dependents (`dependents-block`).
122
+ */
123
+ presentDependentsOf(moduleId: string, isPresent: PresencePredicate): string[];
124
+ /**
125
+ * What this module needs that is not there — `dependencies` only.
126
+ *
127
+ * Acknowledged edges are excluded because they are mutual by construction:
128
+ * `catalog` acknowledges `price_lists` while `price_lists` declares
129
+ * `catalog`, so requiring each to be present before the other may be switched
130
+ * on leaves a pair that can never be switched on again. The install order
131
+ * makes exactly this trade, and for exactly this reason (Amendment A1).
132
+ */
133
+ absentDependenciesOf(moduleId: string, isPresent: PresencePredicate): string[];
134
+ }
135
+ /**
136
+ * The fallback manifest set, from whoever owns the registry.
137
+ *
138
+ * Idempotent and last-writer-wins: it is a module-scope installation, not a
139
+ * per-request choice.
140
+ */
141
+ export declare function provideDefaultGatingManifests(supplier: () => readonly ModuleManifest[]): void;
142
+ export declare function gatingGraph(): ModuleGatingGraph;
143
+ /** Install the deployment's manifest set. Idempotent; called from the presence load. */
144
+ export declare function installGatingGraph(manifests: readonly ModuleManifest[]): void;
145
+ /**
146
+ * The `contributes-to` edges, as the container resolution needs them (owner
147
+ * ruling, 2026-09-12; feature 117, A4).
148
+ *
149
+ * It is installed from **both** places this file establishes a manifest set —
150
+ * here and in {@link provideDefaultGatingManifests} — rather than from the
151
+ * presence load alone, because the question "did this module declare this
152
+ * contribution" has to be answerable in every process that composes modules,
153
+ * and those are the two points at which a process learns which manifests it
154
+ * has. Deriving it here rather than in the kernel is what keeps the kernel from
155
+ * importing a manifest: it receives a flattened pair list and knows nothing
156
+ * about `ModuleManifest`.
157
+ *
158
+ * The comment on {@link nonBindingPortEdgesFrom} above says a non-binding edge
159
+ * "reaches nothing". That was true of all three kinds until this ruling; the
160
+ * `contributes-to` subset now reaches the container resolution, and nothing
161
+ * else does.
162
+ */
163
+ export declare function declaredContributionsFrom(manifests: readonly ModuleManifest[]): DeclaredContribution[];
164
+ //# sourceMappingURL=gating-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gating-graph.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/services/gating-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,oCAAoC,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,oBAAoB,EAAE,CAaxB;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IACzE;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,kBAAkB,EAAE,CAetB;AAED,0FAA0F;AAC1F,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAE9D,qBAAa,iBAAiB;IAC5B,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;IACvE,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;gBAEjD,SAAS,GAAE,SAAS,cAAc,EAAO;IAoBrD,4EAA4E;IAC5E,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAIlD,+DAA+D;IAC/D,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAItD,6EAA6E;IAC7E,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAIxC;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAI7E;;;;;;;;OAQG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,EAAE;CAK/E;AAyBD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,SAAS,cAAc,EAAE,GAAG,IAAI,CAQ7F;AAED,wBAAgB,WAAW,IAAI,iBAAiB,CAc/C;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAG7E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,oBAAoB,EAAE,CAIxB"}
@@ -0,0 +1,203 @@
1
+ import { provideDeclaredContributions, } from '../../kernel/contribution-sinks.js';
2
+ /**
3
+ * Every acknowledged edge in a manifest set, keyed the way
4
+ * `check-port-dependencies.ts` needs them: `<resolving module>:<port>`.
5
+ *
6
+ * The CI check and the runtime refusal read this one function over the one
7
+ * declaration set, so the two cannot disagree about which edges exist — they
8
+ * did, for as long as the list lived in the script as a constant.
9
+ */
10
+ export function acknowledgedPortEdgesFrom(manifests) {
11
+ const edges = [];
12
+ for (const manifest of manifests) {
13
+ for (const edge of manifest.acknowledgedDependencies ?? []) {
14
+ edges.push({
15
+ moduleId: manifest.id,
16
+ dependsOn: edge.moduleId,
17
+ port: edge.port,
18
+ reason: edge.reason,
19
+ });
20
+ }
21
+ }
22
+ return edges;
23
+ }
24
+ /**
25
+ * Every non-binding edge in a manifest set, keyed the way
26
+ * `check-port-dependencies.ts` needs them: `<resolving module>:<name>`.
27
+ *
28
+ * It sits beside {@link acknowledgedPortEdgesFrom} rather than in the check,
29
+ * for the reason that function exists: one declaration set, read by the check
30
+ * and by the runtime, so the two cannot disagree about which edges exist. What
31
+ * differs is who else reads it — an acknowledged edge reaches the graph below,
32
+ * and a non-binding one reaches the graph not at all.
33
+ *
34
+ * It used to reach **nothing**, which was true of all three kinds until the
35
+ * owner ruling of 2026-09-12. The `contributes-to` subset now reaches the
36
+ * container resolution through {@link declaredContributionsFrom}, so that a
37
+ * push into a registry this composition does not hold is dropped rather than
38
+ * throwing; `degrades-without` and `refuses-without` still reach nothing.
39
+ */
40
+ export function nonBindingPortEdgesFrom(manifests) {
41
+ const edges = [];
42
+ for (const manifest of manifests) {
43
+ for (const edge of manifest.nonBindingDependencies ?? []) {
44
+ edges.push({
45
+ moduleId: manifest.id,
46
+ dependsOn: edge.moduleId,
47
+ name: edge.name,
48
+ kind: edge.kind,
49
+ whenAbsent: edge.whenAbsent ?? null,
50
+ reason: edge.reason,
51
+ });
52
+ }
53
+ }
54
+ return edges;
55
+ }
56
+ export class ModuleGatingGraph {
57
+ /** moduleId → the modules it declares in `dependencies`. */
58
+ declared = new Map();
59
+ /** moduleId → the modules it acknowledges without declaring. */
60
+ acknowledged = new Map();
61
+ /** moduleId → everything that depends on it, by either kind of edge. */
62
+ dependents = new Map();
63
+ constructor(manifests = []) {
64
+ const add = (owner, dependent) => {
65
+ let set = this.dependents.get(owner);
66
+ if (!set) {
67
+ set = new Set();
68
+ this.dependents.set(owner, set);
69
+ }
70
+ set.add(dependent);
71
+ };
72
+ for (const manifest of manifests) {
73
+ this.declared.set(manifest.id, new Set(manifest.dependencies));
74
+ for (const dep of manifest.dependencies)
75
+ add(dep, manifest.id);
76
+ const acknowledged = new Set((manifest.acknowledgedDependencies ?? []).map((edge) => edge.moduleId));
77
+ this.acknowledged.set(manifest.id, acknowledged);
78
+ for (const dep of acknowledged)
79
+ add(dep, manifest.id);
80
+ }
81
+ }
82
+ /** `manifest.dependencies` — the install-ordering edges, and only those. */
83
+ declaredDependenciesOf(moduleId) {
84
+ return [...(this.declared.get(moduleId) ?? [])].sort();
85
+ }
86
+ /** The withheld edges this module declares as acknowledged. */
87
+ acknowledgedDependenciesOf(moduleId) {
88
+ return [...(this.acknowledged.get(moduleId) ?? [])].sort();
89
+ }
90
+ /** Direct dependents over **both** kinds of edge — the refusal direction. */
91
+ dependentsOf(moduleId) {
92
+ return [...(this.dependents.get(moduleId) ?? [])].sort();
93
+ }
94
+ /**
95
+ * Who would be left resolving a module that is no longer there.
96
+ *
97
+ * **Direct dependents only, and that is not an approximation.** A transitive
98
+ * dependent can only be reached through an intermediate one; if that
99
+ * intermediate is present it blocks here on its own account, and if it is
100
+ * absent then the transitive dependent is already stranded on the
101
+ * intermediate, which this flip neither causes nor repairs. So the refusal
102
+ * decision is identical either way, and the direct set is the one an operator
103
+ * can act on: these are the modules to switch off first.
104
+ *
105
+ * The same shape the CLI takes on the other axis — `orchestrator.disable`
106
+ * blocks on currently-installed *direct* dependents (`dependents-block`).
107
+ */
108
+ presentDependentsOf(moduleId, isPresent) {
109
+ return this.dependentsOf(moduleId).filter((id) => id !== moduleId && isPresent(id));
110
+ }
111
+ /**
112
+ * What this module needs that is not there — `dependencies` only.
113
+ *
114
+ * Acknowledged edges are excluded because they are mutual by construction:
115
+ * `catalog` acknowledges `price_lists` while `price_lists` declares
116
+ * `catalog`, so requiring each to be present before the other may be switched
117
+ * on leaves a pair that can never be switched on again. The install order
118
+ * makes exactly this trade, and for exactly this reason (Amendment A1).
119
+ */
120
+ absentDependenciesOf(moduleId, isPresent) {
121
+ return this.declaredDependenciesOf(moduleId).filter((id) => id !== moduleId && !isPresent(id));
122
+ }
123
+ }
124
+ /**
125
+ * Process singleton, read by the activation refusals.
126
+ *
127
+ * It has **no empty default**, because an empty graph is a refusal that never
128
+ * fires — the silent fall-open this whole task exists to remove. There are two
129
+ * ways it gets a value, and they are different questions:
130
+ * {@link installGatingGraph} sets the deployment's real manifest set (core,
131
+ * overlay modules and installed packages) as part of the presence load, and
132
+ * {@link provideDefaultGatingManifests} says what to fall back to for a process
133
+ * that never runs one — which is most of the test harness.
134
+ *
135
+ * **The fallback is the host's to supply** (feature 080, D-160.11). This file
136
+ * read `REGISTERED_MANIFESTS` directly, which is the host application's
137
+ * registry: it derives from the generated manifest index and merges the
138
+ * deployment's overlay and the instance's installed packages, none of which the
139
+ * platform can see. `backend/src/lifecycle/registered-manifests.ts` installs it
140
+ * as it is loaded — that file is the manifest registry, so a process that can
141
+ * answer "which modules exist" has imported it, and one that cannot must not be
142
+ * given an empty answer instead.
143
+ */
144
+ let graph = null;
145
+ let defaultManifests = null;
146
+ /**
147
+ * The fallback manifest set, from whoever owns the registry.
148
+ *
149
+ * Idempotent and last-writer-wins: it is a module-scope installation, not a
150
+ * per-request choice.
151
+ */
152
+ export function provideDefaultGatingManifests(supplier) {
153
+ defaultManifests = supplier;
154
+ // The contribution declarations travel with the manifest set, in both of the
155
+ // places a process learns one — see `declaredContributionsFrom`. A process
156
+ // that has a manifest registry but never runs a presence load (a CLI, a
157
+ // fixture composition) still composes modules, and a contributor in it must
158
+ // get the same answer.
159
+ provideDeclaredContributions(() => declaredContributionsFrom(supplier()));
160
+ }
161
+ export function gatingGraph() {
162
+ if (graph)
163
+ return graph;
164
+ if (defaultManifests === null) {
165
+ throw new Error('[gating-graph] no gating graph and no default manifest set. The activation refusals ' +
166
+ 'read this graph, so answering from an empty one would let every flip through — ' +
167
+ 'exactly the silent fall-open feature 073 removed. A composed process gets its graph ' +
168
+ 'from the presence load (installGatingGraph); anything else must call ' +
169
+ 'provideDefaultGatingManifests first, which the host does as it loads its manifest ' +
170
+ 'registry.');
171
+ }
172
+ graph = new ModuleGatingGraph(defaultManifests());
173
+ return graph;
174
+ }
175
+ /** Install the deployment's manifest set. Idempotent; called from the presence load. */
176
+ export function installGatingGraph(manifests) {
177
+ graph = new ModuleGatingGraph(manifests);
178
+ provideDeclaredContributions(() => declaredContributionsFrom(manifests));
179
+ }
180
+ /**
181
+ * The `contributes-to` edges, as the container resolution needs them (owner
182
+ * ruling, 2026-09-12; feature 117, A4).
183
+ *
184
+ * It is installed from **both** places this file establishes a manifest set —
185
+ * here and in {@link provideDefaultGatingManifests} — rather than from the
186
+ * presence load alone, because the question "did this module declare this
187
+ * contribution" has to be answerable in every process that composes modules,
188
+ * and those are the two points at which a process learns which manifests it
189
+ * has. Deriving it here rather than in the kernel is what keeps the kernel from
190
+ * importing a manifest: it receives a flattened pair list and knows nothing
191
+ * about `ModuleManifest`.
192
+ *
193
+ * The comment on {@link nonBindingPortEdgesFrom} above says a non-binding edge
194
+ * "reaches nothing". That was true of all three kinds until this ruling; the
195
+ * `contributes-to` subset now reaches the container resolution, and nothing
196
+ * else does.
197
+ */
198
+ export function declaredContributionsFrom(manifests) {
199
+ return nonBindingPortEdgesFrom(manifests)
200
+ .filter((edge) => edge.kind === 'contributes-to')
201
+ .map((edge) => ({ moduleId: edge.moduleId, name: edge.name }));
202
+ }
203
+ //# sourceMappingURL=gating-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gating-graph.js","sourceRoot":"","sources":["../../../src/lifecycle/services/gating-graph.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,GAE7B,MAAM,oCAAoC,CAAC;AAoD5C;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAoC;IAEpC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,wBAAwB,IAAI,EAAE,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAmBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAoC;IAEpC,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,sBAAsB,IAAI,EAAE,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACrB,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,MAAM,OAAO,iBAAiB;IAC5B,4DAA4D;IAC3C,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACnE,gEAAgE;IAC/C,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;IACvE,wEAAwE;IACvD,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE7D,YAAY,YAAuC,EAAE;QACnD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,SAAiB,EAAQ,EAAE;YACrD,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;gBAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,YAAY;gBAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,CAAC,QAAQ,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CACvE,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;YACjD,KAAK,MAAM,GAAG,IAAI,YAAY;gBAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,sBAAsB,CAAC,QAAgB;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC;IAED,+DAA+D;IAC/D,0BAA0B,CAAC,QAAgB;QACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED,6EAA6E;IAC7E,YAAY,CAAC,QAAgB;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,QAAgB,EAAE,SAA4B;QAChE,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;;OAQG;IACH,oBAAoB,CAAC,QAAgB,EAAE,SAA4B;QACjE,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,MAAM,CACjD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAC1C,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,IAAI,KAAK,GAA6B,IAAI,CAAC;AAC3C,IAAI,gBAAgB,GAA6C,IAAI,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAyC;IACrF,gBAAgB,GAAG,QAAQ,CAAC;IAC5B,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,4EAA4E;IAC5E,uBAAuB;IACvB,4BAA4B,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,sFAAsF;YACpF,iFAAiF;YACjF,sFAAsF;YACtF,uEAAuE;YACvE,oFAAoF;YACpF,WAAW,CACd,CAAC;IACJ,CAAC;IACD,KAAK,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,SAAoC;IACrE,KAAK,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACzC,4BAA4B,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAoC;IAEpC,OAAO,uBAAuB,CAAC,SAAS,CAAC;SACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC;SAChD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Redis } from 'ioredis';
2
+ export declare const LOCK_KEY = "b2b:module:lifecycle:lock";
3
+ export declare const LOCK_TTL_SECONDS = 300;
4
+ export declare const LOCK_REFRESH_INTERVAL_MS = 60000;
5
+ export declare class LifecycleLockError extends Error {
6
+ readonly heldBy: string | null;
7
+ constructor(heldBy: string | null);
8
+ }
9
+ export interface LifecycleLeaseHandle {
10
+ /** UUID identifying this acquisition. */
11
+ readonly leaseId: string;
12
+ /** Stops the auto-refresh timer and releases the lock if still held. */
13
+ release(): Promise<void>;
14
+ }
15
+ /**
16
+ * Acquire the global lifecycle lock. Returns a handle that auto-extends
17
+ * the lease every 60 s and exposes `release()` for the caller's `finally`.
18
+ *
19
+ * Throws `LifecycleLockError` if the lock is currently held by someone
20
+ * else (single attempt — the lifecycle commands surface this as exit 75
21
+ * rather than block).
22
+ */
23
+ export declare function acquireLifecycleLock(redis: Redis, options?: {
24
+ ttlSeconds?: number;
25
+ refreshIntervalMs?: number;
26
+ }): Promise<LifecycleLeaseHandle>;
27
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/services/lock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,eAAO,MAAM,QAAQ,8BAA8B,CAAC;AACpD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AA2B/C,qBAAa,kBAAmB,SAAQ,KAAK;aACf,MAAM,EAAE,MAAM,GAAG,IAAI;gBAArB,MAAM,EAAE,MAAM,GAAG,IAAI;CAQlD;AAED,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAO,GAChE,OAAO,CAAC,oBAAoB,CAAC,CAoC/B"}
@@ -0,0 +1,82 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ export const LOCK_KEY = 'b2b:module:lifecycle:lock';
3
+ export const LOCK_TTL_SECONDS = 300; // 5 minutes
4
+ export const LOCK_REFRESH_INTERVAL_MS = 60_000; // 1 minute
5
+ /**
6
+ * Compare-and-delete release script. Prevents the case where a stale
7
+ * lease's TTL elapsed, the lock was acquired by someone else, and our
8
+ * own `finally` block then deletes their key.
9
+ */
10
+ const RELEASE_SCRIPT = `
11
+ if redis.call("get", KEYS[1]) == ARGV[1] then
12
+ return redis.call("del", KEYS[1])
13
+ else
14
+ return 0
15
+ end
16
+ `;
17
+ /**
18
+ * Compare-and-extend script. Refreshes the lease only when we still
19
+ * own it; otherwise reports zero so the caller can stop refreshing.
20
+ */
21
+ const EXTEND_SCRIPT = `
22
+ if redis.call("get", KEYS[1]) == ARGV[1] then
23
+ return redis.call("expire", KEYS[1], ARGV[2])
24
+ else
25
+ return 0
26
+ end
27
+ `;
28
+ export class LifecycleLockError extends Error {
29
+ heldBy;
30
+ constructor(heldBy) {
31
+ super(heldBy
32
+ ? `lifecycle lock is held by another process (lease ${heldBy})`
33
+ : 'lifecycle lock is currently held');
34
+ this.heldBy = heldBy;
35
+ this.name = 'LifecycleLockError';
36
+ }
37
+ }
38
+ /**
39
+ * Acquire the global lifecycle lock. Returns a handle that auto-extends
40
+ * the lease every 60 s and exposes `release()` for the caller's `finally`.
41
+ *
42
+ * Throws `LifecycleLockError` if the lock is currently held by someone
43
+ * else (single attempt — the lifecycle commands surface this as exit 75
44
+ * rather than block).
45
+ */
46
+ export async function acquireLifecycleLock(redis, options = {}) {
47
+ const ttl = options.ttlSeconds ?? LOCK_TTL_SECONDS;
48
+ const refreshIntervalMs = options.refreshIntervalMs ?? LOCK_REFRESH_INTERVAL_MS;
49
+ const leaseId = randomUUID();
50
+ const result = await redis.set(LOCK_KEY, leaseId, 'EX', ttl, 'NX');
51
+ if (result !== 'OK') {
52
+ const heldBy = await redis.get(LOCK_KEY);
53
+ throw new LifecycleLockError(heldBy);
54
+ }
55
+ let released = false;
56
+ const refresh = setInterval(() => {
57
+ if (released)
58
+ return;
59
+ void redis
60
+ .eval(EXTEND_SCRIPT, 1, LOCK_KEY, leaseId, String(ttl))
61
+ .catch(() => {
62
+ /* refresh failure is silent — release() will still run */
63
+ });
64
+ }, refreshIntervalMs);
65
+ // Don't keep the event loop alive on the refresh interval.
66
+ refresh.unref?.();
67
+ return {
68
+ leaseId,
69
+ async release() {
70
+ if (released)
71
+ return;
72
+ released = true;
73
+ clearInterval(refresh);
74
+ await redis
75
+ .eval(RELEASE_SCRIPT, 1, LOCK_KEY, leaseId)
76
+ .catch(() => {
77
+ /* swallow — the lock will expire on its TTL anyway */
78
+ });
79
+ },
80
+ };
81
+ }
82
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/lifecycle/services/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,CAAC,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,YAAY;AACjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,CAAC,WAAW;AAE3D;;;;GAIG;AACH,MAAM,cAAc,GAAG;;;;;;CAMtB,CAAC;AAEF;;;GAGG;AACH,MAAM,aAAa,GAAG;;;;;;CAMrB,CAAC;AAEF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACf;IAA5B,YAA4B,MAAqB;QAC/C,KAAK,CACH,MAAM;YACJ,CAAC,CAAC,oDAAoD,MAAM,GAAG;YAC/D,CAAC,CAAC,kCAAkC,CACvC,CAAC;QALwB,WAAM,GAAN,MAAM,CAAe;QAM/C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AASD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAY,EACZ,UAA+D,EAAE;IAEjE,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,gBAAgB,CAAC;IACnD,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,wBAAwB,CAAC;IAChF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,IAAI,QAAQ;YAAE,OAAO;QACrB,KAAK,KAAK;aACP,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;aACtD,KAAK,CAAC,GAAG,EAAE;YACV,0DAA0D;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtB,2DAA2D;IAC3D,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAElB,OAAO;QACL,OAAO;QACP,KAAK,CAAC,OAAO;YACX,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,KAAK;iBACR,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC;iBAC1C,KAAK,CAAC,GAAG,EAAE;gBACV,sDAAsD;YACxD,CAAC,CAAC,CAAC;QACP,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { type ModuleManifest, type ModuleInstallHook, type ModuleLifecycleParticipant, type ModuleUninstallHook, type ModuleRecentActivity } from '@endora-commerce/contracts';
2
+ import { ModuleDepGraph } from './dep-graph.js';
3
+ export interface LoadedModuleEntry<EM = unknown, R = unknown> {
4
+ manifest: ModuleManifest;
5
+ /** Absolute path to the manifest.ts file on disk. */
6
+ filePath: string;
7
+ installHook?: ModuleInstallHook<EM, R>;
8
+ uninstallHook?: ModuleUninstallHook<EM, R>;
9
+ /**
10
+ * This module's interest in *every other* module's install and hard
11
+ * uninstall — feature 080, T036a / D-159. Declared as an export of the
12
+ * module's `manifest.ts`, exactly as the two hooks above are.
13
+ */
14
+ lifecycleParticipant?: ModuleLifecycleParticipant<EM>;
15
+ /**
16
+ * The module's recent-activity eligibility — feature 080, T042j / D-163.1.
17
+ * The orchestrator reads it to reconcile the visibility Setting the
18
+ * declaration implies, which for a package is the only author it has.
19
+ */
20
+ recentActivity?: ModuleRecentActivity;
21
+ }
22
+ /** A participant, with the module that declared it — named in a failure. */
23
+ export interface LoadedLifecycleParticipant<EM = unknown> {
24
+ moduleId: string;
25
+ participant: ModuleLifecycleParticipant<EM>;
26
+ }
27
+ export interface LoadedManifestRegistry<EM = unknown, R = unknown> {
28
+ modules: Map<string, LoadedModuleEntry<EM, R>>;
29
+ graph: ModuleDepGraph;
30
+ /**
31
+ * Every lifecycle participant the modules in this registry declare — or
32
+ * `null` when whoever built this registry is in no position to say.
33
+ *
34
+ * The two answers are different facts and the field exists to keep them
35
+ * apart. `[]` means *"I enumerated the modules and none declares one"*, and
36
+ * the orchestrator proceeds. `null` means *"I cannot enumerate them"*, and
37
+ * the orchestrator **refuses** the operation rather than performing an
38
+ * install that silently reconciles nothing. Collapsing the two is the
39
+ * fail-open this field was added to close: the reconcilers used to be
40
+ * optional injected values, so a caller that passed neither got an install
41
+ * indistinguishable from one where there was nothing to reconcile. The idiom
42
+ * is `MigrationOwnership.migrationNamesFor`'s, eleven lines from where the
43
+ * orchestrator reads it (`src/db/configured-migrations.ts`).
44
+ *
45
+ * It is **required**, so a builder cannot omit the answer: `[]` for a fixture
46
+ * registry that carries no participants is a declaration a reader can see.
47
+ */
48
+ participants: readonly LoadedLifecycleParticipant<EM>[] | null;
49
+ }
50
+ /**
51
+ * Collect the participants declared by a set of loaded entries.
52
+ *
53
+ * Sorted by module id so the order a projection is written in is a property of
54
+ * the platform rather than of whichever walk produced the map.
55
+ */
56
+ export declare function collectLifecycleParticipants<EM = unknown, R = unknown>(entries: Iterable<LoadedModuleEntry<EM, R>>): LoadedLifecycleParticipant<EM>[];
57
+ export declare class ManifestLoadError extends Error {
58
+ readonly kind: 'duplicate-id' | 'cycle' | 'self-dep' | 'orphan-dep' | 'folder-id-mismatch' | 'package-root' | 'parse-failed';
59
+ constructor(kind: 'duplicate-id' | 'cycle' | 'self-dep' | 'orphan-dep' | 'folder-id-mismatch' | 'package-root' | 'parse-failed', message: string);
60
+ }
61
+ export interface DiscoverOptions {
62
+ /** Root directory to scan (e.g. `backend/src/modules`). */
63
+ modulesRoot: string;
64
+ /**
65
+ * Subdirectories under `modulesRoot` that the loader should INCLUDE.
66
+ * Defaults to "every direct subdirectory". Used by tests to scope
67
+ * discovery to a single fixture tree.
68
+ */
69
+ include?: readonly string[];
70
+ /**
71
+ * Names of subdirectories under `modulesRoot` to ignore (e.g.
72
+ * `__pycache__`-like or test fixtures). Defaults to none.
73
+ */
74
+ exclude?: readonly string[];
75
+ }
76
+ /**
77
+ * Discover every `manifest.ts` under `modulesRoot/<id>/manifest.ts` and
78
+ * dynamically import each module. Returns the validated registry plus
79
+ * the dep graph derived from declarations.
80
+ *
81
+ * Production builds may swap this loader for a generated
82
+ * `manifest-index.ts` that imports the same modules eagerly — this
83
+ * runtime path is for dev/test where the file system is the source of
84
+ * truth.
85
+ *
86
+ * **Identity here is the directory name, and that scopes this loader** (feature
87
+ * 080, T032). It walks a tree this repository lays out, where Principle VI says
88
+ * `<id>/manifest.ts` — so the folder name is a claim about the id and a
89
+ * disagreement is a defect. An **installed package** has neither property: its
90
+ * directory is its npm name (`@endora-commerce/mod-blog`), and its identity is
91
+ * the `endora.id` field of its `package.json` (D-142), checked against its
92
+ * manifest by `src/packages/package-runtime.ts`. Pointing this loader at a
93
+ * `node_modules` is therefore refused outright rather than walked — see
94
+ * {@link ManifestLoadError} kind `package-root`. Without that refusal the walk
95
+ * happens to work and then reports `folder-id-mismatch`, which blames a vendor
96
+ * for naming their package correctly and sends the reader to fix the one thing
97
+ * that is right.
98
+ */
99
+ export declare function discoverManifests<EM = unknown, R = unknown>(opts: DiscoverOptions): Promise<LoadedManifestRegistry<EM, R>>;
100
+ /**
101
+ * Convenience for tests: resolve `modulesRoot` relative to a test file.
102
+ * Avoids hard-coding paths that break under different working dirs.
103
+ */
104
+ export declare function resolveFromFile(metaUrl: string, relative: string): string;
105
+ /** Test helper — assert that a value is one of the known load-error kinds. */
106
+ export declare function isLoadError(err: unknown): err is ManifestLoadError;
107
+ /**
108
+ * Production loader entry point: scans the project's
109
+ * `backend/src/modules` for every `manifest.ts`. Skips the fixtures
110
+ * trees under `test/`. Used by `composition.ts` at boot.
111
+ */
112
+ export declare function loadProjectManifests<EM = unknown, R = unknown>(modulesRoot: string): Promise<LoadedManifestRegistry<EM, R>>;
113
+ /**
114
+ * The folder name a **directory-named** module's id comes from.
115
+ *
116
+ * It answers for the anchor {@link discoverManifests} produces — a
117
+ * `manifest.ts` under `<modules root>/<id>/`. It refuses a `package.json`
118
+ * anchor, which is what a resolved package entry's `filePath` is (feature 080,
119
+ * T032): `basename(dirname(...))` would answer `mod-blog`, the tail of an npm
120
+ * name, which is neither the module id nor even unique without the `@scope`
121
+ * this drops. A confident wrong answer is worse than a refusal — a package's id
122
+ * is its `endora.id`, and `resolvedManifestEntries()` already carries it.
123
+ */
124
+ export declare function folderNameFromPath(filePath: string): string;
125
+ //# sourceMappingURL=manifest-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-loader.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/services/manifest-loader.ts"],"names":[],"mappings":"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"}