@logixjs/core 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/LICENSE +201 -0
  2. package/dist/{Bound-BN1DQ_lM.d.ts → Bound-CEa1ihvH.d.ts} +2 -2
  3. package/dist/{Bound-BPIfH9SS.d.cts → Bound-CNLNkC7c.d.cts} +2 -2
  4. package/dist/Bound.cjs +620 -163
  5. package/dist/Bound.cjs.map +1 -1
  6. package/dist/Bound.d.cts +3 -3
  7. package/dist/Bound.d.ts +3 -3
  8. package/dist/Bound.js +14 -14
  9. package/dist/{Debug-Bq8Sqjcr.d.cts → Debug-BhMYr-1i.d.cts} +3 -3
  10. package/dist/{Debug-B5q5Bkzx.d.ts → Debug-ByM7m4Ft.d.ts} +3 -3
  11. package/dist/Debug.cjs +553 -32
  12. package/dist/Debug.cjs.map +1 -1
  13. package/dist/Debug.d.cts +10 -8
  14. package/dist/Debug.d.ts +10 -8
  15. package/dist/Debug.js +12 -10
  16. package/dist/EffectOp.cjs.map +1 -1
  17. package/dist/EffectOp.js +2 -3
  18. package/dist/EffectOp.js.map +1 -1
  19. package/dist/Env.cjs +664 -6
  20. package/dist/Env.cjs.map +1 -1
  21. package/dist/Env.js +5 -2
  22. package/dist/ExternalStore-BAz83PVq.d.cts +60 -0
  23. package/dist/ExternalStore-BYWPbYs8.d.ts +60 -0
  24. package/dist/ExternalStore.cjs +746 -0
  25. package/dist/ExternalStore.cjs.map +1 -0
  26. package/dist/ExternalStore.d.cts +4 -0
  27. package/dist/ExternalStore.d.ts +4 -0
  28. package/dist/ExternalStore.js +19 -0
  29. package/dist/ExternalStore.js.map +1 -0
  30. package/dist/{Flow-1fZT8MpX.d.cts → Flow-BlSoMmhV.d.cts} +2 -2
  31. package/dist/{Flow-BhpjE22E.d.ts → Flow-CQSGve5c.d.ts} +2 -2
  32. package/dist/Flow.cjs +2 -2
  33. package/dist/Flow.cjs.map +1 -1
  34. package/dist/Flow.d.cts +4 -4
  35. package/dist/Flow.d.ts +4 -4
  36. package/dist/Flow.js +7 -8
  37. package/dist/{Handle-D_cLW1Z3.d.ts → Handle-B7PSmsrY.d.ts} +1 -1
  38. package/dist/{Handle-D8D1zPb_.d.cts → Handle-ByovhL-c.d.cts} +1 -1
  39. package/dist/Handle.d.cts +3 -3
  40. package/dist/Handle.d.ts +3 -3
  41. package/dist/{Kernel-CnGE1Fyk.d.ts → Kernel-DGSpS4GM.d.ts} +2 -2
  42. package/dist/{Kernel-8kC-jOda.d.cts → Kernel-DZAk-Mrn.d.cts} +2 -2
  43. package/dist/Kernel.cjs +680 -22
  44. package/dist/Kernel.cjs.map +1 -1
  45. package/dist/Kernel.d.cts +10 -8
  46. package/dist/Kernel.d.ts +10 -8
  47. package/dist/Kernel.js +7 -4
  48. package/dist/{Link-Db7975nU.d.ts → Link-Cm4eR9n0.d.ts} +10 -3
  49. package/dist/{Link-fX8x1eCK.d.cts → Link-DF8i8iWR.d.cts} +10 -3
  50. package/dist/Link.cjs +1128 -86
  51. package/dist/Link.cjs.map +1 -1
  52. package/dist/Link.d.cts +3 -3
  53. package/dist/Link.d.ts +3 -3
  54. package/dist/Link.js +30 -25
  55. package/dist/{Logic-DRh4sDZj.d.cts → Logic-BcQA0AvE.d.cts} +1 -1
  56. package/dist/{Logic-BRjEMr-W.d.ts → Logic-OotSE1xw.d.ts} +1 -1
  57. package/dist/Logic.d.cts +3 -3
  58. package/dist/Logic.d.ts +3 -3
  59. package/dist/{MatchBuilder-CJk5oCkR.d.cts → MatchBuilder-BNDJ8waF.d.ts} +1 -1
  60. package/dist/{MatchBuilder-0QOc-nlU.d.ts → MatchBuilder-CvZ5WY1B.d.cts} +1 -1
  61. package/dist/MatchBuilder.d.cts +4 -4
  62. package/dist/MatchBuilder.d.ts +4 -4
  63. package/dist/Middleware-D8tUDLv_.d.cts +100 -0
  64. package/dist/Middleware-DS7CbTTN.d.ts +100 -0
  65. package/dist/Middleware.cjs +461 -13
  66. package/dist/Middleware.cjs.map +1 -1
  67. package/dist/Middleware.d.cts +2 -86
  68. package/dist/Middleware.d.ts +2 -86
  69. package/dist/Middleware.js +13 -11
  70. package/dist/{Module-DnzluX2J.d.ts → Module-CFj0I2yE.d.ts} +45 -18
  71. package/dist/{Module-B_0xRDMR.d.cts → Module-DpXPW9EQ.d.cts} +45 -18
  72. package/dist/Module.cjs +8583 -5741
  73. package/dist/Module.cjs.map +1 -1
  74. package/dist/Module.d.cts +5 -4
  75. package/dist/Module.d.ts +5 -4
  76. package/dist/Module.js +32 -27
  77. package/dist/ModuleTag-BcVF6z7B.d.ts +113 -0
  78. package/dist/ModuleTag-DuZXo_NS.d.cts +113 -0
  79. package/dist/ModuleTag.cjs +2609 -1232
  80. package/dist/ModuleTag.cjs.map +1 -1
  81. package/dist/ModuleTag.d.cts +4 -4
  82. package/dist/ModuleTag.d.ts +4 -4
  83. package/dist/ModuleTag.js +28 -25
  84. package/dist/{Observability-cY4kLn0S.d.ts → Observability-D-ZWeEVb.d.ts} +22 -15
  85. package/dist/{Observability-COqEvp2C.d.cts → Observability-V7sRMYTh.d.cts} +22 -15
  86. package/dist/Observability.cjs +1938 -640
  87. package/dist/Observability.cjs.map +1 -1
  88. package/dist/Observability.d.cts +4 -4
  89. package/dist/Observability.d.ts +4 -4
  90. package/dist/Observability.js +21 -19
  91. package/dist/{Process-mL8fHDSB.d.cts → Process-B55aJMFk.d.cts} +29 -4
  92. package/dist/{Process-CM9xbMdP.d.ts → Process-DvhFEwUS.d.ts} +29 -4
  93. package/dist/Process.cjs +1122 -85
  94. package/dist/Process.cjs.map +1 -1
  95. package/dist/Process.d.cts +4 -3
  96. package/dist/Process.d.ts +4 -3
  97. package/dist/Process.js +27 -22
  98. package/dist/{ReadQuery-BlMwhe-F.d.ts → ReadQuery-C4vZ8Prc.d.ts} +2 -2
  99. package/dist/{ReadQuery-SinbStGF.d.ts → ReadQuery-CafjlJQo.d.cts} +1 -1
  100. package/dist/{ReadQuery-SinbStGF.d.cts → ReadQuery-CafjlJQo.d.ts} +1 -1
  101. package/dist/{ReadQuery-CL5XlXts.d.cts → ReadQuery-mc0NgrFV.d.cts} +2 -2
  102. package/dist/ReadQuery.cjs +3 -3
  103. package/dist/ReadQuery.cjs.map +1 -1
  104. package/dist/ReadQuery.d.cts +2 -2
  105. package/dist/ReadQuery.d.ts +2 -2
  106. package/dist/ReadQuery.js +3 -3
  107. package/dist/{Reflection-CQnKwPXj.d.ts → Reflection-C8xZ267q.d.ts} +88 -7
  108. package/dist/{Reflection-Kabo1mlU.d.cts → Reflection-DP7Vsv3f.d.cts} +88 -7
  109. package/dist/Reflection.cjs +2934 -1553
  110. package/dist/Reflection.cjs.map +1 -1
  111. package/dist/Reflection.d.cts +14 -11
  112. package/dist/Reflection.d.ts +14 -11
  113. package/dist/Reflection.js +26 -21
  114. package/dist/Resource.cjs +670 -12
  115. package/dist/Resource.cjs.map +1 -1
  116. package/dist/Resource.js +6 -3
  117. package/dist/Root.cjs +675 -17
  118. package/dist/Root.cjs.map +1 -1
  119. package/dist/Root.js +7 -3
  120. package/dist/{Runtime-CtyzZG4i.d.ts → Runtime-BWc9YfUB.d.ts} +37 -7
  121. package/dist/{Runtime-B-aL-f29.d.cts → Runtime-PShIC4DW.d.cts} +37 -7
  122. package/dist/Runtime.cjs +1899 -809
  123. package/dist/Runtime.cjs.map +1 -1
  124. package/dist/Runtime.d.cts +14 -11
  125. package/dist/Runtime.d.ts +14 -11
  126. package/dist/Runtime.js +33 -28
  127. package/dist/ScopeRegistry.cjs +668 -10
  128. package/dist/ScopeRegistry.cjs.map +1 -1
  129. package/dist/ScopeRegistry.js +6 -3
  130. package/dist/{StateTrait-OWhbj12c.d.cts → StateTrait-CQsDlXJm.d.cts} +23 -6
  131. package/dist/{StateTrait-BGsZghTz.d.ts → StateTrait-YvJzVDKl.d.ts} +23 -6
  132. package/dist/StateTrait.cjs +1475 -370
  133. package/dist/StateTrait.cjs.map +1 -1
  134. package/dist/StateTrait.d.cts +7 -5
  135. package/dist/StateTrait.d.ts +7 -5
  136. package/dist/StateTrait.js +17 -14
  137. package/dist/{TraitLifecycle-LdIWmKlg.d.ts → TraitLifecycle-CjIBICAA.d.ts} +2 -2
  138. package/dist/{TraitLifecycle-CwV5WPFX.d.cts → TraitLifecycle-NmqGiXPC.d.cts} +2 -2
  139. package/dist/TraitLifecycle.cjs +489 -32
  140. package/dist/TraitLifecycle.cjs.map +1 -1
  141. package/dist/TraitLifecycle.d.cts +4 -4
  142. package/dist/TraitLifecycle.d.ts +4 -4
  143. package/dist/TraitLifecycle.js +7 -7
  144. package/dist/Workflow-BlFG_20_.d.cts +414 -0
  145. package/dist/Workflow-CW9S_aAP.d.ts +414 -0
  146. package/dist/Workflow.cjs +2977 -0
  147. package/dist/Workflow.cjs.map +1 -0
  148. package/dist/Workflow.d.cts +7 -0
  149. package/dist/Workflow.d.ts +7 -0
  150. package/dist/Workflow.js +55 -0
  151. package/dist/Workflow.js.map +1 -0
  152. package/dist/{chunk-G5ZBFPNU.js → chunk-2A4UKO2D.js} +2 -2
  153. package/dist/chunk-2DE6D42I.js +248 -0
  154. package/dist/chunk-2DE6D42I.js.map +1 -0
  155. package/dist/{chunk-ANLBCBDC.js → chunk-2DVLMSOE.js} +6 -6
  156. package/dist/{chunk-BE3HW4FY.js → chunk-34CF6OGE.js} +14 -16
  157. package/dist/chunk-34CF6OGE.js.map +1 -0
  158. package/dist/{chunk-ZFY7U2FR.js → chunk-3LPIXG56.js} +43 -3
  159. package/dist/chunk-3LPIXG56.js.map +1 -0
  160. package/dist/chunk-3VZYDNXZ.js +10 -0
  161. package/dist/chunk-3VZYDNXZ.js.map +1 -0
  162. package/dist/{chunk-3TMODYZV.js → chunk-3XO4HR6V.js} +2 -2
  163. package/dist/chunk-46FGVWRF.js +817 -0
  164. package/dist/chunk-46FGVWRF.js.map +1 -0
  165. package/dist/chunk-4LODUXFI.js +288 -0
  166. package/dist/chunk-4LODUXFI.js.map +1 -0
  167. package/dist/{chunk-GMPEOUP2.js → chunk-4MZ7BT3R.js} +2 -2
  168. package/dist/chunk-4MZ7BT3R.js.map +1 -0
  169. package/dist/{chunk-TKZ7MEIA.js → chunk-53GVPGSM.js} +2 -2
  170. package/dist/{chunk-KP7MUZNX.js → chunk-5W2V2NVJ.js} +2 -2
  171. package/dist/chunk-5W2V2NVJ.js.map +1 -0
  172. package/dist/chunk-6DACKW3D.js +613 -0
  173. package/dist/chunk-6DACKW3D.js.map +1 -0
  174. package/dist/chunk-AQ7L2QZ5.js +1395 -0
  175. package/dist/chunk-AQ7L2QZ5.js.map +1 -0
  176. package/dist/{chunk-NZJKFF45.js → chunk-C2UZZQ76.js} +2 -2
  177. package/dist/chunk-CCKP5Z6F.js +701 -0
  178. package/dist/chunk-CCKP5Z6F.js.map +1 -0
  179. package/dist/chunk-CUKM2XUW.js +27 -0
  180. package/dist/{chunk-QCHIQWAJ.js.map → chunk-CUKM2XUW.js.map} +1 -1
  181. package/dist/{chunk-M2RGJPXX.js → chunk-DBD6Q6JH.js} +3 -3
  182. package/dist/{chunk-ZGDVUPTM.js → chunk-EB4RGQO3.js} +2 -2
  183. package/dist/{chunk-PAYXCY6A.js → chunk-G7ESIQTI.js} +12 -14
  184. package/dist/chunk-G7ESIQTI.js.map +1 -0
  185. package/dist/chunk-GPBAZQ23.js +348 -0
  186. package/dist/chunk-GPBAZQ23.js.map +1 -0
  187. package/dist/{chunk-OFADUJWJ.js → chunk-I4LCE5OY.js} +3 -5
  188. package/dist/{chunk-OFADUJWJ.js.map → chunk-I4LCE5OY.js.map} +1 -1
  189. package/dist/{chunk-DFNM3WX2.js → chunk-IMCC6TBN.js} +158 -39
  190. package/dist/chunk-IMCC6TBN.js.map +1 -0
  191. package/dist/{chunk-76WT3HOR.js → chunk-IROZNQAF.js} +22 -21
  192. package/dist/chunk-IROZNQAF.js.map +1 -0
  193. package/dist/{chunk-TAAPQVZN.js → chunk-ISKNULNH.js} +2 -2
  194. package/dist/chunk-J3CWXIPV.js +242 -0
  195. package/dist/chunk-J3CWXIPV.js.map +1 -0
  196. package/dist/{chunk-PYOE4VSI.js → chunk-JBKYRTCS.js} +224 -161
  197. package/dist/chunk-JBKYRTCS.js.map +1 -0
  198. package/dist/{chunk-66ALHVEX.js → chunk-KKIAYH4X.js} +3 -3
  199. package/dist/{chunk-3RMKLXHX.js → chunk-KLDVG3SY.js} +2 -2
  200. package/dist/{chunk-BABLDP24.js → chunk-KSZQYSEH.js} +3 -3
  201. package/dist/chunk-KSZQYSEH.js.map +1 -0
  202. package/dist/{chunk-CW6T36TN.js → chunk-M3M7JFAH.js} +4 -4
  203. package/dist/chunk-M3M7JFAH.js.map +1 -0
  204. package/dist/{chunk-THATMZXD.js → chunk-MLB253V2.js} +2 -2
  205. package/dist/{chunk-THATMZXD.js.map → chunk-MLB253V2.js.map} +1 -1
  206. package/dist/{chunk-JGIWG6SR.js → chunk-MS77U77X.js} +664 -550
  207. package/dist/chunk-MS77U77X.js.map +1 -0
  208. package/dist/chunk-MW4FA3MW.js +23 -0
  209. package/dist/chunk-MW4FA3MW.js.map +1 -0
  210. package/dist/chunk-MYKNINNN.js +228 -0
  211. package/dist/chunk-MYKNINNN.js.map +1 -0
  212. package/dist/{chunk-4CQAV7YB.js → chunk-O6TTQXTY.js} +2 -2
  213. package/dist/{chunk-NBD3KUOZ.js → chunk-OJDJ4VDQ.js} +35 -24
  214. package/dist/chunk-OJDJ4VDQ.js.map +1 -0
  215. package/dist/{chunk-NQZ2OSGR.js → chunk-PVZEMNJY.js} +9 -9
  216. package/dist/chunk-PVZEMNJY.js.map +1 -0
  217. package/dist/chunk-RN26DV2M.js +271 -0
  218. package/dist/chunk-RN26DV2M.js.map +1 -0
  219. package/dist/{chunk-JCXGZRMU.js → chunk-RQQW3IQC.js} +3 -3
  220. package/dist/chunk-RQQW3IQC.js.map +1 -0
  221. package/dist/{chunk-24VULZ7A.js → chunk-TKOGZDD6.js} +3 -3
  222. package/dist/{chunk-EGK3KN7B.js → chunk-TQYLVXGY.js} +70 -39
  223. package/dist/chunk-TQYLVXGY.js.map +1 -0
  224. package/dist/{chunk-QMM6O4CD.js → chunk-UACD2CL2.js} +15 -3
  225. package/dist/{chunk-QMM6O4CD.js.map → chunk-UACD2CL2.js.map} +1 -1
  226. package/dist/{chunk-M3WTHJHJ.js → chunk-VH575UTV.js} +30 -34
  227. package/dist/chunk-VH575UTV.js.map +1 -0
  228. package/dist/{chunk-AUIR5O6W.js → chunk-WWBMC24F.js} +9 -15
  229. package/dist/chunk-WWBMC24F.js.map +1 -0
  230. package/dist/{chunk-JWOYLO27.js → chunk-WYJUJV4L.js} +80 -7
  231. package/dist/chunk-WYJUJV4L.js.map +1 -0
  232. package/dist/{chunk-EY4NZKDR.js → chunk-XFMMPYNU.js} +2 -2
  233. package/dist/chunk-Y4VRBIS6.js +35 -0
  234. package/dist/chunk-Y4VRBIS6.js.map +1 -0
  235. package/dist/{chunk-DMBALCE2.js → chunk-ZC7MSQ5U.js} +77 -4
  236. package/dist/chunk-ZC7MSQ5U.js.map +1 -0
  237. package/dist/{chunk-OGWBVHB3.js → chunk-ZCK6SCOE.js} +67 -8
  238. package/dist/chunk-ZCK6SCOE.js.map +1 -0
  239. package/dist/{chunk-IHVBV5C2.js → chunk-ZTFTABXV.js} +2 -1
  240. package/dist/chunk-ZTFTABXV.js.map +1 -0
  241. package/dist/index.cjs +9532 -5017
  242. package/dist/index.cjs.map +1 -1
  243. package/dist/index.d.cts +163 -27
  244. package/dist/index.d.ts +163 -27
  245. package/dist/index.js +119 -56
  246. package/dist/index.js.map +1 -1
  247. package/dist/{ir-BMP7yxJJ.d.cts → ir-C-Zm_GlZ.d.cts} +1 -1
  248. package/dist/{ir-DUOz6H-5.d.ts → ir-DGyGiwVe.d.ts} +1 -1
  249. package/dist/{module-k7m3txak.d.ts → module-DqQ1U-Me.d.ts} +129 -100
  250. package/dist/{module-B8CBqIZ_.d.cts → module-doenaCsZ.d.cts} +129 -100
  251. package/package.json +12 -1
  252. package/dist/ModuleTag-C8FHY_sY.d.ts +0 -93
  253. package/dist/ModuleTag-EGbgBMpZ.d.cts +0 -93
  254. package/dist/chunk-3QMIVH35.js +0 -43
  255. package/dist/chunk-3QMIVH35.js.map +0 -1
  256. package/dist/chunk-76WT3HOR.js.map +0 -1
  257. package/dist/chunk-AUIR5O6W.js.map +0 -1
  258. package/dist/chunk-BABLDP24.js.map +0 -1
  259. package/dist/chunk-BE3HW4FY.js.map +0 -1
  260. package/dist/chunk-CW6T36TN.js.map +0 -1
  261. package/dist/chunk-DFNM3WX2.js.map +0 -1
  262. package/dist/chunk-DMBALCE2.js.map +0 -1
  263. package/dist/chunk-EGK3KN7B.js.map +0 -1
  264. package/dist/chunk-GMPEOUP2.js.map +0 -1
  265. package/dist/chunk-IHVBV5C2.js.map +0 -1
  266. package/dist/chunk-JCXGZRMU.js.map +0 -1
  267. package/dist/chunk-JGIWG6SR.js.map +0 -1
  268. package/dist/chunk-JWOYLO27.js.map +0 -1
  269. package/dist/chunk-KIXAU3GM.js +0 -137
  270. package/dist/chunk-KIXAU3GM.js.map +0 -1
  271. package/dist/chunk-KP7MUZNX.js.map +0 -1
  272. package/dist/chunk-M3WTHJHJ.js.map +0 -1
  273. package/dist/chunk-M7IYCTJV.js +0 -79
  274. package/dist/chunk-M7IYCTJV.js.map +0 -1
  275. package/dist/chunk-NBD3KUOZ.js.map +0 -1
  276. package/dist/chunk-NQZ2OSGR.js.map +0 -1
  277. package/dist/chunk-OGWBVHB3.js.map +0 -1
  278. package/dist/chunk-PAYXCY6A.js.map +0 -1
  279. package/dist/chunk-PYOE4VSI.js.map +0 -1
  280. package/dist/chunk-QCHIQWAJ.js +0 -21
  281. package/dist/chunk-VZB726PE.js +0 -93
  282. package/dist/chunk-VZB726PE.js.map +0 -1
  283. package/dist/chunk-W3TEWHLO.js +0 -568
  284. package/dist/chunk-W3TEWHLO.js.map +0 -1
  285. package/dist/chunk-ZFLHVFUC.js +0 -192
  286. package/dist/chunk-ZFLHVFUC.js.map +0 -1
  287. package/dist/chunk-ZFY7U2FR.js.map +0 -1
  288. /package/dist/{chunk-G5ZBFPNU.js.map → chunk-2A4UKO2D.js.map} +0 -0
  289. /package/dist/{chunk-ANLBCBDC.js.map → chunk-2DVLMSOE.js.map} +0 -0
  290. /package/dist/{chunk-3TMODYZV.js.map → chunk-3XO4HR6V.js.map} +0 -0
  291. /package/dist/{chunk-TKZ7MEIA.js.map → chunk-53GVPGSM.js.map} +0 -0
  292. /package/dist/{chunk-NZJKFF45.js.map → chunk-C2UZZQ76.js.map} +0 -0
  293. /package/dist/{chunk-M2RGJPXX.js.map → chunk-DBD6Q6JH.js.map} +0 -0
  294. /package/dist/{chunk-ZGDVUPTM.js.map → chunk-EB4RGQO3.js.map} +0 -0
  295. /package/dist/{chunk-TAAPQVZN.js.map → chunk-ISKNULNH.js.map} +0 -0
  296. /package/dist/{chunk-66ALHVEX.js.map → chunk-KKIAYH4X.js.map} +0 -0
  297. /package/dist/{chunk-3RMKLXHX.js.map → chunk-KLDVG3SY.js.map} +0 -0
  298. /package/dist/{chunk-4CQAV7YB.js.map → chunk-O6TTQXTY.js.map} +0 -0
  299. /package/dist/{chunk-24VULZ7A.js.map → chunk-TKOGZDD6.js.map} +0 -0
  300. /package/dist/{chunk-EY4NZKDR.js.map → chunk-XFMMPYNU.js.map} +0 -0
@@ -1,8 +1,9 @@
1
1
  import 'effect';
2
2
  import './protocol-g_1897M2.cjs';
3
- export { D as DiagnosticsLevel, L as LinkConfig, t as LinkHandles, f as ProcessConcurrencyPolicy, l as ProcessControlRequest, h as ProcessDefinition, n as ProcessEffect, g as ProcessErrorPolicy, k as ProcessEvent, b as ProcessIdentity, i as ProcessInstallation, c as ProcessInstanceIdentity, j as ProcessInstanceStatus, o as ProcessMakeDefinition, m as ProcessPlatformEvent, a as ProcessScope, e as ProcessTrigger, d as ProcessTriggerSpec, S as SerializableErrorSummary, s as attachMeta, q as getDefinition, r as getMeta, u as link, p as make } from './Process-mL8fHDSB.cjs';
4
- import './module-B8CBqIZ_.cjs';
3
+ export { D as DiagnosticsLevel, L as LinkConfig, t as LinkHandles, f as ProcessConcurrencyPolicy, l as ProcessControlRequest, h as ProcessDefinition, n as ProcessEffect, g as ProcessErrorPolicy, k as ProcessEvent, b as ProcessIdentity, i as ProcessInstallation, c as ProcessInstanceIdentity, j as ProcessInstanceStatus, o as ProcessMakeDefinition, m as ProcessPlatformEvent, a as ProcessScope, e as ProcessTrigger, d as ProcessTriggerSpec, S as SerializableErrorSummary, s as attachMeta, q as getDefinition, r as getMeta, u as link, v as linkDeclarative, p as make } from './Process-B55aJMFk.cjs';
4
+ import './module-doenaCsZ.cjs';
5
+ import './ReadQuery-mc0NgrFV.cjs';
5
6
  import 'mutative';
6
7
  import './Platform-C49Pv956.cjs';
7
8
  import './action-DiMDD_0v.cjs';
8
- import './ReadQuery-SinbStGF.cjs';
9
+ import './ReadQuery-CafjlJQo.cjs';
package/dist/Process.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import 'effect';
2
2
  import './protocol-g_1897M2.js';
3
- export { D as DiagnosticsLevel, L as LinkConfig, t as LinkHandles, f as ProcessConcurrencyPolicy, l as ProcessControlRequest, h as ProcessDefinition, n as ProcessEffect, g as ProcessErrorPolicy, k as ProcessEvent, b as ProcessIdentity, i as ProcessInstallation, c as ProcessInstanceIdentity, j as ProcessInstanceStatus, o as ProcessMakeDefinition, m as ProcessPlatformEvent, a as ProcessScope, e as ProcessTrigger, d as ProcessTriggerSpec, S as SerializableErrorSummary, s as attachMeta, q as getDefinition, r as getMeta, u as link, p as make } from './Process-CM9xbMdP.js';
4
- import './module-k7m3txak.js';
3
+ export { D as DiagnosticsLevel, L as LinkConfig, t as LinkHandles, f as ProcessConcurrencyPolicy, l as ProcessControlRequest, h as ProcessDefinition, n as ProcessEffect, g as ProcessErrorPolicy, k as ProcessEvent, b as ProcessIdentity, i as ProcessInstallation, c as ProcessInstanceIdentity, j as ProcessInstanceStatus, o as ProcessMakeDefinition, m as ProcessPlatformEvent, a as ProcessScope, e as ProcessTrigger, d as ProcessTriggerSpec, S as SerializableErrorSummary, s as attachMeta, q as getDefinition, r as getMeta, u as link, v as linkDeclarative, p as make } from './Process-DvhFEwUS.js';
4
+ import './module-DqQ1U-Me.js';
5
+ import './ReadQuery-C4vZ8Prc.js';
5
6
  import 'mutative';
6
7
  import './Platform-C49Pv956.js';
7
8
  import './action-DiMDD_0v.js';
8
- import './ReadQuery-SinbStGF.js';
9
+ import './ReadQuery-CafjlJQo.js';
package/dist/Process.js CHANGED
@@ -3,40 +3,45 @@ import {
3
3
  getDefinition,
4
4
  getMeta,
5
5
  link,
6
+ linkDeclarative,
6
7
  make
7
- } from "./chunk-VZB726PE.js";
8
- import "./chunk-JCXGZRMU.js";
9
- import "./chunk-JGIWG6SR.js";
10
- import "./chunk-PYOE4VSI.js";
11
- import "./chunk-BABLDP24.js";
12
- import "./chunk-NZJKFF45.js";
13
- import "./chunk-KP7MUZNX.js";
14
- import "./chunk-PAYXCY6A.js";
15
- import "./chunk-ZGDVUPTM.js";
8
+ } from "./chunk-RN26DV2M.js";
9
+ import "./chunk-RQQW3IQC.js";
10
+ import "./chunk-MS77U77X.js";
11
+ import "./chunk-JBKYRTCS.js";
12
+ import "./chunk-KSZQYSEH.js";
13
+ import "./chunk-Y4VRBIS6.js";
14
+ import "./chunk-G7ESIQTI.js";
15
+ import "./chunk-C2UZZQ76.js";
16
+ import "./chunk-5W2V2NVJ.js";
17
+ import "./chunk-EB4RGQO3.js";
16
18
  import "./chunk-LEU6UA5J.js";
17
- import "./chunk-BE3HW4FY.js";
18
- import "./chunk-ZFLHVFUC.js";
19
+ import "./chunk-34CF6OGE.js";
19
20
  import "./chunk-KL5ACTCT.js";
20
- import "./chunk-AUIR5O6W.js";
21
+ import "./chunk-WWBMC24F.js";
22
+ import "./chunk-3VZYDNXZ.js";
21
23
  import "./chunk-BZ2SHDN2.js";
22
24
  import "./chunk-YS3AZQ2G.js";
23
25
  import "./chunk-M3BFQ7HK.js";
24
- import "./chunk-IHVBV5C2.js";
25
- import "./chunk-3RMKLXHX.js";
26
- import "./chunk-3QMIVH35.js";
27
- import "./chunk-NQZ2OSGR.js";
28
- import "./chunk-CW6T36TN.js";
29
- import "./chunk-DMBALCE2.js";
30
- import "./chunk-GMPEOUP2.js";
31
- import "./chunk-OFADUJWJ.js";
32
- import "./chunk-M7IYCTJV.js";
33
- import "./chunk-JWOYLO27.js";
26
+ import "./chunk-J3CWXIPV.js";
27
+ import "./chunk-ZTFTABXV.js";
28
+ import "./chunk-KLDVG3SY.js";
29
+ import "./chunk-AQ7L2QZ5.js";
30
+ import "./chunk-53GVPGSM.js";
31
+ import "./chunk-MYKNINNN.js";
32
+ import "./chunk-PVZEMNJY.js";
33
+ import "./chunk-I4LCE5OY.js";
34
+ import "./chunk-ZC7MSQ5U.js";
35
+ import "./chunk-WYJUJV4L.js";
36
+ import "./chunk-M3M7JFAH.js";
37
+ import "./chunk-4MZ7BT3R.js";
34
38
  import "./chunk-PZ5AY32C.js";
35
39
  export {
36
40
  attachMeta,
37
41
  getDefinition,
38
42
  getMeta,
39
43
  link,
44
+ linkDeclarative,
40
45
  make
41
46
  };
42
47
  //# sourceMappingURL=Process.js.map
@@ -1,4 +1,4 @@
1
- import { R as ReadLane$1, a as ReadProducer$1, E as EqualsKind$1, b as ReadsDigest$1, c as ReadQueryStaticIr$1, d as ReadQuery$2, e as ReadQueryCompiled$1, f as ReadQueryInput$1, i as isReadQuery$1 } from './ReadQuery-SinbStGF.js';
1
+ import { a as ReadQueryInput$1, b as ReadQueryCompiled$1, c as ReadLane$1, d as ReadProducer$1, E as EqualsKind$1, e as ReadsDigest$1, f as ReadQueryStaticIr$1, g as ReadQuery$2, i as isReadQuery$1 } from './ReadQuery-CafjlJQo.js';
2
2
 
3
3
  type ReadLane = ReadLane$1;
4
4
  type ReadProducer = ReadProducer$1;
@@ -27,4 +27,4 @@ declare namespace ReadQuery$1 {
27
27
  export { type ReadQuery$1_EqualsKind as EqualsKind, type ReadQuery$1_ReadLane as ReadLane, type ReadQuery$1_ReadProducer as ReadProducer, type ReadQuery$1_ReadQuery as ReadQuery, type ReadQuery$1_ReadQueryCompiled as ReadQueryCompiled, type ReadQuery$1_ReadQueryInput as ReadQueryInput, type ReadQuery$1_ReadQueryStaticIr as ReadQueryStaticIr, type ReadQuery$1_ReadsDigest as ReadsDigest, ReadQuery$1_compile as compile, ReadQuery$1_isReadQuery as isReadQuery, ReadQuery$1_make as make };
28
28
  }
29
29
 
30
- export { type EqualsKind as E, ReadQuery$1 as R, type ReadLane as a, type ReadProducer as b, type ReadsDigest as c, type ReadQueryStaticIr as d, type ReadQuery as e, type ReadQueryCompiled as f, type ReadQueryInput as g, compile as h, isReadQuery as i, make as m };
30
+ export { type EqualsKind as E, ReadQuery$1 as R, type ReadQueryInput as a, type ReadQueryCompiled as b, type ReadLane as c, type ReadProducer as d, type ReadsDigest as e, type ReadQueryStaticIr as f, type ReadQuery as g, compile as h, isReadQuery as i, make as m };
@@ -35,4 +35,4 @@ type ReadQueryInput<S, V> = ((state: S) => V) | ReadQuery<S, V>;
35
35
  declare function isReadQuery<S, V>(input: ReadQueryInput<S, V>): input is ReadQuery<S, V>;
36
36
  declare function isReadQuery(input: unknown): input is ReadQuery<any, any>;
37
37
 
38
- export { type EqualsKind as E, type ReadLane as R, type ReadProducer as a, type ReadsDigest as b, type ReadQueryStaticIr as c, type ReadQuery as d, type ReadQueryCompiled as e, type ReadQueryInput as f, type ReadQueryFallbackReason as g, isReadQuery as i };
38
+ export { type EqualsKind as E, type ReadQueryFallbackReason as R, type ReadQueryInput as a, type ReadQueryCompiled as b, type ReadLane as c, type ReadProducer as d, type ReadsDigest as e, type ReadQueryStaticIr as f, type ReadQuery as g, isReadQuery as i };
@@ -35,4 +35,4 @@ type ReadQueryInput<S, V> = ((state: S) => V) | ReadQuery<S, V>;
35
35
  declare function isReadQuery<S, V>(input: ReadQueryInput<S, V>): input is ReadQuery<S, V>;
36
36
  declare function isReadQuery(input: unknown): input is ReadQuery<any, any>;
37
37
 
38
- export { type EqualsKind as E, type ReadLane as R, type ReadProducer as a, type ReadsDigest as b, type ReadQueryStaticIr as c, type ReadQuery as d, type ReadQueryCompiled as e, type ReadQueryInput as f, type ReadQueryFallbackReason as g, isReadQuery as i };
38
+ export { type EqualsKind as E, type ReadQueryFallbackReason as R, type ReadQueryInput as a, type ReadQueryCompiled as b, type ReadLane as c, type ReadProducer as d, type ReadsDigest as e, type ReadQueryStaticIr as f, type ReadQuery as g, isReadQuery as i };
@@ -1,4 +1,4 @@
1
- import { R as ReadLane$1, a as ReadProducer$1, E as EqualsKind$1, b as ReadsDigest$1, c as ReadQueryStaticIr$1, d as ReadQuery$2, e as ReadQueryCompiled$1, f as ReadQueryInput$1, i as isReadQuery$1 } from './ReadQuery-SinbStGF.cjs';
1
+ import { a as ReadQueryInput$1, b as ReadQueryCompiled$1, c as ReadLane$1, d as ReadProducer$1, E as EqualsKind$1, e as ReadsDigest$1, f as ReadQueryStaticIr$1, g as ReadQuery$2, i as isReadQuery$1 } from './ReadQuery-CafjlJQo.cjs';
2
2
 
3
3
  type ReadLane = ReadLane$1;
4
4
  type ReadProducer = ReadProducer$1;
@@ -27,4 +27,4 @@ declare namespace ReadQuery$1 {
27
27
  export { type ReadQuery$1_EqualsKind as EqualsKind, type ReadQuery$1_ReadLane as ReadLane, type ReadQuery$1_ReadProducer as ReadProducer, type ReadQuery$1_ReadQuery as ReadQuery, type ReadQuery$1_ReadQueryCompiled as ReadQueryCompiled, type ReadQuery$1_ReadQueryInput as ReadQueryInput, type ReadQuery$1_ReadQueryStaticIr as ReadQueryStaticIr, type ReadQuery$1_ReadsDigest as ReadsDigest, ReadQuery$1_compile as compile, ReadQuery$1_isReadQuery as isReadQuery, ReadQuery$1_make as make };
28
28
  }
29
29
 
30
- export { type EqualsKind as E, ReadQuery$1 as R, type ReadLane as a, type ReadProducer as b, type ReadsDigest as c, type ReadQueryStaticIr as d, type ReadQuery as e, type ReadQueryCompiled as f, type ReadQueryInput as g, compile as h, isReadQuery as i, make as m };
30
+ export { type EqualsKind as E, ReadQuery$1 as R, type ReadQueryInput as a, type ReadQueryCompiled as b, type ReadLane as c, type ReadProducer as d, type ReadsDigest as e, type ReadQueryStaticIr as f, type ReadQuery as g, compile as h, isReadQuery as i, make as m };
@@ -38,7 +38,7 @@ var stableStringify = (value) => {
38
38
  }
39
39
  if (t === "object") {
40
40
  const record = value;
41
- const keys = Object.keys(record).sort((a, b) => a.localeCompare(b));
41
+ const keys = Object.keys(record).sort();
42
42
  return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(record[k])}`).join(",")}}`;
43
43
  }
44
44
  return "null";
@@ -67,7 +67,7 @@ var normalizeReads = (reads) => {
67
67
  seen.add(key);
68
68
  unique.push(r);
69
69
  }
70
- return unique.slice().sort((a, b) => String(a).localeCompare(String(b)));
70
+ return unique.slice().sort();
71
71
  };
72
72
  var toHash32Number = (hex) => Number.parseInt(hex, 16);
73
73
  var makeReadsDigest = (reads) => {
@@ -151,7 +151,7 @@ var tryParseSelectorSource = (source) => {
151
151
  if (!m) return void 0;
152
152
  entries.push([key, m[1]]);
153
153
  }
154
- entries.sort((a, b) => a[0].localeCompare(b[0]));
154
+ entries.sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
155
155
  return { kind: "struct", entries };
156
156
  }
157
157
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ReadQuery.ts","../src/internal/digest.ts","../src/internal/runtime/core/ReadQuery.ts"],"sourcesContent":["import * as ReadQueryCore from './internal/runtime/core/ReadQuery.js'\n\nexport type ReadLane = ReadQueryCore.ReadLane\nexport type ReadProducer = ReadQueryCore.ReadProducer\nexport type EqualsKind = ReadQueryCore.EqualsKind\nexport type ReadsDigest = ReadQueryCore.ReadsDigest\n\nexport type ReadQueryStaticIr = ReadQueryCore.ReadQueryStaticIr\n\nexport type ReadQuery<S, V> = ReadQueryCore.ReadQuery<S, V>\nexport type ReadQueryCompiled<S, V> = ReadQueryCore.ReadQueryCompiled<S, V>\nexport type ReadQueryInput<S, V> = ReadQueryCore.ReadQueryInput<S, V>\n\nexport const isReadQuery = ReadQueryCore.isReadQuery\n\nexport const make = ReadQueryCore.make\n\nexport const compile = ReadQueryCore.compile\n","/**\n * internal/digest:\n * - Minimal \"stable digest\" utilities for Runtime / Static IR / Traits, etc.\n * - Goal: stable output across runs/processes while staying lightweight (no extra dependencies).\n *\n * Note: stableStringify does not aim for full JSON equivalence; it only covers the subset needed by this repo:\n * - Stable key ordering (object fields sorted lexicographically).\n * - Non-finite numbers (NaN/±Infinity) degrade to null.\n * - Other non-representable values (undefined/function/symbol, etc.) degrade to null.\n * - undefined inside objects is not omitted; it is encoded as null (differs from JSON.stringify).\n */\n\nexport const stableStringify = (value: unknown): string => {\n if (value === null) return 'null'\n const t = typeof value\n if (t === 'string') return JSON.stringify(value)\n if (t === 'number') return Number.isFinite(value) ? String(value) : 'null'\n if (t === 'boolean') return value ? 'true' : 'false'\n\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(',')}]`\n }\n\n if (t === 'object') {\n const record = value as Record<string, unknown>\n const keys = Object.keys(record).sort((a, b) => a.localeCompare(b))\n return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(record[k])}`).join(',')}}`\n }\n\n return 'null'\n}\n\n/**\n * fnv1a32:\n * - 32-bit FNV-1a hash (for short digests); outputs fixed 8-char hex.\n */\nexport const fnv1a32 = (input: string): string => {\n let hash = 0x811c9dc5\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i)\n hash = (hash * 0x01000193) >>> 0\n }\n return hash.toString(16).padStart(8, '0')\n}\n","import { fnv1a32, stableStringify } from '../../digest.js'\nimport type * as DebugSink from './DebugSink.js'\n\nexport type ReadLane = 'static' | 'dynamic'\n\nexport type ReadProducer = 'aot' | 'jit' | 'manual' | 'dynamic'\n\nexport type ReadQueryFallbackReason = 'missingDeps' | 'unsupportedSyntax' | 'unstableSelectorId'\n\nexport type EqualsKind = 'objectIs' | 'shallowStruct' | 'custom'\n\nexport interface ReadsDigest {\n readonly count: number\n readonly hash: number\n}\n\nexport interface ReadQueryStaticIr {\n readonly selectorId: string\n readonly debugKey?: string\n readonly lane: ReadLane\n readonly producer: ReadProducer\n readonly reads?: ReadonlyArray<string | number>\n readonly readsDigest?: ReadsDigest\n readonly fallbackReason?: ReadQueryFallbackReason\n readonly equalsKind: EqualsKind\n}\n\nexport interface ReadQuery<S, V> {\n readonly selectorId: string\n readonly debugKey?: string\n readonly reads: ReadonlyArray<string | number>\n readonly select: (state: S) => V\n readonly equalsKind: EqualsKind\n readonly equals?: (previous: V, next: V) => boolean\n}\n\nexport interface ReadQueryCompiled<S, V> extends ReadQuery<S, V> {\n readonly lane: ReadLane\n readonly producer: ReadProducer\n readonly readsDigest?: ReadsDigest\n readonly fallbackReason?: ReadQueryFallbackReason\n readonly staticIr: ReadQueryStaticIr\n}\n\nexport type ReadQueryInput<S, V> = ((state: S) => V) | ReadQuery<S, V>\n\nexport function isReadQuery<S, V>(input: ReadQueryInput<S, V>): input is ReadQuery<S, V>\nexport function isReadQuery(input: unknown): input is ReadQuery<any, any>\nexport function isReadQuery(input: unknown): input is ReadQuery<any, any> {\n if (!input || (typeof input !== 'object' && typeof input !== 'function')) return false\n const maybe = input as any\n return typeof maybe.selectorId === 'string' && typeof maybe.select === 'function' && Array.isArray(maybe.reads)\n}\n\nconst normalizeReads = (reads: ReadonlyArray<string | number>): ReadonlyArray<string | number> => {\n const unique: Array<string | number> = []\n const seen = new Set<string>()\n for (const r of reads) {\n const key = typeof r === 'number' ? `n:${r}` : `s:${r}`\n if (seen.has(key)) continue\n seen.add(key)\n unique.push(r)\n }\n return unique.slice().sort((a, b) => String(a).localeCompare(String(b)))\n}\n\nconst toHash32Number = (hex: string): number => Number.parseInt(hex, 16)\n\nconst makeReadsDigest = (reads: ReadonlyArray<string | number>): ReadsDigest => {\n const normalized = normalizeReads(reads)\n return {\n count: normalized.length,\n hash: toHash32Number(fnv1a32(stableStringify(normalized))),\n }\n}\n\nconst computeSelectorId = (value: unknown): string => `rq_${fnv1a32(stableStringify(value))}`\n\nlet nextUnstableSelectorSeq = 0\nconst unstableSelectorIdByFn = new WeakMap<Function, string>()\n\nconst computeUnstableSelectorId = (selector: Function): string => {\n const existing = unstableSelectorIdByFn.get(selector)\n if (existing) return existing\n nextUnstableSelectorSeq += 1\n const selectorId = `rq_u${nextUnstableSelectorSeq}`\n unstableSelectorIdByFn.set(selector, selectorId)\n return selectorId\n}\n\nconst unwrapParens = (input: string): string => {\n const trimmed = input.trim()\n if (trimmed.startsWith('(') && trimmed.endsWith(')')) {\n const inner = trimmed.slice(1, -1).trim()\n // Only unwrap the outermost pair of parentheses to avoid accidentally breaking syntax.\n if (!inner.startsWith('(') || !inner.endsWith(')')) {\n return inner\n }\n }\n return trimmed\n}\n\nconst extractArrow = (source: string): { readonly param: string; readonly body: string } | undefined => {\n const idx = source.indexOf('=>')\n if (idx < 0) return undefined\n const left = source.slice(0, idx).trim()\n const right = source.slice(idx + 2).trim()\n\n const paramRaw = unwrapParens(left)\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(paramRaw)) return undefined\n\n // block body: { return expr }\n if (right.startsWith('{')) {\n const m = right.match(/^\\{\\s*return\\s+(.+?);?\\s*\\}\\s*$/s)\n if (!m) return undefined\n return { param: paramRaw, body: m[1]?.trim() ?? '' }\n }\n\n return { param: paramRaw, body: right }\n}\n\nconst extractFunctionReturn = (source: string): { readonly param: string; readonly body: string } | undefined => {\n const trimmed = source.trim()\n const m = trimmed.match(\n /^function\\s*(?:[A-Za-z_$][A-Za-z0-9_$]*\\s*)?\\(\\s*([A-Za-z_$][A-Za-z0-9_$]*)\\s*\\)\\s*\\{\\s*return\\s+(.+?);?\\s*\\}\\s*$/s,\n )\n if (!m) return undefined\n\n const param = m[1]?.trim() ?? ''\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(param)) return undefined\n\n const body = m[2]?.trim() ?? ''\n if (body.length === 0) return undefined\n\n return { param, body }\n}\n\ntype ParsedSelector =\n | { readonly kind: 'path'; readonly path: string }\n | { readonly kind: 'struct'; readonly entries: ReadonlyArray<readonly [string, string]> }\n\nconst tryParseSelectorSource = (source: string): ParsedSelector | undefined => {\n const arrowOrFn = extractArrow(source) ?? extractFunctionReturn(source)\n if (!arrowOrFn) return undefined\n\n const expr = unwrapParens(arrowOrFn.body).trim().replace(/;$/, '').trim()\n\n // path: s.a.b\n {\n const re = new RegExp(`^${arrowOrFn.param}\\\\.([A-Za-z0-9_$]+(?:\\\\.[A-Za-z0-9_$]+)*)$`)\n const m = expr.match(re)\n if (m) {\n return { kind: 'path', path: m[1] }\n }\n }\n\n // struct: ({ a: s.a, b: s.b })\n if (expr.startsWith('{') && expr.endsWith('}')) {\n const inner = expr.slice(1, -1).trim()\n if (inner.length === 0) return { kind: 'struct', entries: [] }\n\n const parts = inner\n .split(',')\n .map((p) => p.trim())\n .filter((p) => p.length > 0)\n\n const entries: Array<readonly [string, string]> = []\n\n for (const part of parts) {\n const idx = part.indexOf(':')\n if (idx < 0) return undefined\n const key = part.slice(0, idx).trim()\n const value = part.slice(idx + 1).trim()\n\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) return undefined\n\n const re = new RegExp(`^${arrowOrFn.param}\\\\.([A-Za-z0-9_$]+(?:\\\\.[A-Za-z0-9_$]+)*)$`)\n const m = value.match(re)\n if (!m) return undefined\n entries.push([key, m[1]] as const)\n }\n\n // Sort entries to ensure a stable selectorId.\n entries.sort((a, b) => a[0].localeCompare(b[0]))\n return { kind: 'struct', entries }\n }\n\n return undefined\n}\n\ntype ReadQueryStaticTemplate = {\n readonly selectorId: string\n readonly reads: ReadonlyArray<string | number>\n readonly readsDigest: ReadsDigest\n readonly equalsKind: EqualsKind\n}\n\nconst READ_QUERY_TEMPLATE_CACHE_MAX = 2048\nconst readQueryTemplateByFn = new WeakMap<Function, ReadQueryStaticTemplate>()\nconst readQueryTemplateBySource = new Map<string, ReadQueryStaticTemplate>()\n\nconst lruGet = <K, V>(map: Map<K, V>, key: K): V | undefined => {\n const value = map.get(key)\n if (value === undefined) return undefined\n map.delete(key)\n map.set(key, value)\n return value\n}\n\nconst lruSet = <K, V>(map: Map<K, V>, key: K, value: V, maxSize: number) => {\n if (map.has(key)) map.delete(key)\n map.set(key, value)\n if (map.size <= maxSize) return\n const oldestKey = map.keys().next().value as K | undefined\n if (oldestKey !== undefined) {\n map.delete(oldestKey)\n }\n}\n\nconst safeToString = (fn: Function): string => {\n try {\n return fn.toString()\n } catch {\n return ''\n }\n}\n\nexport const make = <S, V>(spec: ReadQuery<S, V>): ReadQuery<S, V> => spec\n\nexport const compile = <S, V>(input: ReadQueryInput<S, V>): ReadQueryCompiled<S, V> => {\n if (isReadQuery(input)) {\n const reads = normalizeReads(input.reads)\n const readsDigest = reads.length > 0 ? makeReadsDigest(reads) : undefined\n\n const equalsKind = input.equalsKind\n const staticIr: ReadQueryStaticIr = {\n selectorId: input.selectorId,\n debugKey: input.debugKey,\n lane: 'static',\n producer: 'manual',\n reads,\n readsDigest,\n equalsKind,\n }\n\n return {\n ...input,\n reads,\n lane: 'static',\n producer: 'manual',\n readsDigest,\n staticIr,\n }\n }\n\n const selector = input\n const debugKey =\n (typeof (selector as any)?.debugKey === 'string' && (selector as any).debugKey.length > 0\n ? (selector as any).debugKey\n : undefined) ??\n (typeof (selector as any).name === 'string' && (selector as any).name.length > 0\n ? (selector as any).name\n : undefined)\n\n const declaredReads: ReadonlyArray<string> | undefined = Array.isArray((selector as any)?.fieldPaths)\n ? ((selector as any).fieldPaths as ReadonlyArray<unknown>).filter((x): x is string => typeof x === 'string')\n : undefined\n\n if (declaredReads && declaredReads.length > 0) {\n const reads = normalizeReads(declaredReads)\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'reads', reads })\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n const cachedByFn = readQueryTemplateByFn.get(selector as unknown as Function)\n if (cachedByFn) {\n const staticIr: ReadQueryStaticIr = {\n selectorId: cachedByFn.selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads: cachedByFn.reads,\n readsDigest: cachedByFn.readsDigest,\n equalsKind: cachedByFn.equalsKind,\n }\n\n return {\n selectorId: cachedByFn.selectorId,\n debugKey,\n reads: cachedByFn.reads,\n select: selector as any,\n equalsKind: cachedByFn.equalsKind,\n lane: 'static',\n producer: 'jit',\n readsDigest: cachedByFn.readsDigest,\n staticIr,\n }\n }\n\n const srcTrimmed = safeToString(selector as unknown as Function).trim()\n const cachedBySource = srcTrimmed.length > 0 ? lruGet(readQueryTemplateBySource, srcTrimmed) : undefined\n if (cachedBySource) {\n readQueryTemplateByFn.set(selector as unknown as Function, cachedBySource)\n const staticIr: ReadQueryStaticIr = {\n selectorId: cachedBySource.selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads: cachedBySource.reads,\n readsDigest: cachedBySource.readsDigest,\n equalsKind: cachedBySource.equalsKind,\n }\n\n return {\n selectorId: cachedBySource.selectorId,\n debugKey,\n reads: cachedBySource.reads,\n select: selector as any,\n equalsKind: cachedBySource.equalsKind,\n lane: 'static',\n producer: 'jit',\n readsDigest: cachedBySource.readsDigest,\n staticIr,\n }\n }\n\n const parsed = srcTrimmed.length > 0 ? tryParseSelectorSource(srcTrimmed) : undefined\n\n if (parsed?.kind === 'path') {\n const reads = [parsed.path]\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'path', path: parsed.path })\n const template: ReadQueryStaticTemplate = { selectorId, reads, readsDigest, equalsKind: 'objectIs' }\n readQueryTemplateByFn.set(selector as unknown as Function, template)\n lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX)\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n if (parsed?.kind === 'struct') {\n const reads = normalizeReads(parsed.entries.map(([, path]) => path))\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'struct', entries: parsed.entries })\n const template: ReadQueryStaticTemplate = { selectorId, reads, readsDigest, equalsKind: 'shallowStruct' }\n readQueryTemplateByFn.set(selector as unknown as Function, template)\n lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX)\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'shallowStruct',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'shallowStruct',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n // Dynamic lane fallback (no stable reads / unsupported subset)\n const baseFallbackReason: ReadQueryFallbackReason =\n srcTrimmed.includes('=>') || srcTrimmed.startsWith('function') ? 'unsupportedSyntax' : 'missingDeps'\n\n const lowDiscriminabilitySource = srcTrimmed.length === 0 || srcTrimmed.includes('[native code]')\n const fallbackReason: ReadQueryFallbackReason =\n !debugKey || lowDiscriminabilitySource ? 'unstableSelectorId' : baseFallbackReason\n\n const selectorId =\n fallbackReason === 'unstableSelectorId'\n ? computeUnstableSelectorId(selector as unknown as Function)\n : computeSelectorId({ kind: 'dynamic', debugKey, src: srcTrimmed })\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'dynamic',\n producer: 'dynamic',\n fallbackReason,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads: [],\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'dynamic',\n producer: 'dynamic',\n fallbackReason,\n staticIr,\n }\n}\n\nexport interface ReadQueryStrictGateConfig {\n readonly mode: 'off' | 'warn' | 'error'\n readonly requireStatic?: {\n readonly selectorIds?: ReadonlyArray<string>\n readonly modules?: ReadonlyArray<string>\n }\n readonly denyFallbackReasons?: ReadonlyArray<ReadQueryFallbackReason>\n}\n\nexport interface ReadQueryStrictGateViolationDetails {\n readonly moduleId: string\n readonly instanceId: string\n readonly txnSeq: number\n readonly selectorId: string\n readonly debugKey?: string\n readonly fallbackReason: ReadQueryFallbackReason\n readonly rule: 'denyFallbackReason' | 'requireStatic:global' | 'requireStatic:selectorId' | 'requireStatic:module'\n}\n\nexport interface ReadQueryStrictGateError extends Error {\n readonly _tag: 'ReadQueryStrictGateError'\n readonly details: ReadQueryStrictGateViolationDetails\n}\n\nexport type ReadQueryStrictGateDiagnosticEvent = Extract<DebugSink.Event, { readonly type: 'diagnostic' }>\n\nexport type ReadQueryStrictGateDecision =\n | { readonly verdict: 'PASS' }\n | {\n readonly verdict: 'WARN'\n readonly diagnostic: ReadQueryStrictGateDiagnosticEvent\n readonly details: ReadQueryStrictGateViolationDetails\n }\n | {\n readonly verdict: 'FAIL'\n readonly diagnostic: ReadQueryStrictGateDiagnosticEvent\n readonly error: ReadQueryStrictGateError\n readonly details: ReadQueryStrictGateViolationDetails\n }\n\nconst filterNonEmpty = (values: ReadonlyArray<string> | undefined): ReadonlyArray<string> | undefined => {\n if (!values || values.length === 0) return undefined\n const next = values.map((v) => v.trim()).filter((v) => v.length > 0)\n return next.length > 0 ? next : undefined\n}\n\nconst makeStrictGateDiagnostic = (args: {\n readonly config: ReadQueryStrictGateConfig\n readonly details: ReadQueryStrictGateViolationDetails\n}): ReadQueryStrictGateDiagnosticEvent => {\n const severity = args.config.mode === 'warn' ? ('warning' as const) : ('error' as const)\n\n return {\n type: 'diagnostic',\n moduleId: args.details.moduleId,\n instanceId: args.details.instanceId,\n txnSeq: args.details.txnSeq,\n code: 'read_query::strict_gate',\n severity,\n message: `ReadQuery strict gate violated: selector entered dynamic lane (selectorId=${args.details.selectorId}, reason=${args.details.fallbackReason}).`,\n hint:\n 'Fix: make the selector statically compilable (AOT/JIT) or pass an explicit ReadQuery; ' +\n 'or disable/narrow the gate via RuntimeOptions.readQuery.strictGate.requireStatic / denyFallbackReasons.',\n kind: 'read_query:strict_gate',\n trigger: {\n kind: 'read_query',\n name: 'strict_gate',\n details: args.details,\n },\n }\n}\n\nconst makeStrictGateError = (args: {\n readonly details: ReadQueryStrictGateViolationDetails\n}): ReadQueryStrictGateError =>\n Object.assign(\n new Error(\n `[ReadQueryStrictGateError] selector entered dynamic lane (selectorId=${args.details.selectorId}, reason=${args.details.fallbackReason}).`,\n ),\n {\n _tag: 'ReadQueryStrictGateError' as const,\n details: args.details,\n },\n ) as ReadQueryStrictGateError\n\nexport const evaluateStrictGate = (args: {\n readonly config: ReadQueryStrictGateConfig\n readonly moduleId: string\n readonly instanceId: string\n readonly txnSeq: number\n readonly compiled: ReadQueryCompiled<any, any>\n}): ReadQueryStrictGateDecision => {\n if (args.config.mode === 'off') {\n return { verdict: 'PASS' }\n }\n\n if (args.compiled.lane !== 'dynamic') {\n return { verdict: 'PASS' }\n }\n\n const fallbackReason = (args.compiled.fallbackReason ?? 'missingDeps') as ReadQueryFallbackReason\n\n const denyFallbackReasons = args.config.denyFallbackReasons\n const denied = !!denyFallbackReasons?.includes(fallbackReason)\n\n const selectorIds = filterNonEmpty(args.config.requireStatic?.selectorIds)\n const modules = filterNonEmpty(args.config.requireStatic?.modules)\n const hasCoverageFilter = !!selectorIds || !!modules\n\n const matchedSelectorId = !!selectorIds?.includes(args.compiled.selectorId)\n const matchedModule = !!modules?.includes(args.moduleId)\n const coveredByRequireStatic = !hasCoverageFilter || matchedSelectorId || matchedModule\n\n if (!denied && !coveredByRequireStatic) {\n return { verdict: 'PASS' }\n }\n\n const rule: ReadQueryStrictGateViolationDetails['rule'] = denied\n ? 'denyFallbackReason'\n : !hasCoverageFilter\n ? 'requireStatic:global'\n : matchedSelectorId\n ? 'requireStatic:selectorId'\n : 'requireStatic:module'\n\n const details: ReadQueryStrictGateViolationDetails = {\n moduleId: args.moduleId,\n instanceId: args.instanceId,\n txnSeq: args.txnSeq,\n selectorId: args.compiled.selectorId,\n debugKey: args.compiled.debugKey,\n fallbackReason,\n rule,\n }\n\n const diagnostic = makeStrictGateDiagnostic({ config: args.config, details })\n\n if (args.config.mode === 'warn') {\n return { verdict: 'WARN', diagnostic, details }\n }\n\n const error = makeStrictGateError({ details })\n return { verdict: 'FAIL', diagnostic, error, details }\n}\n"],"mappings":"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","names":["compile","isReadQuery","make","staticIr","selectorId","isReadQuery","make","compile"]}
1
+ {"version":3,"sources":["../src/ReadQuery.ts","../src/internal/digest.ts","../src/internal/runtime/core/ReadQuery.ts"],"sourcesContent":["import * as ReadQueryCore from './internal/runtime/core/ReadQuery.js'\n\nexport type ReadLane = ReadQueryCore.ReadLane\nexport type ReadProducer = ReadQueryCore.ReadProducer\nexport type EqualsKind = ReadQueryCore.EqualsKind\nexport type ReadsDigest = ReadQueryCore.ReadsDigest\n\nexport type ReadQueryStaticIr = ReadQueryCore.ReadQueryStaticIr\n\nexport type ReadQuery<S, V> = ReadQueryCore.ReadQuery<S, V>\nexport type ReadQueryCompiled<S, V> = ReadQueryCore.ReadQueryCompiled<S, V>\nexport type ReadQueryInput<S, V> = ReadQueryCore.ReadQueryInput<S, V>\n\nexport const isReadQuery = ReadQueryCore.isReadQuery\n\nexport const make = ReadQueryCore.make\n\nexport const compile = ReadQueryCore.compile\n","/**\n * internal/digest:\n * - Minimal \"stable digest\" utilities for Runtime / Static IR / Traits, etc.\n * - Goal: stable output across runs/processes while staying lightweight (no extra dependencies).\n *\n * Note: stableStringify does not aim for full JSON equivalence; it only covers the subset needed by this repo:\n * - Stable key ordering (object fields sorted lexicographically).\n * - Non-finite numbers (NaN/±Infinity) degrade to null.\n * - Other non-representable values (undefined/function/symbol, etc.) degrade to null.\n * - undefined inside objects is not omitted; it is encoded as null (differs from JSON.stringify).\n */\n\nexport const stableStringify = (value: unknown): string => {\n if (value === null) return 'null'\n const t = typeof value\n if (t === 'string') return JSON.stringify(value)\n if (t === 'number') return Number.isFinite(value) ? String(value) : 'null'\n if (t === 'boolean') return value ? 'true' : 'false'\n\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(',')}]`\n }\n\n if (t === 'object') {\n const record = value as Record<string, unknown>\n const keys = Object.keys(record).sort()\n return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(record[k])}`).join(',')}}`\n }\n\n return 'null'\n}\n\n/**\n * fnv1a32:\n * - 32-bit FNV-1a hash (for short digests); outputs fixed 8-char hex.\n */\nexport const fnv1a32 = (input: string): string => {\n let hash = 0x811c9dc5\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i)\n hash = (hash * 0x01000193) >>> 0\n }\n return hash.toString(16).padStart(8, '0')\n}\n","import { fnv1a32, stableStringify } from '../../digest.js'\nimport type * as DebugSink from './DebugSink.js'\n\nexport type ReadLane = 'static' | 'dynamic'\n\nexport type ReadProducer = 'aot' | 'jit' | 'manual' | 'dynamic'\n\nexport type ReadQueryFallbackReason = 'missingDeps' | 'unsupportedSyntax' | 'unstableSelectorId'\n\nexport type EqualsKind = 'objectIs' | 'shallowStruct' | 'custom'\n\nexport interface ReadsDigest {\n readonly count: number\n readonly hash: number\n}\n\nexport interface ReadQueryStaticIr {\n readonly selectorId: string\n readonly debugKey?: string\n readonly lane: ReadLane\n readonly producer: ReadProducer\n readonly reads?: ReadonlyArray<string | number>\n readonly readsDigest?: ReadsDigest\n readonly fallbackReason?: ReadQueryFallbackReason\n readonly equalsKind: EqualsKind\n}\n\nexport interface ReadQuery<S, V> {\n readonly selectorId: string\n readonly debugKey?: string\n readonly reads: ReadonlyArray<string | number>\n readonly select: (state: S) => V\n readonly equalsKind: EqualsKind\n readonly equals?: (previous: V, next: V) => boolean\n}\n\nexport interface ReadQueryCompiled<S, V> extends ReadQuery<S, V> {\n readonly lane: ReadLane\n readonly producer: ReadProducer\n readonly readsDigest?: ReadsDigest\n readonly fallbackReason?: ReadQueryFallbackReason\n readonly staticIr: ReadQueryStaticIr\n}\n\nexport type ReadQueryInput<S, V> = ((state: S) => V) | ReadQuery<S, V>\n\nexport function isReadQuery<S, V>(input: ReadQueryInput<S, V>): input is ReadQuery<S, V>\nexport function isReadQuery(input: unknown): input is ReadQuery<any, any>\nexport function isReadQuery(input: unknown): input is ReadQuery<any, any> {\n if (!input || (typeof input !== 'object' && typeof input !== 'function')) return false\n const maybe = input as any\n return typeof maybe.selectorId === 'string' && typeof maybe.select === 'function' && Array.isArray(maybe.reads)\n}\n\nconst normalizeReads = (reads: ReadonlyArray<string | number>): ReadonlyArray<string | number> => {\n const unique: Array<string | number> = []\n const seen = new Set<string>()\n for (const r of reads) {\n const key = typeof r === 'number' ? `n:${r}` : `s:${r}`\n if (seen.has(key)) continue\n seen.add(key)\n unique.push(r)\n }\n return unique.slice().sort()\n}\n\nconst toHash32Number = (hex: string): number => Number.parseInt(hex, 16)\n\nconst makeReadsDigest = (reads: ReadonlyArray<string | number>): ReadsDigest => {\n const normalized = normalizeReads(reads)\n return {\n count: normalized.length,\n hash: toHash32Number(fnv1a32(stableStringify(normalized))),\n }\n}\n\nconst computeSelectorId = (value: unknown): string => `rq_${fnv1a32(stableStringify(value))}`\n\nlet nextUnstableSelectorSeq = 0\nconst unstableSelectorIdByFn = new WeakMap<Function, string>()\n\nconst computeUnstableSelectorId = (selector: Function): string => {\n const existing = unstableSelectorIdByFn.get(selector)\n if (existing) return existing\n nextUnstableSelectorSeq += 1\n const selectorId = `rq_u${nextUnstableSelectorSeq}`\n unstableSelectorIdByFn.set(selector, selectorId)\n return selectorId\n}\n\nconst unwrapParens = (input: string): string => {\n const trimmed = input.trim()\n if (trimmed.startsWith('(') && trimmed.endsWith(')')) {\n const inner = trimmed.slice(1, -1).trim()\n // Only unwrap the outermost pair of parentheses to avoid accidentally breaking syntax.\n if (!inner.startsWith('(') || !inner.endsWith(')')) {\n return inner\n }\n }\n return trimmed\n}\n\nconst extractArrow = (source: string): { readonly param: string; readonly body: string } | undefined => {\n const idx = source.indexOf('=>')\n if (idx < 0) return undefined\n const left = source.slice(0, idx).trim()\n const right = source.slice(idx + 2).trim()\n\n const paramRaw = unwrapParens(left)\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(paramRaw)) return undefined\n\n // block body: { return expr }\n if (right.startsWith('{')) {\n const m = right.match(/^\\{\\s*return\\s+(.+?);?\\s*\\}\\s*$/s)\n if (!m) return undefined\n return { param: paramRaw, body: m[1]?.trim() ?? '' }\n }\n\n return { param: paramRaw, body: right }\n}\n\nconst extractFunctionReturn = (source: string): { readonly param: string; readonly body: string } | undefined => {\n const trimmed = source.trim()\n const m = trimmed.match(\n /^function\\s*(?:[A-Za-z_$][A-Za-z0-9_$]*\\s*)?\\(\\s*([A-Za-z_$][A-Za-z0-9_$]*)\\s*\\)\\s*\\{\\s*return\\s+(.+?);?\\s*\\}\\s*$/s,\n )\n if (!m) return undefined\n\n const param = m[1]?.trim() ?? ''\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(param)) return undefined\n\n const body = m[2]?.trim() ?? ''\n if (body.length === 0) return undefined\n\n return { param, body }\n}\n\ntype ParsedSelector =\n | { readonly kind: 'path'; readonly path: string }\n | { readonly kind: 'struct'; readonly entries: ReadonlyArray<readonly [string, string]> }\n\nconst tryParseSelectorSource = (source: string): ParsedSelector | undefined => {\n const arrowOrFn = extractArrow(source) ?? extractFunctionReturn(source)\n if (!arrowOrFn) return undefined\n\n const expr = unwrapParens(arrowOrFn.body).trim().replace(/;$/, '').trim()\n\n // path: s.a.b\n {\n const re = new RegExp(`^${arrowOrFn.param}\\\\.([A-Za-z0-9_$]+(?:\\\\.[A-Za-z0-9_$]+)*)$`)\n const m = expr.match(re)\n if (m) {\n return { kind: 'path', path: m[1] }\n }\n }\n\n // struct: ({ a: s.a, b: s.b })\n if (expr.startsWith('{') && expr.endsWith('}')) {\n const inner = expr.slice(1, -1).trim()\n if (inner.length === 0) return { kind: 'struct', entries: [] }\n\n const parts = inner\n .split(',')\n .map((p) => p.trim())\n .filter((p) => p.length > 0)\n\n const entries: Array<readonly [string, string]> = []\n\n for (const part of parts) {\n const idx = part.indexOf(':')\n if (idx < 0) return undefined\n const key = part.slice(0, idx).trim()\n const value = part.slice(idx + 1).trim()\n\n if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) return undefined\n\n const re = new RegExp(`^${arrowOrFn.param}\\\\.([A-Za-z0-9_$]+(?:\\\\.[A-Za-z0-9_$]+)*)$`)\n const m = value.match(re)\n if (!m) return undefined\n entries.push([key, m[1]] as const)\n }\n\n // Sort entries to ensure a stable selectorId.\n entries.sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n return { kind: 'struct', entries }\n }\n\n return undefined\n}\n\ntype ReadQueryStaticTemplate = {\n readonly selectorId: string\n readonly reads: ReadonlyArray<string | number>\n readonly readsDigest: ReadsDigest\n readonly equalsKind: EqualsKind\n}\n\nconst READ_QUERY_TEMPLATE_CACHE_MAX = 2048\nconst readQueryTemplateByFn = new WeakMap<Function, ReadQueryStaticTemplate>()\nconst readQueryTemplateBySource = new Map<string, ReadQueryStaticTemplate>()\n\nconst lruGet = <K, V>(map: Map<K, V>, key: K): V | undefined => {\n const value = map.get(key)\n if (value === undefined) return undefined\n map.delete(key)\n map.set(key, value)\n return value\n}\n\nconst lruSet = <K, V>(map: Map<K, V>, key: K, value: V, maxSize: number) => {\n if (map.has(key)) map.delete(key)\n map.set(key, value)\n if (map.size <= maxSize) return\n const oldestKey = map.keys().next().value as K | undefined\n if (oldestKey !== undefined) {\n map.delete(oldestKey)\n }\n}\n\nconst safeToString = (fn: Function): string => {\n try {\n return fn.toString()\n } catch {\n return ''\n }\n}\n\nexport const make = <S, V>(spec: ReadQuery<S, V>): ReadQuery<S, V> => spec\n\nexport const compile = <S, V>(input: ReadQueryInput<S, V>): ReadQueryCompiled<S, V> => {\n if (isReadQuery(input)) {\n const reads = normalizeReads(input.reads)\n const readsDigest = reads.length > 0 ? makeReadsDigest(reads) : undefined\n\n const equalsKind = input.equalsKind\n const staticIr: ReadQueryStaticIr = {\n selectorId: input.selectorId,\n debugKey: input.debugKey,\n lane: 'static',\n producer: 'manual',\n reads,\n readsDigest,\n equalsKind,\n }\n\n return {\n ...input,\n reads,\n lane: 'static',\n producer: 'manual',\n readsDigest,\n staticIr,\n }\n }\n\n const selector = input\n const debugKey =\n (typeof (selector as any)?.debugKey === 'string' && (selector as any).debugKey.length > 0\n ? (selector as any).debugKey\n : undefined) ??\n (typeof (selector as any).name === 'string' && (selector as any).name.length > 0\n ? (selector as any).name\n : undefined)\n\n const declaredReads: ReadonlyArray<string> | undefined = Array.isArray((selector as any)?.fieldPaths)\n ? ((selector as any).fieldPaths as ReadonlyArray<unknown>).filter((x): x is string => typeof x === 'string')\n : undefined\n\n if (declaredReads && declaredReads.length > 0) {\n const reads = normalizeReads(declaredReads)\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'reads', reads })\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n const cachedByFn = readQueryTemplateByFn.get(selector as unknown as Function)\n if (cachedByFn) {\n const staticIr: ReadQueryStaticIr = {\n selectorId: cachedByFn.selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads: cachedByFn.reads,\n readsDigest: cachedByFn.readsDigest,\n equalsKind: cachedByFn.equalsKind,\n }\n\n return {\n selectorId: cachedByFn.selectorId,\n debugKey,\n reads: cachedByFn.reads,\n select: selector as any,\n equalsKind: cachedByFn.equalsKind,\n lane: 'static',\n producer: 'jit',\n readsDigest: cachedByFn.readsDigest,\n staticIr,\n }\n }\n\n const srcTrimmed = safeToString(selector as unknown as Function).trim()\n const cachedBySource = srcTrimmed.length > 0 ? lruGet(readQueryTemplateBySource, srcTrimmed) : undefined\n if (cachedBySource) {\n readQueryTemplateByFn.set(selector as unknown as Function, cachedBySource)\n const staticIr: ReadQueryStaticIr = {\n selectorId: cachedBySource.selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads: cachedBySource.reads,\n readsDigest: cachedBySource.readsDigest,\n equalsKind: cachedBySource.equalsKind,\n }\n\n return {\n selectorId: cachedBySource.selectorId,\n debugKey,\n reads: cachedBySource.reads,\n select: selector as any,\n equalsKind: cachedBySource.equalsKind,\n lane: 'static',\n producer: 'jit',\n readsDigest: cachedBySource.readsDigest,\n staticIr,\n }\n }\n\n const parsed = srcTrimmed.length > 0 ? tryParseSelectorSource(srcTrimmed) : undefined\n\n if (parsed?.kind === 'path') {\n const reads = [parsed.path]\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'path', path: parsed.path })\n const template: ReadQueryStaticTemplate = { selectorId, reads, readsDigest, equalsKind: 'objectIs' }\n readQueryTemplateByFn.set(selector as unknown as Function, template)\n lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX)\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n if (parsed?.kind === 'struct') {\n const reads = normalizeReads(parsed.entries.map(([, path]) => path))\n const readsDigest = makeReadsDigest(reads)\n const selectorId = computeSelectorId({ kind: 'struct', entries: parsed.entries })\n const template: ReadQueryStaticTemplate = { selectorId, reads, readsDigest, equalsKind: 'shallowStruct' }\n readQueryTemplateByFn.set(selector as unknown as Function, template)\n lruSet(readQueryTemplateBySource, srcTrimmed, template, READ_QUERY_TEMPLATE_CACHE_MAX)\n\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'static',\n producer: 'jit',\n reads,\n readsDigest,\n equalsKind: 'shallowStruct',\n }\n\n return {\n selectorId,\n debugKey,\n reads,\n select: selector as any,\n equalsKind: 'shallowStruct',\n lane: 'static',\n producer: 'jit',\n readsDigest,\n staticIr,\n }\n }\n\n // Dynamic lane fallback (no stable reads / unsupported subset)\n const baseFallbackReason: ReadQueryFallbackReason =\n srcTrimmed.includes('=>') || srcTrimmed.startsWith('function') ? 'unsupportedSyntax' : 'missingDeps'\n\n const lowDiscriminabilitySource = srcTrimmed.length === 0 || srcTrimmed.includes('[native code]')\n const fallbackReason: ReadQueryFallbackReason =\n !debugKey || lowDiscriminabilitySource ? 'unstableSelectorId' : baseFallbackReason\n\n const selectorId =\n fallbackReason === 'unstableSelectorId'\n ? computeUnstableSelectorId(selector as unknown as Function)\n : computeSelectorId({ kind: 'dynamic', debugKey, src: srcTrimmed })\n const staticIr: ReadQueryStaticIr = {\n selectorId,\n debugKey,\n lane: 'dynamic',\n producer: 'dynamic',\n fallbackReason,\n equalsKind: 'objectIs',\n }\n\n return {\n selectorId,\n debugKey,\n reads: [],\n select: selector as any,\n equalsKind: 'objectIs',\n lane: 'dynamic',\n producer: 'dynamic',\n fallbackReason,\n staticIr,\n }\n}\n\nexport interface ReadQueryStrictGateConfig {\n readonly mode: 'off' | 'warn' | 'error'\n readonly requireStatic?: {\n readonly selectorIds?: ReadonlyArray<string>\n readonly modules?: ReadonlyArray<string>\n }\n readonly denyFallbackReasons?: ReadonlyArray<ReadQueryFallbackReason>\n}\n\nexport interface ReadQueryStrictGateViolationDetails {\n readonly moduleId: string\n readonly instanceId: string\n readonly txnSeq: number\n readonly selectorId: string\n readonly debugKey?: string\n readonly fallbackReason: ReadQueryFallbackReason\n readonly rule: 'denyFallbackReason' | 'requireStatic:global' | 'requireStatic:selectorId' | 'requireStatic:module'\n}\n\nexport interface ReadQueryStrictGateError extends Error {\n readonly _tag: 'ReadQueryStrictGateError'\n readonly details: ReadQueryStrictGateViolationDetails\n}\n\nexport type ReadQueryStrictGateDiagnosticEvent = Extract<DebugSink.Event, { readonly type: 'diagnostic' }>\n\nexport type ReadQueryStrictGateDecision =\n | { readonly verdict: 'PASS' }\n | {\n readonly verdict: 'WARN'\n readonly diagnostic: ReadQueryStrictGateDiagnosticEvent\n readonly details: ReadQueryStrictGateViolationDetails\n }\n | {\n readonly verdict: 'FAIL'\n readonly diagnostic: ReadQueryStrictGateDiagnosticEvent\n readonly error: ReadQueryStrictGateError\n readonly details: ReadQueryStrictGateViolationDetails\n }\n\nconst filterNonEmpty = (values: ReadonlyArray<string> | undefined): ReadonlyArray<string> | undefined => {\n if (!values || values.length === 0) return undefined\n const next = values.map((v) => v.trim()).filter((v) => v.length > 0)\n return next.length > 0 ? next : undefined\n}\n\nconst makeStrictGateDiagnostic = (args: {\n readonly config: ReadQueryStrictGateConfig\n readonly details: ReadQueryStrictGateViolationDetails\n}): ReadQueryStrictGateDiagnosticEvent => {\n const severity = args.config.mode === 'warn' ? ('warning' as const) : ('error' as const)\n\n return {\n type: 'diagnostic',\n moduleId: args.details.moduleId,\n instanceId: args.details.instanceId,\n txnSeq: args.details.txnSeq,\n code: 'read_query::strict_gate',\n severity,\n message: `ReadQuery strict gate violated: selector entered dynamic lane (selectorId=${args.details.selectorId}, reason=${args.details.fallbackReason}).`,\n hint:\n 'Fix: make the selector statically compilable (AOT/JIT) or pass an explicit ReadQuery; ' +\n 'or disable/narrow the gate via RuntimeOptions.readQuery.strictGate.requireStatic / denyFallbackReasons.',\n kind: 'read_query:strict_gate',\n trigger: {\n kind: 'read_query',\n name: 'strict_gate',\n details: args.details,\n },\n }\n}\n\nconst makeStrictGateError = (args: {\n readonly details: ReadQueryStrictGateViolationDetails\n}): ReadQueryStrictGateError =>\n Object.assign(\n new Error(\n `[ReadQueryStrictGateError] selector entered dynamic lane (selectorId=${args.details.selectorId}, reason=${args.details.fallbackReason}).`,\n ),\n {\n _tag: 'ReadQueryStrictGateError' as const,\n details: args.details,\n },\n ) as ReadQueryStrictGateError\n\nexport const evaluateStrictGate = (args: {\n readonly config: ReadQueryStrictGateConfig\n readonly moduleId: string\n readonly instanceId: string\n readonly txnSeq: number\n readonly compiled: ReadQueryCompiled<any, any>\n}): ReadQueryStrictGateDecision => {\n if (args.config.mode === 'off') {\n return { verdict: 'PASS' }\n }\n\n if (args.compiled.lane !== 'dynamic') {\n return { verdict: 'PASS' }\n }\n\n const fallbackReason = (args.compiled.fallbackReason ?? 'missingDeps') as ReadQueryFallbackReason\n\n const denyFallbackReasons = args.config.denyFallbackReasons\n const denied = !!denyFallbackReasons?.includes(fallbackReason)\n\n const selectorIds = filterNonEmpty(args.config.requireStatic?.selectorIds)\n const modules = filterNonEmpty(args.config.requireStatic?.modules)\n const hasCoverageFilter = !!selectorIds || !!modules\n\n const matchedSelectorId = !!selectorIds?.includes(args.compiled.selectorId)\n const matchedModule = !!modules?.includes(args.moduleId)\n const coveredByRequireStatic = !hasCoverageFilter || matchedSelectorId || matchedModule\n\n if (!denied && !coveredByRequireStatic) {\n return { verdict: 'PASS' }\n }\n\n const rule: ReadQueryStrictGateViolationDetails['rule'] = denied\n ? 'denyFallbackReason'\n : !hasCoverageFilter\n ? 'requireStatic:global'\n : matchedSelectorId\n ? 'requireStatic:selectorId'\n : 'requireStatic:module'\n\n const details: ReadQueryStrictGateViolationDetails = {\n moduleId: args.moduleId,\n instanceId: args.instanceId,\n txnSeq: args.txnSeq,\n selectorId: args.compiled.selectorId,\n debugKey: args.compiled.debugKey,\n fallbackReason,\n rule,\n }\n\n const diagnostic = makeStrictGateDiagnostic({ config: args.config, details })\n\n if (args.config.mode === 'warn') {\n return { verdict: 'WARN', diagnostic, details }\n }\n\n const error = makeStrictGateError({ details })\n return { verdict: 'FAIL', diagnostic, error, details }\n}\n"],"mappings":"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","names":["compile","isReadQuery","make","staticIr","selectorId","isReadQuery","make","compile"]}
@@ -1,2 +1,2 @@
1
- import './ReadQuery-SinbStGF.cjs';
2
- export { E as EqualsKind, a as ReadLane, b as ReadProducer, e as ReadQuery, f as ReadQueryCompiled, g as ReadQueryInput, d as ReadQueryStaticIr, c as ReadsDigest, h as compile, i as isReadQuery, m as make } from './ReadQuery-CL5XlXts.cjs';
1
+ import './ReadQuery-CafjlJQo.cjs';
2
+ export { E as EqualsKind, c as ReadLane, d as ReadProducer, g as ReadQuery, b as ReadQueryCompiled, a as ReadQueryInput, f as ReadQueryStaticIr, e as ReadsDigest, h as compile, i as isReadQuery, m as make } from './ReadQuery-mc0NgrFV.cjs';
@@ -1,2 +1,2 @@
1
- import './ReadQuery-SinbStGF.js';
2
- export { E as EqualsKind, a as ReadLane, b as ReadProducer, e as ReadQuery, f as ReadQueryCompiled, g as ReadQueryInput, d as ReadQueryStaticIr, c as ReadsDigest, h as compile, i as isReadQuery, m as make } from './ReadQuery-BlMwhe-F.js';
1
+ import './ReadQuery-CafjlJQo.js';
2
+ export { E as EqualsKind, c as ReadLane, d as ReadProducer, g as ReadQuery, b as ReadQueryCompiled, a as ReadQueryInput, f as ReadQueryStaticIr, e as ReadsDigest, h as compile, i as isReadQuery, m as make } from './ReadQuery-C4vZ8Prc.js';
package/dist/ReadQuery.js CHANGED
@@ -2,9 +2,9 @@ import {
2
2
  compile,
3
3
  isReadQuery,
4
4
  make
5
- } from "./chunk-TKZ7MEIA.js";
6
- import "./chunk-CW6T36TN.js";
7
- import "./chunk-GMPEOUP2.js";
5
+ } from "./chunk-53GVPGSM.js";
6
+ import "./chunk-M3M7JFAH.js";
7
+ import "./chunk-4MZ7BT3R.js";
8
8
  import "./chunk-PZ5AY32C.js";
9
9
  export {
10
10
  compile,
@@ -1,10 +1,79 @@
1
1
  import * as effect from 'effect';
2
2
  import { Layer, Effect } from 'effect';
3
- import { h as AnyModuleShape, l as ModuleRuntime, k as ModuleImpl } from './module-k7m3txak.js';
4
- import { A as AnyModule } from './Module-DnzluX2J.js';
5
- import { S as StaticIr } from './ir-DUOz6H-5.js';
6
- import { J as JsonValue, K as KernelImplementationRef, b as RuntimeServicesOverrides, D as DiagnosticsLevel, E as ExtractManifestOptions, M as ModuleManifest } from './Observability-cY4kLn0S.js';
7
- import { R as RuntimeServicesOverrides$1, F as FullCutoverGateMode, a as FullCutoverGateResult } from './Kernel-CnGE1Fyk.js';
3
+ import { Y as JsonValue, j as AnyModuleShape, o as ModuleRuntime, m as ModuleImpl } from './module-DqQ1U-Me.js';
4
+ import { A as AnyModule } from './Module-CFj0I2yE.js';
5
+ import { S as StaticIr } from './ir-DGyGiwVe.js';
6
+ import { K as KernelImplementationRef, b as RuntimeServicesOverrides, D as DiagnosticsLevel, E as ExtractManifestOptions, M as ModuleManifest } from './Observability-D-ZWeEVb.js';
7
+ import { a as WorkflowStaticIrV1 } from './Workflow-CW9S_aAP.js';
8
+ import { R as RuntimeServicesOverrides$1, F as FullCutoverGateMode, a as FullCutoverGateResult } from './Kernel-DGSpS4GM.js';
9
+
10
+ type ControlSurfaceVersion = 1;
11
+ type Digest = string;
12
+ type ModuleId = string;
13
+ type ActionTag = string;
14
+ type WorkflowStableId = string;
15
+ type ActionRef = {
16
+ readonly moduleId: ModuleId;
17
+ readonly actionTag: ActionTag;
18
+ };
19
+ type EffectTrigger = {
20
+ readonly kind: 'action';
21
+ readonly action: ActionRef;
22
+ } | {
23
+ readonly kind: 'lifecycle';
24
+ readonly phase: 'onStart' | 'onInit';
25
+ };
26
+ type SliceRef = {
27
+ readonly digest: Digest;
28
+ };
29
+ type WorkflowSurfaceRefV1 = SliceRef;
30
+ type ControlEffectIndexEntryV1 = {
31
+ readonly kind: 'workflow';
32
+ readonly effectId: string;
33
+ readonly trigger: EffectTrigger;
34
+ readonly programId: WorkflowStableId;
35
+ readonly programDigest?: Digest;
36
+ } | {
37
+ readonly kind: 'opaque';
38
+ readonly effectId: string;
39
+ readonly trigger: EffectTrigger;
40
+ readonly sourceKey: string;
41
+ readonly summary?: string;
42
+ };
43
+ type ControlSurfaceManifestV1 = {
44
+ readonly version: ControlSurfaceVersion;
45
+ readonly digest: Digest;
46
+ readonly modules: ReadonlyArray<{
47
+ readonly moduleId: ModuleId;
48
+ readonly workflowSurface?: WorkflowSurfaceRefV1;
49
+ readonly effectsIndex: ReadonlyArray<ControlEffectIndexEntryV1>;
50
+ readonly effectsIndexDigest?: Digest;
51
+ }>;
52
+ readonly meta?: {
53
+ readonly generator?: JsonValue;
54
+ };
55
+ };
56
+
57
+ type WorkflowSurfaceVersion = 1;
58
+ type WorkflowSurfaceV1 = {
59
+ readonly version: WorkflowSurfaceVersion;
60
+ readonly digest: string;
61
+ readonly programs: ReadonlyArray<WorkflowStaticIrV1>;
62
+ };
63
+
64
+ type ExportedWorkflowSurface = {
65
+ readonly moduleId: string;
66
+ readonly surface: WorkflowSurfaceV1;
67
+ };
68
+ type ExportControlSurfaceResult = {
69
+ readonly manifest: ControlSurfaceManifestV1;
70
+ readonly workflowSurfaces: ReadonlyArray<ExportedWorkflowSurface>;
71
+ };
72
+ type ExportControlSurfaceOptions = {
73
+ readonly meta?: {
74
+ readonly generator?: JsonValue;
75
+ };
76
+ };
8
77
 
9
78
  type ManifestDiffSeverity = 'BREAKING' | 'RISKY' | 'INFO';
10
79
  type ManifestDiffVerdict = 'PASS' | 'WARN' | 'FAIL';
@@ -152,6 +221,14 @@ declare const diffManifest: (before: ModuleManifest, after: ModuleManifest, opti
152
221
  * If the module contains a StateTrait program, exports canonical StaticIR (same shape and digest as StateTrait.exportStaticIr).
153
222
  */
154
223
  declare const exportStaticIr: (module: ModuleImpl<any, AnyModuleShape, any> | AnyModule) => StaticIr | undefined;
224
+ /**
225
+ * Reflection.exportControlSurface
226
+ *
227
+ * Exports the ControlSurfaceManifest (Root IR) and slice attachments (e.g. workflowSurface) from configured modules.
228
+ *
229
+ * Note: currently requires `AnyModule` (the configured module object returned by `ModuleDef.implement(...)`).
230
+ */
231
+ declare const exportControlSurface: (modules: ReadonlyArray<AnyModule>, options?: ExportControlSurfaceOptions) => ExportControlSurfaceResult;
155
232
  /**
156
233
  * Reflection.verifyKernelContract
157
234
  *
@@ -161,6 +238,9 @@ declare const verifyKernelContract: <Sh extends AnyModuleShape>(module: ModuleIm
161
238
  declare const verifyFullCutoverGate: <Sh extends AnyModuleShape>(module: ModuleImpl<any, Sh, any> | AnyModule, options?: VerifyFullCutoverGateOptions<Sh>) => Effect.Effect<FullCutoverGateVerificationResult, never, any>;
162
239
 
163
240
  type Reflection_DiffManifestOptions = DiffManifestOptions;
241
+ type Reflection_ExportControlSurfaceOptions = ExportControlSurfaceOptions;
242
+ type Reflection_ExportControlSurfaceResult = ExportControlSurfaceResult;
243
+ type Reflection_ExportedWorkflowSurface = ExportedWorkflowSurface;
164
244
  declare const Reflection_ExtractManifestOptions: typeof ExtractManifestOptions;
165
245
  type Reflection_FullCutoverGateTrialRunOptions<Sh extends AnyModuleShape> = FullCutoverGateTrialRunOptions<Sh>;
166
246
  type Reflection_FullCutoverGateVerificationResult = FullCutoverGateVerificationResult;
@@ -171,12 +251,13 @@ type Reflection_ModuleManifestDiff = ModuleManifestDiff;
171
251
  type Reflection_VerifyFullCutoverGateOptions<Sh extends AnyModuleShape> = VerifyFullCutoverGateOptions<Sh>;
172
252
  type Reflection_VerifyKernelContractOptions<Sh extends AnyModuleShape> = VerifyKernelContractOptions<Sh>;
173
253
  declare const Reflection_diffManifest: typeof diffManifest;
254
+ declare const Reflection_exportControlSurface: typeof exportControlSurface;
174
255
  declare const Reflection_exportStaticIr: typeof exportStaticIr;
175
256
  declare const Reflection_extractManifest: typeof extractManifest;
176
257
  declare const Reflection_verifyFullCutoverGate: typeof verifyFullCutoverGate;
177
258
  declare const Reflection_verifyKernelContract: typeof verifyKernelContract;
178
259
  declare namespace Reflection {
179
- export { type Reflection_DiffManifestOptions as DiffManifestOptions, Reflection_ExtractManifestOptions as ExtractManifestOptions, type Reflection_FullCutoverGateTrialRunOptions as FullCutoverGateTrialRunOptions, type Reflection_FullCutoverGateVerificationResult as FullCutoverGateVerificationResult, type Reflection_KernelContractAllowedDiff as KernelContractAllowedDiff, type Reflection_KernelContractVerificationResult as KernelContractVerificationResult, Reflection_ModuleManifest as ModuleManifest, type Reflection_ModuleManifestDiff as ModuleManifestDiff, type Reflection_VerifyFullCutoverGateOptions as VerifyFullCutoverGateOptions, type Reflection_VerifyKernelContractOptions as VerifyKernelContractOptions, Reflection_diffManifest as diffManifest, Reflection_exportStaticIr as exportStaticIr, Reflection_extractManifest as extractManifest, Reflection_verifyFullCutoverGate as verifyFullCutoverGate, Reflection_verifyKernelContract as verifyKernelContract };
260
+ export { type Reflection_DiffManifestOptions as DiffManifestOptions, type Reflection_ExportControlSurfaceOptions as ExportControlSurfaceOptions, type Reflection_ExportControlSurfaceResult as ExportControlSurfaceResult, type Reflection_ExportedWorkflowSurface as ExportedWorkflowSurface, Reflection_ExtractManifestOptions as ExtractManifestOptions, type Reflection_FullCutoverGateTrialRunOptions as FullCutoverGateTrialRunOptions, type Reflection_FullCutoverGateVerificationResult as FullCutoverGateVerificationResult, type Reflection_KernelContractAllowedDiff as KernelContractAllowedDiff, type Reflection_KernelContractVerificationResult as KernelContractVerificationResult, Reflection_ModuleManifest as ModuleManifest, type Reflection_ModuleManifestDiff as ModuleManifestDiff, type Reflection_VerifyFullCutoverGateOptions as VerifyFullCutoverGateOptions, type Reflection_VerifyKernelContractOptions as VerifyKernelContractOptions, Reflection_diffManifest as diffManifest, Reflection_exportControlSurface as exportControlSurface, Reflection_exportStaticIr as exportStaticIr, Reflection_extractManifest as extractManifest, Reflection_verifyFullCutoverGate as verifyFullCutoverGate, Reflection_verifyKernelContract as verifyKernelContract };
180
261
  }
181
262
 
182
- export { type DiffManifestOptions as D, type FullCutoverGateTrialRunOptions as F, type KernelContractVerificationResult as K, type ModuleManifestDiff as M, Reflection as R, type VerifyKernelContractOptions as V, type KernelContractAllowedDiff as a, type VerifyFullCutoverGateOptions as b, type FullCutoverGateVerificationResult as c, diffManifest as d, extractManifest as e, exportStaticIr as f, verifyFullCutoverGate as g, verifyKernelContract as v };
263
+ export { type DiffManifestOptions as D, type ExportControlSurfaceOptions as E, type FullCutoverGateTrialRunOptions as F, type KernelContractVerificationResult as K, type ModuleManifestDiff as M, Reflection as R, type VerifyKernelContractOptions as V, type ExportControlSurfaceResult as a, type ExportedWorkflowSurface as b, type KernelContractAllowedDiff as c, type VerifyFullCutoverGateOptions as d, type FullCutoverGateVerificationResult as e, extractManifest as f, diffManifest as g, exportStaticIr as h, exportControlSurface as i, verifyFullCutoverGate as j, verifyKernelContract as v };
@@ -1,10 +1,79 @@
1
1
  import * as effect from 'effect';
2
2
  import { Layer, Effect } from 'effect';
3
- import { h as AnyModuleShape, l as ModuleRuntime, k as ModuleImpl } from './module-B8CBqIZ_.cjs';
4
- import { A as AnyModule } from './Module-B_0xRDMR.cjs';
5
- import { S as StaticIr } from './ir-BMP7yxJJ.cjs';
6
- import { J as JsonValue, K as KernelImplementationRef, b as RuntimeServicesOverrides, D as DiagnosticsLevel, E as ExtractManifestOptions, M as ModuleManifest } from './Observability-COqEvp2C.cjs';
7
- import { R as RuntimeServicesOverrides$1, F as FullCutoverGateMode, a as FullCutoverGateResult } from './Kernel-8kC-jOda.cjs';
3
+ import { Y as JsonValue, j as AnyModuleShape, o as ModuleRuntime, m as ModuleImpl } from './module-doenaCsZ.cjs';
4
+ import { A as AnyModule } from './Module-DpXPW9EQ.cjs';
5
+ import { S as StaticIr } from './ir-C-Zm_GlZ.cjs';
6
+ import { K as KernelImplementationRef, b as RuntimeServicesOverrides, D as DiagnosticsLevel, E as ExtractManifestOptions, M as ModuleManifest } from './Observability-V7sRMYTh.cjs';
7
+ import { a as WorkflowStaticIrV1 } from './Workflow-BlFG_20_.cjs';
8
+ import { R as RuntimeServicesOverrides$1, F as FullCutoverGateMode, a as FullCutoverGateResult } from './Kernel-DZAk-Mrn.cjs';
9
+
10
+ type ControlSurfaceVersion = 1;
11
+ type Digest = string;
12
+ type ModuleId = string;
13
+ type ActionTag = string;
14
+ type WorkflowStableId = string;
15
+ type ActionRef = {
16
+ readonly moduleId: ModuleId;
17
+ readonly actionTag: ActionTag;
18
+ };
19
+ type EffectTrigger = {
20
+ readonly kind: 'action';
21
+ readonly action: ActionRef;
22
+ } | {
23
+ readonly kind: 'lifecycle';
24
+ readonly phase: 'onStart' | 'onInit';
25
+ };
26
+ type SliceRef = {
27
+ readonly digest: Digest;
28
+ };
29
+ type WorkflowSurfaceRefV1 = SliceRef;
30
+ type ControlEffectIndexEntryV1 = {
31
+ readonly kind: 'workflow';
32
+ readonly effectId: string;
33
+ readonly trigger: EffectTrigger;
34
+ readonly programId: WorkflowStableId;
35
+ readonly programDigest?: Digest;
36
+ } | {
37
+ readonly kind: 'opaque';
38
+ readonly effectId: string;
39
+ readonly trigger: EffectTrigger;
40
+ readonly sourceKey: string;
41
+ readonly summary?: string;
42
+ };
43
+ type ControlSurfaceManifestV1 = {
44
+ readonly version: ControlSurfaceVersion;
45
+ readonly digest: Digest;
46
+ readonly modules: ReadonlyArray<{
47
+ readonly moduleId: ModuleId;
48
+ readonly workflowSurface?: WorkflowSurfaceRefV1;
49
+ readonly effectsIndex: ReadonlyArray<ControlEffectIndexEntryV1>;
50
+ readonly effectsIndexDigest?: Digest;
51
+ }>;
52
+ readonly meta?: {
53
+ readonly generator?: JsonValue;
54
+ };
55
+ };
56
+
57
+ type WorkflowSurfaceVersion = 1;
58
+ type WorkflowSurfaceV1 = {
59
+ readonly version: WorkflowSurfaceVersion;
60
+ readonly digest: string;
61
+ readonly programs: ReadonlyArray<WorkflowStaticIrV1>;
62
+ };
63
+
64
+ type ExportedWorkflowSurface = {
65
+ readonly moduleId: string;
66
+ readonly surface: WorkflowSurfaceV1;
67
+ };
68
+ type ExportControlSurfaceResult = {
69
+ readonly manifest: ControlSurfaceManifestV1;
70
+ readonly workflowSurfaces: ReadonlyArray<ExportedWorkflowSurface>;
71
+ };
72
+ type ExportControlSurfaceOptions = {
73
+ readonly meta?: {
74
+ readonly generator?: JsonValue;
75
+ };
76
+ };
8
77
 
9
78
  type ManifestDiffSeverity = 'BREAKING' | 'RISKY' | 'INFO';
10
79
  type ManifestDiffVerdict = 'PASS' | 'WARN' | 'FAIL';
@@ -152,6 +221,14 @@ declare const diffManifest: (before: ModuleManifest, after: ModuleManifest, opti
152
221
  * If the module contains a StateTrait program, exports canonical StaticIR (same shape and digest as StateTrait.exportStaticIr).
153
222
  */
154
223
  declare const exportStaticIr: (module: ModuleImpl<any, AnyModuleShape, any> | AnyModule) => StaticIr | undefined;
224
+ /**
225
+ * Reflection.exportControlSurface
226
+ *
227
+ * Exports the ControlSurfaceManifest (Root IR) and slice attachments (e.g. workflowSurface) from configured modules.
228
+ *
229
+ * Note: currently requires `AnyModule` (the configured module object returned by `ModuleDef.implement(...)`).
230
+ */
231
+ declare const exportControlSurface: (modules: ReadonlyArray<AnyModule>, options?: ExportControlSurfaceOptions) => ExportControlSurfaceResult;
155
232
  /**
156
233
  * Reflection.verifyKernelContract
157
234
  *
@@ -161,6 +238,9 @@ declare const verifyKernelContract: <Sh extends AnyModuleShape>(module: ModuleIm
161
238
  declare const verifyFullCutoverGate: <Sh extends AnyModuleShape>(module: ModuleImpl<any, Sh, any> | AnyModule, options?: VerifyFullCutoverGateOptions<Sh>) => Effect.Effect<FullCutoverGateVerificationResult, never, any>;
162
239
 
163
240
  type Reflection_DiffManifestOptions = DiffManifestOptions;
241
+ type Reflection_ExportControlSurfaceOptions = ExportControlSurfaceOptions;
242
+ type Reflection_ExportControlSurfaceResult = ExportControlSurfaceResult;
243
+ type Reflection_ExportedWorkflowSurface = ExportedWorkflowSurface;
164
244
  declare const Reflection_ExtractManifestOptions: typeof ExtractManifestOptions;
165
245
  type Reflection_FullCutoverGateTrialRunOptions<Sh extends AnyModuleShape> = FullCutoverGateTrialRunOptions<Sh>;
166
246
  type Reflection_FullCutoverGateVerificationResult = FullCutoverGateVerificationResult;
@@ -171,12 +251,13 @@ type Reflection_ModuleManifestDiff = ModuleManifestDiff;
171
251
  type Reflection_VerifyFullCutoverGateOptions<Sh extends AnyModuleShape> = VerifyFullCutoverGateOptions<Sh>;
172
252
  type Reflection_VerifyKernelContractOptions<Sh extends AnyModuleShape> = VerifyKernelContractOptions<Sh>;
173
253
  declare const Reflection_diffManifest: typeof diffManifest;
254
+ declare const Reflection_exportControlSurface: typeof exportControlSurface;
174
255
  declare const Reflection_exportStaticIr: typeof exportStaticIr;
175
256
  declare const Reflection_extractManifest: typeof extractManifest;
176
257
  declare const Reflection_verifyFullCutoverGate: typeof verifyFullCutoverGate;
177
258
  declare const Reflection_verifyKernelContract: typeof verifyKernelContract;
178
259
  declare namespace Reflection {
179
- export { type Reflection_DiffManifestOptions as DiffManifestOptions, Reflection_ExtractManifestOptions as ExtractManifestOptions, type Reflection_FullCutoverGateTrialRunOptions as FullCutoverGateTrialRunOptions, type Reflection_FullCutoverGateVerificationResult as FullCutoverGateVerificationResult, type Reflection_KernelContractAllowedDiff as KernelContractAllowedDiff, type Reflection_KernelContractVerificationResult as KernelContractVerificationResult, Reflection_ModuleManifest as ModuleManifest, type Reflection_ModuleManifestDiff as ModuleManifestDiff, type Reflection_VerifyFullCutoverGateOptions as VerifyFullCutoverGateOptions, type Reflection_VerifyKernelContractOptions as VerifyKernelContractOptions, Reflection_diffManifest as diffManifest, Reflection_exportStaticIr as exportStaticIr, Reflection_extractManifest as extractManifest, Reflection_verifyFullCutoverGate as verifyFullCutoverGate, Reflection_verifyKernelContract as verifyKernelContract };
260
+ export { type Reflection_DiffManifestOptions as DiffManifestOptions, type Reflection_ExportControlSurfaceOptions as ExportControlSurfaceOptions, type Reflection_ExportControlSurfaceResult as ExportControlSurfaceResult, type Reflection_ExportedWorkflowSurface as ExportedWorkflowSurface, Reflection_ExtractManifestOptions as ExtractManifestOptions, type Reflection_FullCutoverGateTrialRunOptions as FullCutoverGateTrialRunOptions, type Reflection_FullCutoverGateVerificationResult as FullCutoverGateVerificationResult, type Reflection_KernelContractAllowedDiff as KernelContractAllowedDiff, type Reflection_KernelContractVerificationResult as KernelContractVerificationResult, Reflection_ModuleManifest as ModuleManifest, type Reflection_ModuleManifestDiff as ModuleManifestDiff, type Reflection_VerifyFullCutoverGateOptions as VerifyFullCutoverGateOptions, type Reflection_VerifyKernelContractOptions as VerifyKernelContractOptions, Reflection_diffManifest as diffManifest, Reflection_exportControlSurface as exportControlSurface, Reflection_exportStaticIr as exportStaticIr, Reflection_extractManifest as extractManifest, Reflection_verifyFullCutoverGate as verifyFullCutoverGate, Reflection_verifyKernelContract as verifyKernelContract };
180
261
  }
181
262
 
182
- export { type DiffManifestOptions as D, type FullCutoverGateTrialRunOptions as F, type KernelContractVerificationResult as K, type ModuleManifestDiff as M, Reflection as R, type VerifyKernelContractOptions as V, type KernelContractAllowedDiff as a, type VerifyFullCutoverGateOptions as b, type FullCutoverGateVerificationResult as c, diffManifest as d, extractManifest as e, exportStaticIr as f, verifyFullCutoverGate as g, verifyKernelContract as v };
263
+ export { type DiffManifestOptions as D, type ExportControlSurfaceOptions as E, type FullCutoverGateTrialRunOptions as F, type KernelContractVerificationResult as K, type ModuleManifestDiff as M, Reflection as R, type VerifyKernelContractOptions as V, type ExportControlSurfaceResult as a, type ExportedWorkflowSurface as b, type KernelContractAllowedDiff as c, type VerifyFullCutoverGateOptions as d, type FullCutoverGateVerificationResult as e, extractManifest as f, diffManifest as g, exportStaticIr as h, exportControlSurface as i, verifyFullCutoverGate as j, verifyKernelContract as v };