@graphrefly/graphrefly 0.38.0 → 0.40.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 (321) hide show
  1. package/dist/budget-gate-CmmVtasH.d.ts +115 -0
  2. package/dist/budget-gate-DiP_nK0n.d.cts +115 -0
  3. package/dist/{cascading-BsJ4GbnS.d.ts → cascading-BNfxffgc.d.ts} +2 -2
  4. package/dist/{cascading-B25wxpRa.d.cts → cascading-Cxs1eztH.d.cts} +2 -2
  5. package/dist/chunk-2BX4NB34.js +3 -0
  6. package/dist/{chunk-6VFC334U.js → chunk-2DMKW2AD.js} +1 -1
  7. package/dist/{chunk-4BDQXBXE.js → chunk-2QXRYP7Q.js} +1 -1
  8. package/dist/chunk-32N3JALT.js +1 -0
  9. package/dist/chunk-35JTVPOX.js +1 -0
  10. package/dist/chunk-3G5U5QNE.js +5 -0
  11. package/dist/{chunk-PHXZRR6C.js → chunk-4I45FVQS.js} +1 -1
  12. package/dist/{chunk-B5S7KTGP.js → chunk-6I726LZU.js} +1 -1
  13. package/dist/{chunk-NV63VQHI.js → chunk-6VWBPSSY.js} +1 -1
  14. package/dist/chunk-6XVD5TZV.js +1 -0
  15. package/dist/chunk-756D5TFD.js +1 -0
  16. package/dist/{chunk-DSOVKKTI.js → chunk-7Q4ZD3YW.js} +1 -1
  17. package/dist/{chunk-TMVY7OWG.js → chunk-B7LCDQEV.js} +1 -1
  18. package/dist/chunk-C72GO4IZ.js +1 -0
  19. package/dist/{chunk-RZ5HKPGI.js → chunk-CKFQS2CJ.js} +1 -1
  20. package/dist/chunk-D27JNOLZ.js +1 -0
  21. package/dist/chunk-ECQRP2UT.js +1 -0
  22. package/dist/{chunk-6773HURD.js → chunk-FHRBBHJN.js} +1 -1
  23. package/dist/{chunk-UVLZX2OU.js → chunk-I2DEVPMU.js} +1 -1
  24. package/dist/chunk-INQFTVZA.js +61 -0
  25. package/dist/{chunk-6KZZ6XQE.js → chunk-J63M5U46.js} +1 -1
  26. package/dist/{chunk-POCWFIJ7.js → chunk-JKBOIJ22.js} +1 -1
  27. package/dist/chunk-K2Z7UENB.js +1 -0
  28. package/dist/chunk-L6NSJVJZ.js +1 -0
  29. package/dist/{chunk-K5C67OGE.js → chunk-LCGAVGGV.js} +2 -2
  30. package/dist/chunk-LYM4PBMV.js +1 -0
  31. package/dist/{chunk-O2BLVQU4.js → chunk-MNZIKXK4.js} +1 -1
  32. package/dist/chunk-N43XM7BM.js +1 -0
  33. package/dist/{chunk-FWGIZP3W.js → chunk-OSZ22J7O.js} +1 -1
  34. package/dist/{chunk-FAYEMS5M.js → chunk-PPUYQ66A.js} +1 -1
  35. package/dist/{chunk-SP5O2MIX.js → chunk-QSK3RRII.js} +1 -1
  36. package/dist/chunk-RZJDIV2G.js +1 -0
  37. package/dist/chunk-SSCGRYJ2.js +1 -0
  38. package/dist/chunk-SVFKHUCW.js +1 -0
  39. package/dist/chunk-TSOYJ743.js +1 -0
  40. package/dist/{chunk-O245YLM5.js → chunk-UWA6D7UF.js} +1 -1
  41. package/dist/chunk-VMF23LGB.js +1 -0
  42. package/dist/chunk-WL6LFPJB.js +1 -0
  43. package/dist/chunk-WUT362QV.js +1 -0
  44. package/dist/chunk-XJLYLLIJ.js +1 -0
  45. package/dist/{chunk-IBGE62GZ.js → chunk-XW4YDF6G.js} +1 -1
  46. package/dist/chunk-YKD7WUYJ.js +43 -0
  47. package/dist/{chunk-7KZZLWZ6.js → chunk-YXDRGKXP.js} +1 -1
  48. package/dist/chunk-Z4F3DOWS.js +84 -0
  49. package/dist/compat/index.cjs +9 -13
  50. package/dist/compat/index.d.cts +16 -16
  51. package/dist/compat/index.d.ts +16 -16
  52. package/dist/compat/index.js +1 -1
  53. package/dist/compat/jotai/index.d.cts +2 -2
  54. package/dist/compat/jotai/index.d.ts +2 -2
  55. package/dist/compat/nanostores/index.d.cts +2 -2
  56. package/dist/compat/nanostores/index.d.ts +2 -2
  57. package/dist/compat/nestjs/index.cjs +7 -11
  58. package/dist/compat/nestjs/index.d.cts +8 -8
  59. package/dist/compat/nestjs/index.d.ts +8 -8
  60. package/dist/compat/nestjs/index.js +1 -1
  61. package/dist/compat/react/index.d.cts +2 -2
  62. package/dist/compat/react/index.d.ts +2 -2
  63. package/dist/compat/solid/index.d.cts +2 -2
  64. package/dist/compat/solid/index.d.ts +2 -2
  65. package/dist/compat/svelte/index.d.cts +2 -2
  66. package/dist/compat/svelte/index.d.ts +2 -2
  67. package/dist/compat/vue/index.d.cts +2 -2
  68. package/dist/compat/vue/index.d.ts +2 -2
  69. package/dist/compat/zustand/index.cjs +3 -7
  70. package/dist/compat/zustand/index.d.cts +4 -4
  71. package/dist/compat/zustand/index.d.ts +4 -4
  72. package/dist/compat/zustand/index.js +1 -1
  73. package/dist/core/index.cjs +1 -1
  74. package/dist/core/index.d.cts +4 -4
  75. package/dist/core/index.d.ts +4 -4
  76. package/dist/core/index.js +1 -1
  77. package/dist/{composite-DTOlDuch.d.ts → decay-BnrlbxSv.d.ts} +39 -3
  78. package/dist/{composite-CgG0MqHm.d.cts → decay-C25AyNAj.d.cts} +39 -3
  79. package/dist/extra/browser.d.cts +1 -1
  80. package/dist/extra/browser.d.ts +1 -1
  81. package/dist/extra/index.cjs +16 -20
  82. package/dist/extra/index.d.cts +11 -9
  83. package/dist/extra/index.d.ts +11 -9
  84. package/dist/extra/index.js +1 -1
  85. package/dist/extra/node.cjs +2 -2
  86. package/dist/extra/node.d.cts +1 -1
  87. package/dist/extra/node.d.ts +1 -1
  88. package/dist/extra/node.js +1 -1
  89. package/dist/extra/operators.cjs +1 -1
  90. package/dist/extra/operators.d.cts +1 -1
  91. package/dist/extra/operators.d.ts +1 -1
  92. package/dist/extra/operators.js +1 -1
  93. package/dist/extra/reactive.cjs +1 -1
  94. package/dist/extra/reactive.d.cts +3 -3
  95. package/dist/extra/reactive.d.ts +3 -3
  96. package/dist/extra/reactive.js +1 -1
  97. package/dist/extra/render/index.cjs +5 -0
  98. package/dist/extra/render/index.d.cts +183 -0
  99. package/dist/extra/render/index.d.ts +183 -0
  100. package/dist/extra/render/index.js +1 -0
  101. package/dist/extra/sources.cjs +1 -1
  102. package/dist/extra/sources.d.cts +1 -1
  103. package/dist/extra/sources.d.ts +1 -1
  104. package/dist/extra/sources.js +1 -1
  105. package/dist/extra/storage-browser.d.cts +1 -1
  106. package/dist/extra/storage-browser.d.ts +1 -1
  107. package/dist/{fallback-axI2cXwt.d.cts → fallback-8JYU8tlT.d.cts} +1 -1
  108. package/dist/{fallback-DuEXfA4F.d.ts → fallback-CMZl39L5.d.ts} +1 -1
  109. package/dist/graph/index.cjs +7 -7
  110. package/dist/graph/index.d.cts +5 -5
  111. package/dist/graph/index.d.ts +5 -5
  112. package/dist/graph/index.js +1 -1
  113. package/dist/{graph-BjW1taJl.d.ts → graph-BkIkog4h.d.ts} +76 -100
  114. package/dist/{graph-CHsVwf9S.d.cts → graph-E6likq7w.d.cts} +76 -100
  115. package/dist/{index-CIcu6fIR.d.ts → index-2n8Eai6M.d.ts} +1 -1
  116. package/dist/{index-BwOsJfLJ.d.ts → index-3k4Gg6-n.d.ts} +3 -3
  117. package/dist/{index-BUFCHvOR.d.ts → index-40ZT4MHj.d.ts} +3 -3
  118. package/dist/index-8s-Qm-gz.d.ts +218 -0
  119. package/dist/index-A3U3CSve.d.cts +113 -0
  120. package/dist/{index-CDvC1m5p.d.ts → index-B2RUoIUz.d.ts} +1 -1
  121. package/dist/{index-Byp771zP.d.ts → index-B6iTqKtJ.d.ts} +2 -2
  122. package/dist/{index-D-B7U42V.d.cts → index-B72TQQHd.d.cts} +2 -2
  123. package/dist/{resilience-Bys63Cpd.d.ts → index-BAQrjuZF.d.ts} +202 -26
  124. package/dist/{index-BiomL7AW.d.ts → index-BJSZxSFX.d.ts} +1 -1
  125. package/dist/index-BQ1fR4li.d.ts +210 -0
  126. package/dist/{index-D7-RSD93.d.cts → index-BTHOTC0Q.d.cts} +4 -4
  127. package/dist/{index-CEVzBWeB.d.ts → index-BaA-xpSw.d.ts} +26 -19
  128. package/dist/{index-CAV-3RpJ.d.cts → index-Bd91Nmf4.d.cts} +4 -4
  129. package/dist/{index-BI1wMfyc.d.ts → index-BgjS2b8N.d.ts} +3 -3
  130. package/dist/{index-Bpr0Pwgl.d.cts → index-BiHUBEKq.d.cts} +3 -3
  131. package/dist/{index-UsU9ptzs.d.cts → index-BilOa6AE.d.cts} +55 -9
  132. package/dist/{index-DJVQ-t07.d.ts → index-BmSQLAZo.d.cts} +41 -48
  133. package/dist/{index-DTDVDzhA.d.ts → index-C-dkXOpB.d.cts} +56 -54
  134. package/dist/{index-B-ORMr3k.d.ts → index-C5cQ7Gfx.d.ts} +4 -4
  135. package/dist/{index-ML6vHKXK.d.ts → index-C6ZUaos7.d.ts} +1 -1
  136. package/dist/{index-Vz7KPfgz.d.ts → index-CAP3UGsq.d.ts} +1 -1
  137. package/dist/{index-BFaALJxR.d.ts → index-CD2dBMet.d.ts} +10 -8
  138. package/dist/index-CGhMJNHb.d.cts +128 -0
  139. package/dist/{index-B3D_z0Z6.d.cts → index-CL7oilfm.d.cts} +1 -1
  140. package/dist/{index-Bn0uZEL4.d.ts → index-CQtWm7jS.d.ts} +9 -9
  141. package/dist/{index-CM-i58FY.d.cts → index-CRm0YIzC.d.cts} +9 -9
  142. package/dist/index-CUIkE1l9.d.cts +230 -0
  143. package/dist/{index-CijfwEWx.d.ts → index-Cczxgd2D.d.ts} +2 -2
  144. package/dist/{index-CAbHN_rP.d.cts → index-CgnCFhr2.d.cts} +1 -1
  145. package/dist/{index-B2IUcH13.d.cts → index-Ck35nA-T.d.ts} +41 -48
  146. package/dist/{index-BpMZzX9P.d.cts → index-Cnr1WrlX.d.cts} +3 -3
  147. package/dist/{index-JYtN9uqM.d.ts → index-CoM4rzyB.d.ts} +1 -1
  148. package/dist/{index-Ckil6miL.d.cts → index-CtFNGe-m.d.cts} +2 -2
  149. package/dist/{index-BjWZARLy.d.ts → index-Ctb7_2sG.d.ts} +1 -1
  150. package/dist/index-CuPUehFa.d.cts +218 -0
  151. package/dist/index-D1Gc7wV5.d.ts +230 -0
  152. package/dist/{index-DqICM_I7.d.ts → index-D1IEZUsj.d.ts} +67 -9
  153. package/dist/{index-BFuVcqL8.d.cts → index-D3ayz3hy.d.cts} +1 -1
  154. package/dist/{index-CQsqqEVz.d.cts → index-D4uimgee.d.cts} +1 -1
  155. package/dist/{resilience-BWP2c7Af.d.cts → index-DGTo1yka.d.cts} +202 -26
  156. package/dist/{index-BmWuVdER.d.ts → index-DH4fm2Ck.d.ts} +2 -2
  157. package/dist/{index-BkQqf1EF.d.cts → index-DJ_MPOJ5.d.cts} +67 -9
  158. package/dist/{index-9xhIaM-w.d.cts → index-DOBLxOti.d.cts} +1 -1
  159. package/dist/{index-BqcgiSQg.d.cts → index-DQQCOIt8.d.cts} +10 -8
  160. package/dist/{index-DJNAWzcH.d.cts → index-DVAlsmEU.d.cts} +26 -19
  161. package/dist/index-DVDapw2k.d.cts +210 -0
  162. package/dist/{index-D_QQ_dTD.d.cts → index-DYTBbF8T.d.cts} +1 -1
  163. package/dist/{index-BgzPO43H.d.cts → index-DgJc8Zgc.d.cts} +6 -6
  164. package/dist/{index-Czk3r0yA.d.cts → index-DhLyOHYZ.d.ts} +56 -54
  165. package/dist/{index-CrlHFsiT.d.ts → index-DhnsQfa3.d.ts} +100 -118
  166. package/dist/{index-Bub6x_D4.d.cts → index-DktLSZOc.d.cts} +37 -90
  167. package/dist/{index-BaSy4L6w.d.cts → index-DpiGqtrs.d.cts} +100 -118
  168. package/dist/{index-D-HZ7sP4.d.ts → index-I1cCY3ZI.d.ts} +6 -6
  169. package/dist/{index-D9vBTuzo.d.ts → index-IUCY0OFN.d.ts} +4 -4
  170. package/dist/{index-DeSsvHDD.d.cts → index-MxYuWOrf.d.cts} +3 -3
  171. package/dist/index-N2MAxt7_.d.ts +128 -0
  172. package/dist/{index-CpZKtdMw.d.cts → index-PgwvGWa1.d.cts} +1 -1
  173. package/dist/{index-AUqWe_fX.d.ts → index-WSlcjhQF.d.ts} +55 -9
  174. package/dist/{index-Di7OdwlO.d.ts → index-bXXLSvor.d.ts} +37 -90
  175. package/dist/index-da2V5vPy.d.ts +113 -0
  176. package/dist/{index-DY2f2b9z.d.ts → index-eaQuGJnv.d.ts} +3 -3
  177. package/dist/{index-BsgxnHN8.d.cts → index-t6L2qpHh.d.cts} +3 -3
  178. package/dist/{index-C-3UXnHT.d.cts → index-tV3AA9hI.d.cts} +2 -2
  179. package/dist/{index-8OxXae3g.d.ts → index-yLt-aPMp.d.ts} +1 -1
  180. package/dist/{index-CqSJ25A9.d.cts → index-z8WFPVI8.d.cts} +1 -1
  181. package/dist/index.cjs +63 -59
  182. package/dist/index.d.cts +48 -47
  183. package/dist/index.d.ts +48 -47
  184. package/dist/index.js +1 -1
  185. package/dist/{meta-DreaEM_a.d.cts → meta-Ct9nqQS5.d.cts} +11 -7
  186. package/dist/{meta-BYqlATmg.d.ts → meta-D8OyedKp.d.ts} +11 -7
  187. package/dist/{node-fSc-hCv8.d.cts → node-BYInONRr.d.cts} +3 -3
  188. package/dist/{node-fSc-hCv8.d.ts → node-BYInONRr.d.ts} +3 -3
  189. package/dist/{observable-Cqty11jG.d.cts → observable-DMIlYJV1.d.cts} +1 -1
  190. package/dist/{observable-EAV_rNfM.d.ts → observable-DO8DDEzv.d.ts} +1 -1
  191. package/dist/patterns/ai/browser.cjs +5 -5
  192. package/dist/patterns/ai/browser.d.cts +4 -4
  193. package/dist/patterns/ai/browser.d.ts +4 -4
  194. package/dist/patterns/ai/browser.js +1 -1
  195. package/dist/patterns/ai/index.cjs +16 -20
  196. package/dist/patterns/ai/index.d.cts +17 -17
  197. package/dist/patterns/ai/index.d.ts +17 -17
  198. package/dist/patterns/ai/index.js +1 -1
  199. package/dist/patterns/ai/node.cjs +1 -1
  200. package/dist/patterns/ai/node.d.cts +4 -4
  201. package/dist/patterns/ai/node.d.ts +4 -4
  202. package/dist/patterns/ai/node.js +1 -1
  203. package/dist/patterns/audit/index.cjs +3 -7
  204. package/dist/patterns/audit/index.d.cts +6 -6
  205. package/dist/patterns/audit/index.d.ts +6 -6
  206. package/dist/patterns/audit/index.js +1 -1
  207. package/dist/patterns/cqrs/index.cjs +3 -7
  208. package/dist/patterns/cqrs/index.d.cts +6 -6
  209. package/dist/patterns/cqrs/index.d.ts +6 -6
  210. package/dist/patterns/cqrs/index.js +1 -1
  211. package/dist/patterns/demo-shell/index.cjs +5 -8
  212. package/dist/patterns/demo-shell/index.d.cts +5 -5
  213. package/dist/patterns/demo-shell/index.d.ts +5 -5
  214. package/dist/patterns/demo-shell/index.js +1 -1
  215. package/dist/patterns/domain-templates/index.cjs +3 -7
  216. package/dist/patterns/domain-templates/index.d.cts +4 -4
  217. package/dist/patterns/domain-templates/index.d.ts +4 -4
  218. package/dist/patterns/domain-templates/index.js +1 -1
  219. package/dist/patterns/graphspec/index.cjs +37 -37
  220. package/dist/patterns/graphspec/index.d.cts +5 -5
  221. package/dist/patterns/graphspec/index.d.ts +5 -5
  222. package/dist/patterns/graphspec/index.js +1 -1
  223. package/dist/patterns/guarded-execution/index.cjs +3 -7
  224. package/dist/patterns/guarded-execution/index.d.cts +7 -7
  225. package/dist/patterns/guarded-execution/index.d.ts +7 -7
  226. package/dist/patterns/guarded-execution/index.js +1 -1
  227. package/dist/patterns/harness/index.cjs +8 -12
  228. package/dist/patterns/harness/index.d.cts +12 -12
  229. package/dist/patterns/harness/index.d.ts +12 -12
  230. package/dist/patterns/harness/index.js +1 -1
  231. package/dist/patterns/job-queue/index.cjs +3 -7
  232. package/dist/patterns/job-queue/index.d.cts +6 -6
  233. package/dist/patterns/job-queue/index.d.ts +6 -6
  234. package/dist/patterns/job-queue/index.js +1 -1
  235. package/dist/patterns/lens/index.cjs +3 -7
  236. package/dist/patterns/lens/index.d.cts +5 -6
  237. package/dist/patterns/lens/index.d.ts +5 -6
  238. package/dist/patterns/lens/index.js +1 -1
  239. package/dist/patterns/memory/index.cjs +3 -7
  240. package/dist/patterns/memory/index.d.cts +6 -6
  241. package/dist/patterns/memory/index.d.ts +6 -6
  242. package/dist/patterns/memory/index.js +1 -1
  243. package/dist/patterns/messaging/index.cjs +3 -7
  244. package/dist/patterns/messaging/index.d.cts +5 -5
  245. package/dist/patterns/messaging/index.d.ts +5 -5
  246. package/dist/patterns/messaging/index.js +1 -1
  247. package/dist/patterns/orchestration/index.cjs +3 -7
  248. package/dist/patterns/orchestration/index.d.cts +8 -8
  249. package/dist/patterns/orchestration/index.d.ts +8 -8
  250. package/dist/patterns/orchestration/index.js +1 -1
  251. package/dist/patterns/process/index.cjs +1 -1
  252. package/dist/patterns/process/index.d.cts +7 -7
  253. package/dist/patterns/process/index.d.ts +7 -7
  254. package/dist/patterns/process/index.js +1 -1
  255. package/dist/patterns/reactive-layout/index.cjs +4 -8
  256. package/dist/patterns/reactive-layout/index.d.cts +5 -5
  257. package/dist/patterns/reactive-layout/index.d.ts +5 -5
  258. package/dist/patterns/reactive-layout/index.js +1 -1
  259. package/dist/patterns/reduction/index.cjs +3 -7
  260. package/dist/patterns/reduction/index.d.cts +4 -4
  261. package/dist/patterns/reduction/index.d.ts +4 -4
  262. package/dist/patterns/reduction/index.js +1 -1
  263. package/dist/patterns/refine-loop/index.cjs +5 -9
  264. package/dist/patterns/refine-loop/index.d.cts +6 -6
  265. package/dist/patterns/refine-loop/index.d.ts +6 -6
  266. package/dist/patterns/refine-loop/index.js +1 -1
  267. package/dist/patterns/resilient-pipeline/index.cjs +3 -1
  268. package/dist/patterns/resilient-pipeline/index.d.cts +6 -6
  269. package/dist/patterns/resilient-pipeline/index.d.ts +6 -6
  270. package/dist/patterns/resilient-pipeline/index.js +1 -1
  271. package/dist/patterns/surface/index.cjs +12 -16
  272. package/dist/patterns/surface/index.d.cts +6 -6
  273. package/dist/patterns/surface/index.d.ts +6 -6
  274. package/dist/patterns/surface/index.js +1 -1
  275. package/dist/{pipeline-graph-9JBbmRxA.d.ts → pipeline-graph-CB4La-UW.d.ts} +34 -17
  276. package/dist/{pipeline-graph-DuHpXSOn.d.cts → pipeline-graph-MWrQZXCq.d.cts} +34 -17
  277. package/dist/{reactive-layout-BMLDB4Vd.d.cts → reactive-layout-BtZfUKuL.d.cts} +2 -2
  278. package/dist/{reactive-layout-D-tRiNhg.d.ts → reactive-layout-KJj4E2dT.d.ts} +2 -2
  279. package/dist/{reactive-log-BgWSA1fg.d.ts → reactive-log-BlAsPLl2.d.ts} +2 -2
  280. package/dist/{reactive-log-C3IMAGpT.d.cts → reactive-log-_zeEnB9H.d.cts} +2 -2
  281. package/dist/{reactive-map-DmgeADH8.d.cts → reactive-map-6P_k3AQM.d.cts} +2 -2
  282. package/dist/{reactive-map-CHyeCf4D.d.ts → reactive-map-CjXByDV-.d.ts} +2 -2
  283. package/dist/resilience-S33JV6XC.js +1 -0
  284. package/dist/{sugar-D13E2M_z.d.ts → sugar-BhfjgetH.d.ts} +1 -1
  285. package/dist/{sugar-DgaGJcI6.d.cts → sugar-DzePN5-g.d.cts} +1 -1
  286. package/dist/{topology-tree-jrZue3ao.d.cts → topology-tree-3LBKFsUo.d.cts} +1 -1
  287. package/dist/{topology-tree-D47-nI6Z.d.ts → topology-tree-mF7Emqzm.d.ts} +1 -1
  288. package/dist/{types-BMSGPlpO.d.cts → types-1Dhoi7HM.d.cts} +1 -1
  289. package/dist/{types-CidcBDuk.d.ts → types-39jk0kaV.d.ts} +1 -1
  290. package/package.json +11 -1
  291. package/dist/chunk-2YFDSYEF.js +0 -1
  292. package/dist/chunk-5BGFS2XH.js +0 -1
  293. package/dist/chunk-CMTN3KPT.js +0 -80
  294. package/dist/chunk-DQJLC6YY.js +0 -1
  295. package/dist/chunk-G7JN6LCB.js +0 -1
  296. package/dist/chunk-KJEAIIIY.js +0 -43
  297. package/dist/chunk-LV3ACS5J.js +0 -1
  298. package/dist/chunk-NBGPXQSP.js +0 -1
  299. package/dist/chunk-NN3QPJ6U.js +0 -1
  300. package/dist/chunk-NSAZ6PR6.js +0 -1
  301. package/dist/chunk-O32GJOUJ.js +0 -1
  302. package/dist/chunk-QEVSIVSF.js +0 -1
  303. package/dist/chunk-QMC2PLNM.js +0 -7
  304. package/dist/chunk-QOJFR6GS.js +0 -1
  305. package/dist/chunk-SFK7MN7S.js +0 -1
  306. package/dist/chunk-TB7JKSVS.js +0 -61
  307. package/dist/chunk-UAXFKMAG.js +0 -1
  308. package/dist/chunk-XIMFHEKV.js +0 -1
  309. package/dist/chunk-XLMYQB6F.js +0 -1
  310. package/dist/chunk-XLYF4LBH.js +0 -1
  311. package/dist/imperative-audit-ahAE65a9.d.cts +0 -28
  312. package/dist/imperative-audit-ahAE65a9.d.ts +0 -28
  313. package/dist/index-5dNRlW7J.d.ts +0 -135
  314. package/dist/index-BWUMIt7J.d.cts +0 -135
  315. package/dist/index-BhzwpIJc.d.cts +0 -105
  316. package/dist/index-BsZk9T8y.d.ts +0 -105
  317. package/dist/index-C56XZiDe.d.cts +0 -163
  318. package/dist/index-CpdnP-0y.d.cts +0 -186
  319. package/dist/index-DKrIuF-r.d.ts +0 -163
  320. package/dist/index-DOU1Ee_k.d.ts +0 -186
  321. package/dist/resilience-LGBK236C.js +0 -1
@@ -1 +0,0 @@
1
- import{b as F,c as G}from"./chunk-O32GJOUJ.js";import{k as _}from"./chunk-QMC2PLNM.js";import{t as B}from"./chunk-6773HURD.js";import{b as $}from"./chunk-TZQPPQEQ.js";import{C as N}from"./chunk-RZ5HKPGI.js";import{D as x,E as I,G as S,H as M,m as A}from"./chunk-LYCLF26R.js";import{b as k,c as v,d as y,f as T,g as O,i as E,j as w}from"./chunk-CK2E7BTU.js";import{b as K}from"./chunk-QYADASLV.js";var U={};K(U,{budgetGate:()=>C,effectivenessTracker:()=>L,feedback:()=>V,funnel:()=>P,scorer:()=>z});function R(u,t){return G("reduction",u,t)}function P(u,t,i,b){if(t.length===0)throw new RangeError("funnel requires at least one source");if(i.length===0)throw new RangeError("funnel requires at least one stage");let d=new _(u,b),s=t.length===1?t[0]:B(...t);d.add(s,{name:"merged"});let e="merged";for(let f=0;f<i.length;f++){let o=i[f],c=new _(o.name);o.build(c);try{c.resolve("input")}catch{throw new Error(`funnel stage "${o.name}" must define an "input" node`)}try{c.resolve("output")}catch{throw new Error(`funnel stage "${o.name}" must define an "output" node`)}d.mount(o.name,c);let l=d.resolve(e),m=`${o.name}::input`,g=d.resolve(m),a=`__bridge_${e}\u2192${o.name}_input`,p=M([l],([r])=>{g.emit(r)},{name:a});d.add(p,{name:a}),d.addDisposer(N(p)),e=`${o.name}::output`}return d}function V(u,t,i,b){let d=b?.maxIterations??10,s=`__feedback_${t}`,e=I(0,{meta:R("feedback_counter",{maxIterations:d,feedbackFrom:t,feedbackTo:i})});u.add(e,{name:s});let f=u.resolve(t),o=u.resolve(i),c=`__feedback_effect_${t}`,l=x([],(m,g)=>{let a=f.subscribe(p=>{for(let r of p){let n=r[0];if(n===k){let h=r[1];if(h==null)return;A(()=>{F(e,d)&&o.emit(h)})}else if(n===E||n===w){let h=n===w&&r.length>1?[w,r[1]]:[n];e.down([h])}}});return()=>a()},{name:c,describeKind:"effect",meta:{...R("feedback_effect",{feedbackFrom:t,feedbackTo:i}),_internal:!0}});return u.add(l,{name:c}),u.addDisposer(N(l)),u}function C(u,t,i){if(t.length===0)throw new RangeError("budgetGate requires at least one constraint");let b=t.map(a=>a.node),d=[u,...b],s=[],e=!1,f=!1,o=Symbol("budget-gate"),c=new Array(t.length);function l(){return t.every((a,p)=>a.check(c[p]))}function m(a){for(;s.length>0&&l();){let p=s[0];s=s.slice(1),a.emit(p)}s.length===0&&f&&(f=!1,a.down([[y]]))}return x([],(a,p)=>{for(let n=0;n<t.length;n++)c[n]=t[n].node.cache;let r=[];for(let n=0;n<d.length;n++){let h=d[n];r.push(h.subscribe(q=>{for(let D of q)g(D,n,p)}))}return()=>{for(let n of r)n()}},{...i,describeKind:"derived",meta:R("budget_gate",i?.meta)});function g(a,p,r){let n=a[0];if(p===0){if(n===k)return l()&&s.length===0?r.emit(a[1]):(s.push(a[1]),e||(e=!0,r.up([[T,o]]))),!0;if(n===v)return r.down([[v]]),!0;if(n===y)return s.length===0?r.down([[y]]):f=!0,!0;if(n===E||n===w){for(let h of s)r.emit(h);return s=[],f=!1,e&&(e=!1,r.up([[O,o]])),r.down([a]),!0}return!1}return n===k&&(c[p-1]=a[1]),n===k||n===y?(l()&&s.length>0?(m(r),s.length===0&&e&&(e=!1,r.up([[O,o]]))):!l()&&!e&&s.length>0&&(e=!0,r.up([[T,o]])),!0):n===v?!0:n===w?(r.down([a]),!0):n===E}}function z(u,t,i){if(u.length===0)throw new RangeError("scorer requires at least one source");if(u.length!==t.length)throw new RangeError("scorer requires the same number of sources and weights");let b=[...u,...t],d=u.length,s=i?.scoreFns;return S(b,e=>{let f=e.slice(0,d),o=e.slice(d),c=[],l=0;for(let m=0;m<d;m++){let g=f[m]??0,a=o[m]??0,r=(s?.[m]?s[m](g):g)*a;c.push(r),l+=r}return{value:f,score:l,breakdown:c}},{...i?{equals:i.equals,resubscribable:i.resubscribable,resetOnTeardown:i.resetOnTeardown}:{},describeKind:"derived",meta:R("scorer",i?.meta)})}function L(u){let t=$({name:u?.name??"effectiveness-entries"}),i=S([t.entries],([e])=>new Map(e),{name:`${u?.name??"effectiveness"}-snapshot`,equals:(e,f)=>{let o=e,c=f;if(o.size!==c.size)return!1;for(let[l,m]of o){let g=c.get(l);if(!g||m.attempts!==g.attempts||m.successes!==g.successes)return!1}return!0}});function b(e,f){let o=t.get(e),c=(o?.attempts??0)+1,l=(o?.successes??0)+(f?1:0);t.set(e,{key:e,attempts:c,successes:l,successRate:l/c})}function d(e){return t.get(e)}let s=N(i);return{node:i,record:b,lookup:d,dispose:()=>s()}}export{P as a,V as b,C as c,z as d,L as e,U as f};
@@ -1 +0,0 @@
1
- import{a as $}from"./chunk-6KZZ6XQE.js";import{c as O}from"./chunk-O32GJOUJ.js";import{a as C}from"./chunk-NSAZ6PR6.js";import{k as A}from"./chunk-QMC2PLNM.js";import{b as x}from"./chunk-7KZZLWZ6.js";import{C as R}from"./chunk-RZ5HKPGI.js";import{C as T,E as N,G as E,o as b,p as w,u as P,w as S}from"./chunk-LYCLF26R.js";import{b as v}from"./chunk-CK2E7BTU.js";import{b as M}from"./chunk-QYADASLV.js";var J={};M(J,{AuditTrailGraph:()=>k,PolicyEnforcerGraph:()=>G,auditTrail:()=>z,complianceSnapshot:()=>F,policyEnforcer:()=>K,reactiveExplainPath:()=>q});function V(i,t){return O("audit",i,t)}var L=new Set(["data","error","complete","teardown"]),k=class extends A{entries;count;_log;_target;constructor(t,n){super(n.name??`${t.name}_audit`,n.graph),this._target=t,this._log=x([],{name:"entries",...n.maxSize!=null?{maxSize:n.maxSize}:{}}),this.entries=this._log.entries,this.add(this.entries,{name:"entries"}),this.count=E([this.entries],([c])=>c.length,{name:"count",describeKind:"derived",meta:V("count")}),this.add(this.count,{name:"count"}),this.addDisposer(R(this.count));let o=n.includeTypes!=null?new Set(n.includeTypes):L,u=n.filter,a=0,h=t.observe({timeline:!0,structured:!0}),m=h.onEvent(c=>{if(c.type==="derived")return;let e=c.type;if(!o.has(e))return;let d=c.path??"",r={seq:a++,timestamp_ns:c.timestamp_ns??b(),wall_clock_ns:w(),path:d,type:e},f=(d?D(t,d):void 0)?.lastMutation;f!=null&&(r.actor=f.actor),e==="data"&&(r.value=c.data),e==="error"&&(r.error=c.data);let l=d?U(t,d):void 0;l!=null&&(r.annotation=l),!(u!=null&&!u(r))&&this._log.append(r)});this.addDisposer(()=>{m(),h.dispose()}),this.addDisposer(()=>this._log.disposeAllViews())}all(){return this.entries.cache??[]}byNode(t){return this.all().filter(n=>n.path===t)}byActor(t){return this.all().filter(n=>n.actor?.id===t)}byActorType(t){return this.all().filter(n=>n.actor?.type===t)}byTimeRange(t,n){return this.all().filter(o=>!(o.timestamp_ns<t||n!=null&&o.timestamp_ns>=n))}get target(){return this._target}};function z(i,t={}){return new k(i,t)}var G=class extends A{policies;violations;violationCount;_target;_mode;_currentGuard;constructor(t,n,o){super(o.name??`${t.name}_policy`,o.graph),this._target=t,this._mode=o.mode??"audit";let u=I(n)?n:N(n,{name:"policies"});this.policies=u,this.add(this.policies,{name:"policies"}),this.violations=new $("violations",{retainedLimit:o.violationsLimit??1e3}),this.mount("violations",this.violations),this.violationCount=E([this.violations.events],([e])=>e.length,{name:"violationCount",describeKind:"derived",meta:V("policy_violation_count")}),this.add(this.violationCount,{name:"violationCount"}),this.addDisposer(R(this.violationCount));let h=u.cache??[];this._currentGuard=P(h);let m=u.subscribe(e=>{for(let d of e)d[0]===v&&(h=d[1]??[],this._currentGuard=P(h))});this.addDisposer(m);let c=o.paths!=null?[...o.paths]:j(t);if(this._mode==="enforce"){let e=new Map,d=r=>{if(e.has(r))return;let s=D(t,r);if(!(s instanceof T))return;let f=(l,p)=>{let y=this._currentGuard(l,p);return y||this._publishViolation(l,p,r,"blocked"),y};e.set(r,s._pushGuard(f))};for(let r of c)d(r);if(o.paths==null){let r=C(t,(s,f,l)=>{if(s.kind==="added")if(s.nodeKind==="node")d(`${l}${s.name}`);else{let p=f._mounts.get(s.name);if(!(p instanceof A))return;let y=`${l}${s.name}::`,_=j(p);for(let g of _)d(g===""?`${l}${s.name}`:`${y}${g}`)}else if(s.kind==="removed")if(s.nodeKind==="node"){let p=`${l}${s.name}`,y=e.get(p);y!=null&&(y(),e.delete(p))}else{let p=`${l}${s.name}`,y=`${p}::`;for(let[_,g]of e)(_===p||_.startsWith(y))&&(g(),e.delete(_))}});this.addDisposer(r)}else{let r=t.topology.subscribe(s=>{for(let f of s){if(f[0]!==v)continue;let l=f[1];if(l.kind!=="removed"||l.nodeKind!=="node")continue;let p=e.get(l.name);p!=null&&(p(),e.delete(l.name))}});this.addDisposer(r)}this.addDisposer(()=>{for(let r of e.values())r();e.clear()})}else{let e=t.observe({timeline:!0,structured:!0}),d=e.onEvent(r=>{if(r.type!=="data"&&r.type!=="error")return;let s=r.path??"";if(!s||o.paths!=null&&!o.paths.includes(s))return;let f=r.actor??D(t,s)?.lastMutation?.actor;if(f==null)return;let l="write";this._currentGuard(f,l)||this._publishViolation(f,l,s,"observed")});this.addDisposer(()=>{d(),e.dispose()})}}_publishViolation(t,n,o,u){this.violations.publish({timestamp_ns:b(),wall_clock_ns:w(),path:o,actor:t,action:n,mode:this._mode,result:u})}all(){return this.violations.retained()}get mode(){return this._mode}get target(){return this._target}};function K(i,t,n={}){return new G(i,t,n)}function q(i,t,n,o){return i.explain(t,n,{reactive:!0,...o})}function F(i,t={}){let n={format_version:1,timestamp_ns:b(),wall_clock_ns:w(),graph:i.snapshot()};if(t.actor!=null&&(n.actor=t.actor),t.audit!=null){let u=[...t.audit.all()];n.audit={count:u.length,entries:u}}if(t.policies!=null){let u=t.policies.policies.cache??[];n.policies={mode:t.policies.mode,rules:u,violations:[...t.policies.all()]}}let o=B(n);return{...n,fingerprint:o}}function I(i){return typeof i=="object"&&i!==null&&"subscribe"in i}function D(i,t){try{return i.node(t)}catch{return}}function U(i,t){try{return i.annotation(t)}catch{return}}function j(i){let t=i.describe({detail:"minimal"});return Object.keys(t.nodes)}function B(i){return S(JSON.stringify(H(i)))}function H(i){let t=new Set,n=o=>{if(o===void 0)return{__undefined:!0};if(o===null)return null;let u=typeof o;if(u==="bigint")return{__bigint:o.toString()};if(u!=="object")return o;let a=o;if(t.has(a))return{__circular:!0};t.add(a);try{if(Array.isArray(a))return a.map(n);if(a instanceof Date)return{__date:a.toISOString()};if(a instanceof RegExp)return{__regexp:{source:a.source,flags:a.flags}};if(a instanceof Map)return{__map:[...a.entries()].map(([c,e])=>[n(c),n(e)])};if(a instanceof Set)return{__set:[...a].map(n)};if(ArrayBuffer.isView(a)){let m=a,c=new Array(m.length);for(let e=0;e<m.length;e++)c[e]=m[e]??0;return{__typed_array:{ctor:a.constructor.name,data:c}}}let h={};for(let m of Object.keys(a).sort())h[m]=n(a[m]);return h}finally{t.delete(a)}};return n(i)}export{k as a,z as b,G as c,K as d,q as e,F as f,J as g};
@@ -1,28 +0,0 @@
1
- /**
2
- * Imperative-controller-with-audit helper layer (Audit 2 — locked 2026-04-24).
3
- *
4
- * Five Phase-4 primitives share the same shape: imperative mutation methods +
5
- * closure state + reactive audit log + freeze-at-entry + rollback-on-throw.
6
- * This module factors out the common machinery so each primitive becomes
7
- * declarative wiring over typed audit records:
8
- * - `gate`, `pipeline.gate` (Wave A.2 Unit 8)
9
- * - `JobQueueGraph` (Wave B.3 Unit 15)
10
- * - `CqrsGraph.dispatch` (Wave C.2 Unit 20)
11
- * - `CqrsGraph.saga` (Wave C.3 Unit 22)
12
- * - `processManager` (Wave 7) [out of scope this commit]
13
- *
14
- * @internal — exposed for primitive impls only; not re-exported through any
15
- * patterns/<x>/index.ts barrel.
16
- */
17
-
18
- /** Shared base shape for every audit record. Per-primitive types extend this. */
19
- interface BaseAuditRecord {
20
- readonly t_ns: number;
21
- readonly seq?: number;
22
- readonly handlerVersion?: {
23
- id: string;
24
- version: string | number;
25
- };
26
- }
27
-
28
- export type { BaseAuditRecord as B };
@@ -1,28 +0,0 @@
1
- /**
2
- * Imperative-controller-with-audit helper layer (Audit 2 — locked 2026-04-24).
3
- *
4
- * Five Phase-4 primitives share the same shape: imperative mutation methods +
5
- * closure state + reactive audit log + freeze-at-entry + rollback-on-throw.
6
- * This module factors out the common machinery so each primitive becomes
7
- * declarative wiring over typed audit records:
8
- * - `gate`, `pipeline.gate` (Wave A.2 Unit 8)
9
- * - `JobQueueGraph` (Wave B.3 Unit 15)
10
- * - `CqrsGraph.dispatch` (Wave C.2 Unit 20)
11
- * - `CqrsGraph.saga` (Wave C.3 Unit 22)
12
- * - `processManager` (Wave 7) [out of scope this commit]
13
- *
14
- * @internal — exposed for primitive impls only; not re-exported through any
15
- * patterns/<x>/index.ts barrel.
16
- */
17
-
18
- /** Shared base shape for every audit record. Per-primitive types extend this. */
19
- interface BaseAuditRecord {
20
- readonly t_ns: number;
21
- readonly seq?: number;
22
- readonly handlerVersion?: {
23
- id: string;
24
- version: string | number;
25
- };
26
- }
27
-
28
- export type { BaseAuditRecord as B };
@@ -1,135 +0,0 @@
1
- import { P as PolicyRuleData, a as Node, A as Actor } from './node-fSc-hCv8.js';
2
- import { G as Graph, a as GraphOptions, c as GraphDescribeOptions, d as GraphDescribeOutput, D as DescribeFilter } from './graph-BjW1taJl.js';
3
- import { P as PolicyEnforcerGraph, a as PolicyViolation } from './index-DJVQ-t07.js';
4
- import { T as TopicGraph } from './index-BUFCHvOR.js';
5
-
6
- /**
7
- * Composable safety layer (roadmap §9.0b).
8
- *
9
- * {@link guardedExecution} wraps any {@link Graph} with:
10
- *
11
- * - {@link policyEnforcer} — reactive ABAC, policies stored as a `Node` so
12
- * LLMs / humans can update them at runtime. Now with full transitive
13
- * dynamic coverage via `watchTopologyTree`.
14
- * - Scoped {@link GuardedExecutionGraph.scopedDescribe} — delegates to
15
- * `target.describe({actor})` so callers see only what the actor is
16
- * allowed to see.
17
- * - The enforcer's `violations` topic is republished as `violations` on
18
- * the wrapper, composable with {@link graphLens}.`health` alerts.
19
- *
20
- * V1 scope: policies + actor + scoped describe. Budget-as-option is NOT
21
- * in V1 — it requires a cost-tracking design that hasn't landed yet.
22
- * Callers who need a budget limit today append a budget-aware
23
- * {@link PolicyRuleData} to the policies list (check current cost and
24
- * `deny` when exhausted).
25
- *
26
- * @module
27
- */
28
-
29
- /** Options for {@link guardedExecution}. */
30
- interface GuardedExecutionOptions {
31
- /**
32
- * Policies enforced against every guarded write. Static list or a live
33
- * `Node<readonly PolicyRuleData[]>` (LLM-updatable).
34
- *
35
- * **Deny-by-default gotcha:** the underlying `policyFromRules()` denies any
36
- * action that matches no rule. An empty policies list in `mode: "enforce"`
37
- * therefore blocks EVERY write AND every `observe` through the stacked
38
- * guard — including `scopedDescribe()`. If you want a permissive base, add
39
- * at least `{ effect: "allow", action: "*" }` and layer deny rules on top.
40
- * In `mode: "audit"` no guards are stacked, so empty policies are safe.
41
- */
42
- policies: readonly PolicyRuleData[] | Node<readonly PolicyRuleData[]>;
43
- /**
44
- * Actor whose perspective drives {@link GuardedExecutionGraph.scopedDescribe}
45
- * and {@link GuardedExecutionGraph.describe} — when omitted, callers must
46
- * pass `{actor}` explicitly or they get the target's raw describe.
47
- */
48
- actor?: Actor;
49
- /**
50
- * `"enforce"` (default) — push guards onto target nodes so disallowed
51
- * writes throw {@link GuardDenied}.
52
- * `"audit"` — record would-be denials to the `violations` topic without
53
- * blocking writes.
54
- */
55
- mode?: "audit" | "enforce";
56
- /** Ring-buffer cap for the `violations` topic. Default 1000 (inherited from policyEnforcer). */
57
- violationsLimit?: number;
58
- /** Wrapper graph name. Default `${target.name}_guarded`. */
59
- name?: string;
60
- /** Wrapper graph options. */
61
- graph?: GraphOptions;
62
- }
63
- /**
64
- * Wrapper over a target {@link Graph} providing reactive ABAC + scoped
65
- * describe. Mounts a {@link PolicyEnforcerGraph} under `enforcer`.
66
- *
67
- * @category patterns
68
- */
69
- declare class GuardedExecutionGraph extends Graph {
70
- readonly enforcer: PolicyEnforcerGraph;
71
- readonly violations: TopicGraph<PolicyViolation>;
72
- private readonly _target;
73
- private readonly _defaultActor;
74
- constructor(target: Graph, opts: GuardedExecutionOptions);
75
- /**
76
- * Describe the **target** graph scoped to the configured actor. Returns
77
- * only nodes the actor is permitted to see (via the target's node guards
78
- * filtering `describe()` via `actor`).
79
- *
80
- * Pass `{actor}` in opts to override the configured actor for this call.
81
- * Pass any standard {@link GraphDescribeOptions} fields (`detail`,
82
- * `fields`, `filter`) — they apply to the target's describe.
83
- *
84
- * **Mode interaction:**
85
- * - In `mode: "enforce"` (default), the enforcer stacks a policy-derived
86
- * guard on every target node. `scopedDescribe({actor})` then filters by
87
- * the AND of per-node guards AND the stacked policy guard.
88
- * - In `mode: "audit"`, NO guards are stacked — `scopedDescribe` filters
89
- * purely by the target's pre-existing per-node guards. If a target has
90
- * no node-level guards, the policy rules you pass have no effect on
91
- * visibility (they only populate the `violations` topic on writes).
92
- */
93
- scopedDescribe(opts?: Omit<GraphDescribeOptions, "actor"> & {
94
- actor?: Actor;
95
- }): GraphDescribeOutput;
96
- /** The wrapped graph (escape hatch for tooling). */
97
- get target(): Graph;
98
- }
99
- /**
100
- * Wrap a {@link Graph} with {@link policyEnforcer} plus a scoped describe
101
- * lens. Returns a {@link GuardedExecutionGraph} that can be mounted, diffed,
102
- * or composed with {@link graphLens}.
103
- *
104
- * @param target - The graph to guard.
105
- * @param opts - See {@link GuardedExecutionOptions}.
106
- *
107
- * @example
108
- * ```ts
109
- * const guarded = guardedExecution(app, {
110
- * actor: { type: "human", id: "alice" },
111
- * policies: [
112
- * { effect: "allow", action: "read", actorType: "human" },
113
- * { effect: "deny", action: "write", pathPattern: "system::*" },
114
- * ],
115
- * mode: "enforce",
116
- * });
117
- *
118
- * const view = guarded.scopedDescribe({ detail: "standard" });
119
- * guarded.violations.events.subscribe(msgs => console.log("violations:", msgs));
120
- * ```
121
- *
122
- * @category patterns
123
- */
124
- declare function guardedExecution(target: Graph, opts: GuardedExecutionOptions): GuardedExecutionGraph;
125
-
126
- declare const index_DescribeFilter: typeof DescribeFilter;
127
- type index_GuardedExecutionGraph = GuardedExecutionGraph;
128
- declare const index_GuardedExecutionGraph: typeof GuardedExecutionGraph;
129
- type index_GuardedExecutionOptions = GuardedExecutionOptions;
130
- declare const index_guardedExecution: typeof guardedExecution;
131
- declare namespace index {
132
- export { index_DescribeFilter as DescribeFilter, index_GuardedExecutionGraph as GuardedExecutionGraph, type index_GuardedExecutionOptions as GuardedExecutionOptions, index_guardedExecution as guardedExecution };
133
- }
134
-
135
- export { GuardedExecutionGraph as G, type GuardedExecutionOptions as a, guardedExecution as g, index as i };
@@ -1,135 +0,0 @@
1
- import { P as PolicyRuleData, a as Node, A as Actor } from './node-fSc-hCv8.cjs';
2
- import { G as Graph, a as GraphOptions, c as GraphDescribeOptions, d as GraphDescribeOutput, D as DescribeFilter } from './graph-CHsVwf9S.cjs';
3
- import { P as PolicyEnforcerGraph, a as PolicyViolation } from './index-B2IUcH13.cjs';
4
- import { T as TopicGraph } from './index-BpMZzX9P.cjs';
5
-
6
- /**
7
- * Composable safety layer (roadmap §9.0b).
8
- *
9
- * {@link guardedExecution} wraps any {@link Graph} with:
10
- *
11
- * - {@link policyEnforcer} — reactive ABAC, policies stored as a `Node` so
12
- * LLMs / humans can update them at runtime. Now with full transitive
13
- * dynamic coverage via `watchTopologyTree`.
14
- * - Scoped {@link GuardedExecutionGraph.scopedDescribe} — delegates to
15
- * `target.describe({actor})` so callers see only what the actor is
16
- * allowed to see.
17
- * - The enforcer's `violations` topic is republished as `violations` on
18
- * the wrapper, composable with {@link graphLens}.`health` alerts.
19
- *
20
- * V1 scope: policies + actor + scoped describe. Budget-as-option is NOT
21
- * in V1 — it requires a cost-tracking design that hasn't landed yet.
22
- * Callers who need a budget limit today append a budget-aware
23
- * {@link PolicyRuleData} to the policies list (check current cost and
24
- * `deny` when exhausted).
25
- *
26
- * @module
27
- */
28
-
29
- /** Options for {@link guardedExecution}. */
30
- interface GuardedExecutionOptions {
31
- /**
32
- * Policies enforced against every guarded write. Static list or a live
33
- * `Node<readonly PolicyRuleData[]>` (LLM-updatable).
34
- *
35
- * **Deny-by-default gotcha:** the underlying `policyFromRules()` denies any
36
- * action that matches no rule. An empty policies list in `mode: "enforce"`
37
- * therefore blocks EVERY write AND every `observe` through the stacked
38
- * guard — including `scopedDescribe()`. If you want a permissive base, add
39
- * at least `{ effect: "allow", action: "*" }` and layer deny rules on top.
40
- * In `mode: "audit"` no guards are stacked, so empty policies are safe.
41
- */
42
- policies: readonly PolicyRuleData[] | Node<readonly PolicyRuleData[]>;
43
- /**
44
- * Actor whose perspective drives {@link GuardedExecutionGraph.scopedDescribe}
45
- * and {@link GuardedExecutionGraph.describe} — when omitted, callers must
46
- * pass `{actor}` explicitly or they get the target's raw describe.
47
- */
48
- actor?: Actor;
49
- /**
50
- * `"enforce"` (default) — push guards onto target nodes so disallowed
51
- * writes throw {@link GuardDenied}.
52
- * `"audit"` — record would-be denials to the `violations` topic without
53
- * blocking writes.
54
- */
55
- mode?: "audit" | "enforce";
56
- /** Ring-buffer cap for the `violations` topic. Default 1000 (inherited from policyEnforcer). */
57
- violationsLimit?: number;
58
- /** Wrapper graph name. Default `${target.name}_guarded`. */
59
- name?: string;
60
- /** Wrapper graph options. */
61
- graph?: GraphOptions;
62
- }
63
- /**
64
- * Wrapper over a target {@link Graph} providing reactive ABAC + scoped
65
- * describe. Mounts a {@link PolicyEnforcerGraph} under `enforcer`.
66
- *
67
- * @category patterns
68
- */
69
- declare class GuardedExecutionGraph extends Graph {
70
- readonly enforcer: PolicyEnforcerGraph;
71
- readonly violations: TopicGraph<PolicyViolation>;
72
- private readonly _target;
73
- private readonly _defaultActor;
74
- constructor(target: Graph, opts: GuardedExecutionOptions);
75
- /**
76
- * Describe the **target** graph scoped to the configured actor. Returns
77
- * only nodes the actor is permitted to see (via the target's node guards
78
- * filtering `describe()` via `actor`).
79
- *
80
- * Pass `{actor}` in opts to override the configured actor for this call.
81
- * Pass any standard {@link GraphDescribeOptions} fields (`detail`,
82
- * `fields`, `filter`) — they apply to the target's describe.
83
- *
84
- * **Mode interaction:**
85
- * - In `mode: "enforce"` (default), the enforcer stacks a policy-derived
86
- * guard on every target node. `scopedDescribe({actor})` then filters by
87
- * the AND of per-node guards AND the stacked policy guard.
88
- * - In `mode: "audit"`, NO guards are stacked — `scopedDescribe` filters
89
- * purely by the target's pre-existing per-node guards. If a target has
90
- * no node-level guards, the policy rules you pass have no effect on
91
- * visibility (they only populate the `violations` topic on writes).
92
- */
93
- scopedDescribe(opts?: Omit<GraphDescribeOptions, "actor"> & {
94
- actor?: Actor;
95
- }): GraphDescribeOutput;
96
- /** The wrapped graph (escape hatch for tooling). */
97
- get target(): Graph;
98
- }
99
- /**
100
- * Wrap a {@link Graph} with {@link policyEnforcer} plus a scoped describe
101
- * lens. Returns a {@link GuardedExecutionGraph} that can be mounted, diffed,
102
- * or composed with {@link graphLens}.
103
- *
104
- * @param target - The graph to guard.
105
- * @param opts - See {@link GuardedExecutionOptions}.
106
- *
107
- * @example
108
- * ```ts
109
- * const guarded = guardedExecution(app, {
110
- * actor: { type: "human", id: "alice" },
111
- * policies: [
112
- * { effect: "allow", action: "read", actorType: "human" },
113
- * { effect: "deny", action: "write", pathPattern: "system::*" },
114
- * ],
115
- * mode: "enforce",
116
- * });
117
- *
118
- * const view = guarded.scopedDescribe({ detail: "standard" });
119
- * guarded.violations.events.subscribe(msgs => console.log("violations:", msgs));
120
- * ```
121
- *
122
- * @category patterns
123
- */
124
- declare function guardedExecution(target: Graph, opts: GuardedExecutionOptions): GuardedExecutionGraph;
125
-
126
- declare const index_DescribeFilter: typeof DescribeFilter;
127
- type index_GuardedExecutionGraph = GuardedExecutionGraph;
128
- declare const index_GuardedExecutionGraph: typeof GuardedExecutionGraph;
129
- type index_GuardedExecutionOptions = GuardedExecutionOptions;
130
- declare const index_guardedExecution: typeof guardedExecution;
131
- declare namespace index {
132
- export { index_DescribeFilter as DescribeFilter, index_GuardedExecutionGraph as GuardedExecutionGraph, type index_GuardedExecutionOptions as GuardedExecutionOptions, index_guardedExecution as guardedExecution };
133
- }
134
-
135
- export { GuardedExecutionGraph as G, type GuardedExecutionOptions as a, guardedExecution as g, index as i };
@@ -1,105 +0,0 @@
1
- import { a as Node } from './node-fSc-hCv8.cjs';
2
- import { S as StatusValue, C as CircuitState, R as RateLimiterOptions, a as CircuitBreakerOptions, b as RetryOptions, F as FallbackInput, N as NS_PER_MS, c as NS_PER_SEC } from './resilience-BWP2c7Af.cjs';
3
- import { B as BudgetConstraint } from './index-CpdnP-0y.cjs';
4
-
5
- /**
6
- * Resilience composition with correct nesting order (roadmap §9.0b).
7
- *
8
- * {@link resilientPipeline} composes the resilience primitives from
9
- * `extra/resilience.ts` in the order discovered during the §9.1 eval runs:
10
- *
11
- * ```text
12
- * rateLimit → budget → breaker → timeout → retry → fallback → status
13
- * ```
14
- *
15
- * Note on retry/timeout ordering: `timeout` is applied BEFORE `retry` so each
16
- * retry attempt resubscribes to a fresh deadline (per-attempt semantics). If
17
- * `timeout` wrapped `retry`, a single deadline would apply to the entire
18
- * retry chain — not what callers expect.
19
- *
20
- * Every step is optional — omit the option and that layer is skipped. The
21
- * returned bundle exposes the final `Node<T>` plus the status/error/breaker
22
- * companions so callers can wire them into dashboards, alerts, or
23
- * {@link graphLens}.
24
- *
25
- * Subsumes the pre-1.0 `resilientFetch` template — that template becomes a
26
- * preconfigured instance of this factory for the HTTP fetch case.
27
- *
28
- * @module
29
- */
30
-
31
- /** Options for {@link resilientPipeline}. Every field is optional — omit to skip that layer. */
32
- interface ResilientPipelineOptions<T> {
33
- /** Admission control — at most `maxEvents` DATA per `windowNs`. See {@link rateLimiter}. */
34
- rateLimit?: RateLimiterOptions;
35
- /** Cost/constraint gate. See {@link budgetGate}. */
36
- budget?: ReadonlyArray<BudgetConstraint>;
37
- /** Circuit breaker — fail-fast when the downstream resource is unhealthy. See {@link circuitBreaker}. */
38
- breaker?: CircuitBreakerOptions;
39
- /**
40
- * Behavior when the breaker is open:
41
- * - `"skip"` — emit RESOLVED (default, lets downstream drop the beat)
42
- * - `"error"` — emit a `CircuitOpenError` so `retry`/`fallback` can react
43
- *
44
- * Only used when `breaker` is provided.
45
- */
46
- breakerOnOpen?: "skip" | "error";
47
- /** Retry policy on terminal ERROR. See {@link retry}. */
48
- retry?: RetryOptions;
49
- /**
50
- * Per-attempt deadline in milliseconds. Converted to ns internally. Omit to skip the timeout wrap.
51
- *
52
- * Specified in ms (not ns) because callers consistently think in millisecond deadlines;
53
- * retry/breaker/ratelimit options take ns to match their primitives exactly.
54
- */
55
- timeoutMs?: number;
56
- /** Final fallback value emitted on terminal ERROR after retry exhausts. See {@link fallback}. */
57
- fallback?: FallbackInput<T>;
58
- /** Initial status reported by the status node. Default `"pending"`. */
59
- initialStatus?: StatusValue;
60
- }
61
- /** Output bundle of {@link resilientPipeline}. */
62
- interface ResilientPipelineBundle<T> {
63
- /** The final resilient node. Subscribe to this for DATA emissions. */
64
- node: Node<T>;
65
- /** Live status: `"pending" | "active" | "completed" | "errored"`. */
66
- status: Node<StatusValue>;
67
- /** Last error payload, or `null` when not errored. */
68
- error: Node<unknown | null>;
69
- /** Breaker state when `opts.breaker` was provided; `undefined` otherwise. */
70
- breakerState: Node<CircuitState> | undefined;
71
- }
72
- /**
73
- * Compose a resilient pipeline around `source` in the canonical nesting
74
- * order — `rateLimit → budget → breaker → timeout → retry → fallback → status`.
75
- * Omit any option to skip that layer.
76
- *
77
- * @param source - Upstream node to wrap.
78
- * @param opts - See {@link ResilientPipelineOptions}. All fields optional.
79
- *
80
- * @example
81
- * ```ts
82
- * const safeFetch = resilientPipeline(fetchNode, {
83
- * rateLimit: { maxEvents: 10, windowNs: NS_PER_SEC },
84
- * breaker: { failureThreshold: 5 },
85
- * retry: { count: 3, backoff: "exponential" },
86
- * timeoutMs: 10_000,
87
- * fallback: null,
88
- * });
89
- * safeFetch.status.subscribe(msgs => console.log(msgs));
90
- * ```
91
- *
92
- * @category patterns
93
- */
94
- declare function resilientPipeline<T>(source: Node<T>, opts?: ResilientPipelineOptions<T>): ResilientPipelineBundle<T>;
95
-
96
- declare const index_NS_PER_MS: typeof NS_PER_MS;
97
- declare const index_NS_PER_SEC: typeof NS_PER_SEC;
98
- type index_ResilientPipelineBundle<T> = ResilientPipelineBundle<T>;
99
- type index_ResilientPipelineOptions<T> = ResilientPipelineOptions<T>;
100
- declare const index_resilientPipeline: typeof resilientPipeline;
101
- declare namespace index {
102
- export { index_NS_PER_MS as NS_PER_MS, index_NS_PER_SEC as NS_PER_SEC, type index_ResilientPipelineBundle as ResilientPipelineBundle, type index_ResilientPipelineOptions as ResilientPipelineOptions, index_resilientPipeline as resilientPipeline };
103
- }
104
-
105
- export { type ResilientPipelineBundle as R, type ResilientPipelineOptions as a, index as i, resilientPipeline as r };
@@ -1,105 +0,0 @@
1
- import { a as Node } from './node-fSc-hCv8.js';
2
- import { S as StatusValue, C as CircuitState, R as RateLimiterOptions, a as CircuitBreakerOptions, b as RetryOptions, F as FallbackInput, N as NS_PER_MS, c as NS_PER_SEC } from './resilience-Bys63Cpd.js';
3
- import { B as BudgetConstraint } from './index-DOU1Ee_k.js';
4
-
5
- /**
6
- * Resilience composition with correct nesting order (roadmap §9.0b).
7
- *
8
- * {@link resilientPipeline} composes the resilience primitives from
9
- * `extra/resilience.ts` in the order discovered during the §9.1 eval runs:
10
- *
11
- * ```text
12
- * rateLimit → budget → breaker → timeout → retry → fallback → status
13
- * ```
14
- *
15
- * Note on retry/timeout ordering: `timeout` is applied BEFORE `retry` so each
16
- * retry attempt resubscribes to a fresh deadline (per-attempt semantics). If
17
- * `timeout` wrapped `retry`, a single deadline would apply to the entire
18
- * retry chain — not what callers expect.
19
- *
20
- * Every step is optional — omit the option and that layer is skipped. The
21
- * returned bundle exposes the final `Node<T>` plus the status/error/breaker
22
- * companions so callers can wire them into dashboards, alerts, or
23
- * {@link graphLens}.
24
- *
25
- * Subsumes the pre-1.0 `resilientFetch` template — that template becomes a
26
- * preconfigured instance of this factory for the HTTP fetch case.
27
- *
28
- * @module
29
- */
30
-
31
- /** Options for {@link resilientPipeline}. Every field is optional — omit to skip that layer. */
32
- interface ResilientPipelineOptions<T> {
33
- /** Admission control — at most `maxEvents` DATA per `windowNs`. See {@link rateLimiter}. */
34
- rateLimit?: RateLimiterOptions;
35
- /** Cost/constraint gate. See {@link budgetGate}. */
36
- budget?: ReadonlyArray<BudgetConstraint>;
37
- /** Circuit breaker — fail-fast when the downstream resource is unhealthy. See {@link circuitBreaker}. */
38
- breaker?: CircuitBreakerOptions;
39
- /**
40
- * Behavior when the breaker is open:
41
- * - `"skip"` — emit RESOLVED (default, lets downstream drop the beat)
42
- * - `"error"` — emit a `CircuitOpenError` so `retry`/`fallback` can react
43
- *
44
- * Only used when `breaker` is provided.
45
- */
46
- breakerOnOpen?: "skip" | "error";
47
- /** Retry policy on terminal ERROR. See {@link retry}. */
48
- retry?: RetryOptions;
49
- /**
50
- * Per-attempt deadline in milliseconds. Converted to ns internally. Omit to skip the timeout wrap.
51
- *
52
- * Specified in ms (not ns) because callers consistently think in millisecond deadlines;
53
- * retry/breaker/ratelimit options take ns to match their primitives exactly.
54
- */
55
- timeoutMs?: number;
56
- /** Final fallback value emitted on terminal ERROR after retry exhausts. See {@link fallback}. */
57
- fallback?: FallbackInput<T>;
58
- /** Initial status reported by the status node. Default `"pending"`. */
59
- initialStatus?: StatusValue;
60
- }
61
- /** Output bundle of {@link resilientPipeline}. */
62
- interface ResilientPipelineBundle<T> {
63
- /** The final resilient node. Subscribe to this for DATA emissions. */
64
- node: Node<T>;
65
- /** Live status: `"pending" | "active" | "completed" | "errored"`. */
66
- status: Node<StatusValue>;
67
- /** Last error payload, or `null` when not errored. */
68
- error: Node<unknown | null>;
69
- /** Breaker state when `opts.breaker` was provided; `undefined` otherwise. */
70
- breakerState: Node<CircuitState> | undefined;
71
- }
72
- /**
73
- * Compose a resilient pipeline around `source` in the canonical nesting
74
- * order — `rateLimit → budget → breaker → timeout → retry → fallback → status`.
75
- * Omit any option to skip that layer.
76
- *
77
- * @param source - Upstream node to wrap.
78
- * @param opts - See {@link ResilientPipelineOptions}. All fields optional.
79
- *
80
- * @example
81
- * ```ts
82
- * const safeFetch = resilientPipeline(fetchNode, {
83
- * rateLimit: { maxEvents: 10, windowNs: NS_PER_SEC },
84
- * breaker: { failureThreshold: 5 },
85
- * retry: { count: 3, backoff: "exponential" },
86
- * timeoutMs: 10_000,
87
- * fallback: null,
88
- * });
89
- * safeFetch.status.subscribe(msgs => console.log(msgs));
90
- * ```
91
- *
92
- * @category patterns
93
- */
94
- declare function resilientPipeline<T>(source: Node<T>, opts?: ResilientPipelineOptions<T>): ResilientPipelineBundle<T>;
95
-
96
- declare const index_NS_PER_MS: typeof NS_PER_MS;
97
- declare const index_NS_PER_SEC: typeof NS_PER_SEC;
98
- type index_ResilientPipelineBundle<T> = ResilientPipelineBundle<T>;
99
- type index_ResilientPipelineOptions<T> = ResilientPipelineOptions<T>;
100
- declare const index_resilientPipeline: typeof resilientPipeline;
101
- declare namespace index {
102
- export { index_NS_PER_MS as NS_PER_MS, index_NS_PER_SEC as NS_PER_SEC, type index_ResilientPipelineBundle as ResilientPipelineBundle, type index_ResilientPipelineOptions as ResilientPipelineOptions, index_resilientPipeline as resilientPipeline };
103
- }
104
-
105
- export { type ResilientPipelineBundle as R, type ResilientPipelineOptions as a, index as i, resilientPipeline as r };