framefields 2.0.7 → 2.0.9

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 (318) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-a6pY05g2.d.mts → audio-BxA0sL9z.d.mts} +3 -3
  4. package/dist/{audio-a6pY05g2.d.mts.map → audio-BxA0sL9z.d.mts.map} +1 -1
  5. package/dist/{audio-D6enPyAG.mjs → audio-Dev4NGPa.mjs} +3 -3
  6. package/dist/{audio-D6enPyAG.mjs.map → audio-Dev4NGPa.mjs.map} +1 -1
  7. package/dist/{client-C74hb7fy.mjs → client-CwRhflHE.mjs} +1 -1
  8. package/dist/{client-C74hb7fy.mjs.map → client-CwRhflHE.mjs.map} +1 -1
  9. package/dist/{dist-JkiL-qy7.mjs → dist-CoSg-CWr.mjs} +21 -11
  10. package/dist/dist-CoSg-CWr.mjs.map +1 -0
  11. package/dist/{dist-sHqWCB9M.mjs → dist-DgfykO99.mjs} +61 -10
  12. package/dist/dist-DgfykO99.mjs.map +1 -0
  13. package/dist/{dist-cjs-qEJrwjGk.mjs → dist-cjs--lfMLs3U.mjs} +4 -4
  14. package/dist/{dist-cjs-qEJrwjGk.mjs.map → dist-cjs--lfMLs3U.mjs.map} +1 -1
  15. package/dist/{dist-cjs-x5cwlqA5.mjs → dist-cjs--pxyGFw2.mjs} +1 -1
  16. package/dist/{dist-cjs-x5cwlqA5.mjs.map → dist-cjs--pxyGFw2.mjs.map} +1 -1
  17. package/dist/dist-cjs-3pon9kTt.mjs +6 -0
  18. package/dist/{dist-cjs-Dzs5P3K0.mjs → dist-cjs-BDpO-TH_.mjs} +1 -1
  19. package/dist/{dist-cjs-Dzs5P3K0.mjs.map → dist-cjs-BDpO-TH_.mjs.map} +1 -1
  20. package/dist/{dist-cjs-lYvO8aDo.mjs → dist-cjs-BiKQozdJ.mjs} +3 -3
  21. package/dist/{dist-cjs-lYvO8aDo.mjs.map → dist-cjs-BiKQozdJ.mjs.map} +1 -1
  22. package/dist/{dist-cjs-BUwe2XhR.mjs → dist-cjs-BmyyWYWv.mjs} +2 -2
  23. package/dist/{dist-cjs-BUwe2XhR.mjs.map → dist-cjs-BmyyWYWv.mjs.map} +1 -1
  24. package/dist/{dist-cjs-DgxjcvBN.mjs → dist-cjs-CND_ghfH.mjs} +1 -1
  25. package/dist/{dist-cjs-DgxjcvBN.mjs.map → dist-cjs-CND_ghfH.mjs.map} +1 -1
  26. package/dist/{dist-cjs-BWgoUCXJ.mjs → dist-cjs-CQwmMllY.mjs} +6 -6
  27. package/dist/{dist-cjs-BWgoUCXJ.mjs.map → dist-cjs-CQwmMllY.mjs.map} +1 -1
  28. package/dist/{dist-cjs-B5EVqDFp.mjs → dist-cjs-CgFzrgj8.mjs} +1 -1
  29. package/dist/{dist-cjs-B5EVqDFp.mjs.map → dist-cjs-CgFzrgj8.mjs.map} +1 -1
  30. package/dist/{dist-cjs-ECMuIF57.mjs → dist-cjs-CsU2sZoX.mjs} +4 -4
  31. package/dist/{dist-cjs-ECMuIF57.mjs.map → dist-cjs-CsU2sZoX.mjs.map} +1 -1
  32. package/dist/{dist-cjs-BKmGCgtm.mjs → dist-cjs-DJ8fcQEe.mjs} +11 -11
  33. package/dist/{dist-cjs-BKmGCgtm.mjs.map → dist-cjs-DJ8fcQEe.mjs.map} +1 -1
  34. package/dist/{dist-cjs-D7kEM-Mj.mjs → dist-cjs-DT2jJlcK.mjs} +5 -5
  35. package/dist/{dist-cjs-D7kEM-Mj.mjs.map → dist-cjs-DT2jJlcK.mjs.map} +1 -1
  36. package/dist/{dist-cjs-BUc0_kg-.mjs → dist-cjs-DjzmP0-x.mjs} +13 -13
  37. package/dist/{dist-cjs-BUc0_kg-.mjs.map → dist-cjs-DjzmP0-x.mjs.map} +1 -1
  38. package/dist/{dist-cjs-BGJkdexX.mjs → dist-cjs-DzjrlfbE.mjs} +14 -14
  39. package/dist/{dist-cjs-BGJkdexX.mjs.map → dist-cjs-DzjrlfbE.mjs.map} +1 -1
  40. package/dist/{dist-cjs-Df7144zM.mjs → dist-cjs-M-8QOgS_.mjs} +2 -2
  41. package/dist/{dist-cjs-Df7144zM.mjs.map → dist-cjs-M-8QOgS_.mjs.map} +1 -1
  42. package/dist/{dist-cjs-DFUmy89O.mjs → dist-cjs-TsA8LFXC.mjs} +3 -3
  43. package/dist/{dist-cjs-DFUmy89O.mjs.map → dist-cjs-TsA8LFXC.mjs.map} +1 -1
  44. package/dist/{dist-cjs-DsMdld8l.mjs → dist-cjs-agQl9T8M.mjs} +6 -6
  45. package/dist/{dist-cjs-DsMdld8l.mjs.map → dist-cjs-agQl9T8M.mjs.map} +1 -1
  46. package/dist/effects/index.d.mts +5 -5
  47. package/dist/effects/index.mjs +27 -26
  48. package/dist/{effects-l0T61DPU.mjs → effects-hxRwxjyC.mjs} +27 -3
  49. package/dist/effects-hxRwxjyC.mjs.map +1 -0
  50. package/dist/{event-streams-D-APZ7Ke.mjs → event-streams-BaNGaLxh.mjs} +2 -2
  51. package/dist/{event-streams-D-APZ7Ke.mjs.map → event-streams-BaNGaLxh.mjs.map} +1 -1
  52. package/dist/fonts/index.d.mts +1 -1
  53. package/dist/fonts/index.mjs +1 -1
  54. package/dist/{fonts-CuG-05-_.mjs → fonts-BznIea-I.mjs} +2 -2
  55. package/dist/{fonts-CuG-05-_.mjs.map → fonts-BznIea-I.mjs.map} +1 -1
  56. package/dist/{index-BJUS4Nx6.d.mts → index-BXNNJVs8.d.mts} +2 -2
  57. package/dist/{index-BJUS4Nx6.d.mts.map → index-BXNNJVs8.d.mts.map} +1 -1
  58. package/dist/{index-CbzEM_o6.d.mts → index-CQcdKyxF.d.mts} +1 -1
  59. package/dist/{index-CbzEM_o6.d.mts.map → index-CQcdKyxF.d.mts.map} +1 -1
  60. package/dist/{index-BJx_Qxc_.d.mts → index-CvDVpaKn.d.mts} +69 -27
  61. package/dist/index-CvDVpaKn.d.mts.map +1 -0
  62. package/dist/{index-WIPHLy5m.d.mts → index-D1zaOwEU.d.mts} +1 -1
  63. package/dist/index-D1zaOwEU.d.mts.map +1 -0
  64. package/dist/{index-CZChQhXZ.d.mts → index-J9CIK_nu.d.mts} +4 -2
  65. package/dist/index-J9CIK_nu.d.mts.map +1 -0
  66. package/dist/{index-Bi2nRZ_g.d.mts → index-fo4E7A6C.d.mts} +3 -3
  67. package/dist/{index-Bi2nRZ_g.d.mts.map → index-fo4E7A6C.d.mts.map} +1 -1
  68. package/dist/{index-BLbUQolI.d.mts → index-oodg5k9K.d.mts} +3 -3
  69. package/dist/{index-BLbUQolI.d.mts.map → index-oodg5k9K.d.mts.map} +1 -1
  70. package/dist/index.d.mts +11 -10
  71. package/dist/index.d.mts.map +1 -1
  72. package/dist/index.mjs +43 -42
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/{package-C58KmGKw.mjs → package-XpCRbTOA.mjs} +1 -1
  75. package/dist/{package-C58KmGKw.mjs.map → package-XpCRbTOA.mjs.map} +1 -1
  76. package/dist/preview/index.d.mts +2 -2
  77. package/dist/preview/index.mjs +11 -11
  78. package/dist/{preview-4z1jNSej.mjs → preview-DZTbEON9.mjs} +2 -2
  79. package/dist/{preview-4z1jNSej.mjs.map → preview-DZTbEON9.mjs.map} +1 -1
  80. package/dist/preview-engine/audio.mjs +1 -1
  81. package/dist/preview-engine/{chunk-3ROJ7JVY.mjs → chunk-25IW7NYO.mjs} +1 -1
  82. package/dist/preview-engine/chunk-36YGYLKD.mjs +58 -0
  83. package/dist/preview-engine/chunk-4VOHF3FF.mjs +1 -0
  84. package/dist/preview-engine/{chunk-45JOFIHE.mjs → chunk-5PPSCISJ.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-TNZENER3.mjs → chunk-7DIAFPQP.mjs} +2 -2
  86. package/dist/preview-engine/{chunk-CXFEQ5PM.mjs → chunk-7O24H4YT.mjs} +2 -2
  87. package/dist/preview-engine/{chunk-BE3CEVJB.mjs → chunk-AUFSM5KI.mjs} +2 -2
  88. package/dist/preview-engine/chunk-AW7HNZKR.mjs +98 -0
  89. package/dist/preview-engine/chunk-BHFI3Y4T.mjs +1 -0
  90. package/dist/preview-engine/{chunk-5NYKHIQN.mjs → chunk-BUWK5RJ4.mjs} +9 -9
  91. package/dist/preview-engine/chunk-DLXQDDIN.mjs +46 -0
  92. package/dist/preview-engine/chunk-EJGLUZMW.mjs +1 -0
  93. package/dist/preview-engine/{chunk-XSMK5E2V.mjs → chunk-JAOXXYXG.mjs} +2 -2
  94. package/dist/preview-engine/{chunk-PO4VAAQC.mjs → chunk-K52S5DJX.mjs} +1 -1
  95. package/dist/preview-engine/{chunk-IGFT3XLN.mjs → chunk-MDDF2GCF.mjs} +2 -2
  96. package/dist/preview-engine/{chunk-OZVCWK27.mjs → chunk-OF75EHTX.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-POPVFC5P.mjs → chunk-S4CSX6K5.mjs} +10 -10
  98. package/dist/preview-engine/chunk-SNYAHQ25.mjs +186 -0
  99. package/dist/preview-engine/{chunk-MC7TZZLD.mjs → chunk-T6COGNOW.mjs} +2 -2
  100. package/dist/preview-engine/chunk-VVLM6LZ3.mjs +1 -0
  101. package/dist/preview-engine/{chunk-RJJRPL42.mjs → chunk-VWLR2AZR.mjs} +1 -1
  102. package/dist/preview-engine/{chunk-KNZU3Z2F.mjs → chunk-WQ7BFSKF.mjs} +1 -1
  103. package/dist/preview-engine/chunk-XUM42I4R.mjs +1 -0
  104. package/dist/preview-engine/chunk-ZDCA6NVT.mjs +82 -0
  105. package/dist/preview-engine/{chunk-YK4XHUP4.mjs → chunk-ZJFAGIOM.mjs} +6 -6
  106. package/dist/preview-engine/{chunk-EJTGJVUA.mjs → chunk-ZSIJB76A.mjs} +2 -2
  107. package/dist/preview-engine/effects.mjs +1 -1
  108. package/dist/preview-engine/fonts.mjs +1 -1
  109. package/dist/preview-engine/framefields.mjs +13 -13
  110. package/dist/preview-engine/player.mjs +5 -5
  111. package/dist/preview-engine/{renderers-GYJTBVV2.mjs → renderers-27Q5X3U6.mjs} +1 -1
  112. package/dist/preview-engine/{renderers-Q2ZDD5K2.mjs → renderers-2US2NIUG.mjs} +2 -2
  113. package/dist/preview-engine/{renderers-54AQK6RF.mjs → renderers-32PIFHPS.mjs} +1 -1
  114. package/dist/preview-engine/{renderers-O6HOYIPS.mjs → renderers-76PQY2SO.mjs} +1 -1
  115. package/dist/preview-engine/{renderers-PXGLEFZO.mjs → renderers-CI2GXWLP.mjs} +1 -1
  116. package/dist/preview-engine/{renderers-GC7EGB5Z.mjs → renderers-CRKRWR2Y.mjs} +1 -1
  117. package/dist/preview-engine/{renderers-47UITXLZ.mjs → renderers-EE2GFG7J.mjs} +1 -1
  118. package/dist/preview-engine/{renderers-E3JYRLSD.mjs → renderers-GJSUN5HU.mjs} +1 -1
  119. package/dist/preview-engine/{renderers-KCP4TFHG.mjs → renderers-IHKORHMT.mjs} +1 -1
  120. package/dist/preview-engine/renderers-LTNTQLWE.mjs +248 -0
  121. package/dist/preview-engine/{renderers-OBMTU3QY.mjs → renderers-NQUDQEHY.mjs} +1 -1
  122. package/dist/preview-engine/{renderers-QECJP22T.mjs → renderers-NSY2SDIE.mjs} +1 -1
  123. package/dist/preview-engine/{renderers-KS4HPV6Q.mjs → renderers-PWLWOZY4.mjs} +1 -1
  124. package/dist/preview-engine/{renderers-TUYQLKHJ.mjs → renderers-W5CVDJVH.mjs} +1 -1
  125. package/dist/preview-engine/{renderers-N5UPJY73.mjs → renderers-WLLJFZTF.mjs} +1 -1
  126. package/dist/preview-engine/renderers-WN4SYFCU.mjs +1 -0
  127. package/dist/preview-engine/{renderers-TG62LZTF.mjs → renderers-XFBSGTHU.mjs} +1 -1
  128. package/dist/preview-engine/signals.mjs +1 -1
  129. package/dist/{program-DPFDbeL9.mjs → program-C797QMRL.mjs} +2 -2
  130. package/dist/{program-DPFDbeL9.mjs.map → program-C797QMRL.mjs.map} +1 -1
  131. package/dist/renderer/index.d.mts +2 -2
  132. package/dist/renderer/index.mjs +3 -3
  133. package/dist/{renderer-C-F91lPu.mjs → renderer--vY6O19V.mjs} +2 -2
  134. package/dist/{renderer-C-F91lPu.mjs.map → renderer--vY6O19V.mjs.map} +1 -1
  135. package/dist/{renderer-Bal8734U.d.mts → renderer-2NQWaZd7.d.mts} +2 -2
  136. package/dist/{renderer-Bal8734U.d.mts.map → renderer-2NQWaZd7.d.mts.map} +1 -1
  137. package/dist/renderer-3uTfN95I.mjs +3 -0
  138. package/dist/{renderer-CLUPc9do.mjs → renderer-5jfDUKd4.mjs} +2 -2
  139. package/dist/{renderer-CLUPc9do.mjs.map → renderer-5jfDUKd4.mjs.map} +1 -1
  140. package/dist/{renderer-DvHpzsUV.mjs → renderer-6PqlYQjC.mjs} +10 -9
  141. package/dist/{renderer-DvHpzsUV.mjs.map → renderer-6PqlYQjC.mjs.map} +1 -1
  142. package/dist/{renderer-BbwOEawB.mjs → renderer-9QCHY8Kh.mjs} +18 -4
  143. package/dist/renderer-9QCHY8Kh.mjs.map +1 -0
  144. package/dist/{renderer-CmMNU1-P.mjs → renderer-B1UeU7lX.mjs} +21 -18
  145. package/dist/renderer-B1UeU7lX.mjs.map +1 -0
  146. package/dist/{renderer-BHsEOp1I.mjs → renderer-B4ecTNR7.mjs} +18 -11
  147. package/dist/renderer-B4ecTNR7.mjs.map +1 -0
  148. package/dist/renderer-B5GslTP-.mjs +3 -0
  149. package/dist/{renderer-BgrDGRNW.mjs → renderer-B8gTyU3w.mjs} +18 -17
  150. package/dist/renderer-B8gTyU3w.mjs.map +1 -0
  151. package/dist/{renderer-L72D1mwv.mjs → renderer-BE4Ns0nw.mjs} +2 -2
  152. package/dist/{renderer-L72D1mwv.mjs.map → renderer-BE4Ns0nw.mjs.map} +1 -1
  153. package/dist/{renderer-BDLnExoP.mjs → renderer-BM05sB8m.mjs} +8 -7
  154. package/dist/renderer-BM05sB8m.mjs.map +1 -0
  155. package/dist/{renderer-By91JEn8.mjs → renderer-BTYncYDf.mjs} +74 -63
  156. package/dist/{renderer-By91JEn8.mjs.map → renderer-BTYncYDf.mjs.map} +1 -1
  157. package/dist/renderer-BUIWeIKQ.mjs +3 -0
  158. package/dist/{renderer-DVj8jfmO.mjs → renderer-BXaK02qA.mjs} +2 -2
  159. package/dist/{renderer-DVj8jfmO.mjs.map → renderer-BXaK02qA.mjs.map} +1 -1
  160. package/dist/renderer-B_LfC88A.mjs +3 -0
  161. package/dist/renderer-B_zmicsE.mjs +3 -0
  162. package/dist/{renderer-DJPuwTbS.mjs → renderer-BcPpcKDI.mjs} +2 -2
  163. package/dist/{renderer-DJPuwTbS.mjs.map → renderer-BcPpcKDI.mjs.map} +1 -1
  164. package/dist/{renderer-CsE9ztUa.mjs → renderer-BgqjWI7K.mjs} +2 -2
  165. package/dist/{renderer-CsE9ztUa.mjs.map → renderer-BgqjWI7K.mjs.map} +1 -1
  166. package/dist/{renderer-Cn-p1SyO.mjs → renderer-BpJgfBQ8.mjs} +2 -2
  167. package/dist/{renderer-Cn-p1SyO.mjs.map → renderer-BpJgfBQ8.mjs.map} +1 -1
  168. package/dist/renderer-BtNxtXkR.mjs +3 -0
  169. package/dist/{renderer-Bpf8EGY1.mjs → renderer-BwmZUkvd.mjs} +2 -2
  170. package/dist/{renderer-Bpf8EGY1.mjs.map → renderer-BwmZUkvd.mjs.map} +1 -1
  171. package/dist/{renderer-7v-ZNKEJ.mjs → renderer-C-PfbkPu.mjs} +2 -2
  172. package/dist/{renderer-7v-ZNKEJ.mjs.map → renderer-C-PfbkPu.mjs.map} +1 -1
  173. package/dist/renderer-C-sZSHtf.mjs +3 -0
  174. package/dist/renderer-C1zifktw.mjs +3 -0
  175. package/dist/{renderer-BV_d3D_3.mjs → renderer-C2gnWTQZ.mjs} +2 -2
  176. package/dist/{renderer-BV_d3D_3.mjs.map → renderer-C2gnWTQZ.mjs.map} +1 -1
  177. package/dist/{renderer-BShK_xMJ.mjs → renderer-CB8hMQgm.mjs} +1 -1
  178. package/dist/renderer-CCt2XTSM.mjs +3 -0
  179. package/dist/{renderer-CLWAbaCS.mjs → renderer-CKJb_Lky.mjs} +2 -2
  180. package/dist/{renderer-CLWAbaCS.mjs.map → renderer-CKJb_Lky.mjs.map} +1 -1
  181. package/dist/renderer-CMXcaArD.mjs +3 -0
  182. package/dist/{renderer-doPt4zQZ.mjs → renderer-CV8diddR.mjs} +2 -2
  183. package/dist/{renderer-doPt4zQZ.mjs.map → renderer-CV8diddR.mjs.map} +1 -1
  184. package/dist/renderer-CW9D5zCP.mjs +3 -0
  185. package/dist/{renderer-B1IXTeF2.mjs → renderer-CckJJHbM.mjs} +2 -2
  186. package/dist/{renderer-B1IXTeF2.mjs.map → renderer-CckJJHbM.mjs.map} +1 -1
  187. package/dist/{renderer-DFKsLrUs.mjs → renderer-CepMDQ06.mjs} +1 -1
  188. package/dist/{renderer-DFKsLrUs.mjs.map → renderer-CepMDQ06.mjs.map} +1 -1
  189. package/dist/renderer-CjY77sB_.mjs +3 -0
  190. package/dist/{renderer-DnXQXk-8.mjs → renderer-CpUbDJAV.mjs} +5 -4
  191. package/dist/{renderer-DnXQXk-8.mjs.map → renderer-CpUbDJAV.mjs.map} +1 -1
  192. package/dist/{renderer-DRf4FLSq.mjs → renderer-CrVAvP92.mjs} +2 -2
  193. package/dist/{renderer-DRf4FLSq.mjs.map → renderer-CrVAvP92.mjs.map} +1 -1
  194. package/dist/{renderer-Cgy1H0Ql.mjs → renderer-CuqhAB4i.mjs} +11 -5
  195. package/dist/renderer-CuqhAB4i.mjs.map +1 -0
  196. package/dist/{renderer--akPySto.mjs → renderer-CxQ5v4fJ.mjs} +11 -5
  197. package/dist/renderer-CxQ5v4fJ.mjs.map +1 -0
  198. package/dist/renderer-D1R7vBUl.mjs +3 -0
  199. package/dist/{renderer-DabG62XS.mjs → renderer-D2XD4QYk.mjs} +1 -1
  200. package/dist/{renderer-DabG62XS.mjs.map → renderer-D2XD4QYk.mjs.map} +1 -1
  201. package/dist/{renderer-CM5c8a7B.mjs → renderer-D3uNI10l.mjs} +7 -7
  202. package/dist/{renderer-CM5c8a7B.mjs.map → renderer-D3uNI10l.mjs.map} +1 -1
  203. package/dist/renderer-D5yawxtJ.mjs +3 -0
  204. package/dist/{renderer-B52Y2SDC.mjs → renderer-D6Gi_h4K.mjs} +1 -1
  205. package/dist/{renderer-DjI45OYC.mjs → renderer-D7zvPHKn.mjs} +1 -1
  206. package/dist/{renderer-DjI45OYC.mjs.map → renderer-D7zvPHKn.mjs.map} +1 -1
  207. package/dist/renderer-D9NnIx7o.mjs +3 -0
  208. package/dist/{renderer-BNBh4omF.mjs → renderer-DAFyJ4dv.mjs} +2 -2
  209. package/dist/{renderer-BNBh4omF.mjs.map → renderer-DAFyJ4dv.mjs.map} +1 -1
  210. package/dist/renderer-DC8jr1Ay.mjs +3 -0
  211. package/dist/{renderer-BhfFVqCx.mjs → renderer-DCK73tcD.mjs} +17 -4
  212. package/dist/renderer-DCK73tcD.mjs.map +1 -0
  213. package/dist/renderer-DCv-Abvn.mjs +4 -0
  214. package/dist/{renderer-B80s47yo.mjs → renderer-DEJwPRkR.mjs} +1 -1
  215. package/dist/{renderer-B80s47yo.mjs.map → renderer-DEJwPRkR.mjs.map} +1 -1
  216. package/dist/renderer-DPLFhzaV.mjs +3 -0
  217. package/dist/{renderer-BXWu8aHU.mjs → renderer-DPpgBTlK.mjs} +2 -2
  218. package/dist/{renderer-BXWu8aHU.mjs.map → renderer-DPpgBTlK.mjs.map} +1 -1
  219. package/dist/{renderer-E5D4H5dK.mjs → renderer-DRpE3ZW4.mjs} +2 -2
  220. package/dist/{renderer-E5D4H5dK.mjs.map → renderer-DRpE3ZW4.mjs.map} +1 -1
  221. package/dist/renderer-DVsF2FDr.mjs +3 -0
  222. package/dist/{renderer-BUJ6uaJE.mjs → renderer-DX38J6mK.mjs} +7 -6
  223. package/dist/{renderer-BUJ6uaJE.mjs.map → renderer-DX38J6mK.mjs.map} +1 -1
  224. package/dist/{renderer-CIvaRnP_.mjs → renderer-D_1oDOCP.mjs} +1 -1
  225. package/dist/{renderer-CIvaRnP_.mjs.map → renderer-D_1oDOCP.mjs.map} +1 -1
  226. package/dist/renderer-DetDm3ep.mjs +3 -0
  227. package/dist/{renderer-Bl9C9lIo.mjs → renderer-DgSO5OO0.mjs} +1 -1
  228. package/dist/renderer-DhMhJh_G.mjs +3 -0
  229. package/dist/renderer-DhQld4Qt.mjs +3 -0
  230. package/dist/renderer-Dn3rc3ah.mjs +3 -0
  231. package/dist/{renderer-XRGwrdg8.mjs → renderer-Dn8v2o9L.mjs} +18 -4
  232. package/dist/renderer-Dn8v2o9L.mjs.map +1 -0
  233. package/dist/{renderer-BpTwFaja.mjs → renderer-DnF3aXPX.mjs} +2 -2
  234. package/dist/{renderer-BpTwFaja.mjs.map → renderer-DnF3aXPX.mjs.map} +1 -1
  235. package/dist/renderer-Dw9LxE2f.mjs +3 -0
  236. package/dist/{renderer-Dntxca07.mjs → renderer-EmG34sT2.mjs} +2 -2
  237. package/dist/{renderer-Dntxca07.mjs.map → renderer-EmG34sT2.mjs.map} +1 -1
  238. package/dist/renderer-HvrQZw5E.mjs +3 -0
  239. package/dist/renderer-QdJE56ts.mjs +3 -0
  240. package/dist/{renderer-h-HOoLwD.mjs → renderer-_bygZSKk.mjs} +1 -1
  241. package/dist/{renderer-h-HOoLwD.mjs.map → renderer-_bygZSKk.mjs.map} +1 -1
  242. package/dist/{renderer-BD6Jkc8j.mjs → renderer-b6sZN90h.mjs} +4 -3
  243. package/dist/{renderer-BD6Jkc8j.mjs.map → renderer-b6sZN90h.mjs.map} +1 -1
  244. package/dist/renderer-d5-F_48R.mjs +3 -0
  245. package/dist/renderer-euGyUN2O.mjs +3 -0
  246. package/dist/{renderer-C5lJvf-h.mjs → renderer-gT0ADXMW.mjs} +2 -2
  247. package/dist/{renderer-C5lJvf-h.mjs.map → renderer-gT0ADXMW.mjs.map} +1 -1
  248. package/dist/{renderer-0ty5QtXg.mjs → renderer-lq4n1hSS.mjs} +2 -2
  249. package/dist/{renderer-0ty5QtXg.mjs.map → renderer-lq4n1hSS.mjs.map} +1 -1
  250. package/dist/renderer-p3SmBFP9.mjs +3 -0
  251. package/dist/renderer-xp_J0ln7.mjs +263 -0
  252. package/dist/renderer-xp_J0ln7.mjs.map +1 -0
  253. package/dist/{renderer-D3FsnptO.mjs → renderer-zvtpCnqy.mjs} +1 -1
  254. package/dist/{renderers-CP8CFWDs-CAs5DgWj.mjs → renderers-CP8CFWDs-Ciap7y_j.mjs} +2 -2
  255. package/dist/{renderers-CP8CFWDs-CAs5DgWj.mjs.map → renderers-CP8CFWDs-Ciap7y_j.mjs.map} +1 -1
  256. package/dist/signals/index.d.mts +5 -5
  257. package/dist/signals/index.mjs +4 -4
  258. package/dist/{signin-CZj4Oc5s.mjs → signin-Db08vl-g.mjs} +9 -9
  259. package/dist/{signin-CZj4Oc5s.mjs.map → signin-Db08vl-g.mjs.map} +1 -1
  260. package/dist/{sso-oidc-C0_31ThY.mjs → sso-oidc-CpLz_lIu.mjs} +9 -9
  261. package/dist/{sso-oidc-C0_31ThY.mjs.map → sso-oidc-CpLz_lIu.mjs.map} +1 -1
  262. package/dist/{sts-DD4ggEXC.mjs → sts-BQefGuml.mjs} +2 -2
  263. package/dist/{sts-nXw8RDJI.mjs → sts-Dgl0kH-t.mjs} +9 -9
  264. package/dist/{sts-nXw8RDJI.mjs.map → sts-Dgl0kH-t.mjs.map} +1 -1
  265. package/package.json +55 -54
  266. package/dist/dist-JkiL-qy7.mjs.map +0 -1
  267. package/dist/dist-cjs-CmZEMtO6.mjs +0 -6
  268. package/dist/dist-sHqWCB9M.mjs.map +0 -1
  269. package/dist/effects-l0T61DPU.mjs.map +0 -1
  270. package/dist/index-BJx_Qxc_.d.mts.map +0 -1
  271. package/dist/index-CZChQhXZ.d.mts.map +0 -1
  272. package/dist/index-WIPHLy5m.d.mts.map +0 -1
  273. package/dist/preview-engine/chunk-2XXICKQV.mjs +0 -82
  274. package/dist/preview-engine/chunk-66NVL4BN.mjs +0 -58
  275. package/dist/preview-engine/chunk-7MJVROKR.mjs +0 -98
  276. package/dist/preview-engine/chunk-7NVDTELW.mjs +0 -1
  277. package/dist/preview-engine/chunk-DMWSTYFF.mjs +0 -1
  278. package/dist/preview-engine/chunk-FKZ4XXPE.mjs +0 -1
  279. package/dist/preview-engine/chunk-JQ4WY6BZ.mjs +0 -186
  280. package/dist/preview-engine/chunk-S3P3MJYU.mjs +0 -1
  281. package/dist/preview-engine/renderers-R5WSHETG.mjs +0 -248
  282. package/dist/renderer--akPySto.mjs.map +0 -1
  283. package/dist/renderer-145WIXyW.mjs +0 -3
  284. package/dist/renderer-9W8q4Y8D.mjs +0 -3
  285. package/dist/renderer-B5HBViEG.mjs +0 -3
  286. package/dist/renderer-B7naoaVH.mjs +0 -3
  287. package/dist/renderer-BDLnExoP.mjs.map +0 -1
  288. package/dist/renderer-BHYmRBem.mjs +0 -3
  289. package/dist/renderer-BHsEOp1I.mjs.map +0 -1
  290. package/dist/renderer-BL51bhvQ.mjs +0 -3
  291. package/dist/renderer-BMovYRoR.mjs +0 -3
  292. package/dist/renderer-BbwOEawB.mjs.map +0 -1
  293. package/dist/renderer-BfvBHHNr.mjs +0 -3
  294. package/dist/renderer-BgrDGRNW.mjs.map +0 -1
  295. package/dist/renderer-BhfFVqCx.mjs.map +0 -1
  296. package/dist/renderer-ByxrzTRg.mjs +0 -3
  297. package/dist/renderer-CDirzReW.mjs +0 -3
  298. package/dist/renderer-CGCmbeJ2.mjs +0 -3
  299. package/dist/renderer-CO0KsnEg.mjs +0 -3
  300. package/dist/renderer-COO44HDO.mjs +0 -3
  301. package/dist/renderer-C_9SIgZX.mjs +0 -3
  302. package/dist/renderer-Cgy1H0Ql.mjs.map +0 -1
  303. package/dist/renderer-CmMNU1-P.mjs.map +0 -1
  304. package/dist/renderer-CntaTaNq.mjs +0 -3
  305. package/dist/renderer-Cv9JLpL6.mjs +0 -3
  306. package/dist/renderer-D0FWIsWn.mjs +0 -3
  307. package/dist/renderer-D3jUYUDU.mjs +0 -3
  308. package/dist/renderer-D5Je-AeQ.mjs +0 -3
  309. package/dist/renderer-D6bWQtr-.mjs +0 -3
  310. package/dist/renderer-DNPwpmYS.mjs +0 -3
  311. package/dist/renderer-DawVsNLw.mjs +0 -3
  312. package/dist/renderer-Dl_6Kn87.mjs +0 -3
  313. package/dist/renderer-DlrJSfaw.mjs +0 -3
  314. package/dist/renderer-DpScOWGG.mjs +0 -4
  315. package/dist/renderer-DxYOA1MM.mjs +0 -3
  316. package/dist/renderer-S7jOr_jF.mjs +0 -3
  317. package/dist/renderer-XRGwrdg8.mjs.map +0 -1
  318. package/dist/renderer-kN2TeWks.mjs +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-BD6Jkc8j.mjs","names":["path","VisionRunner","VisionNode"],"sources":["../../vision/dist/registry-CSFimt7C.mjs","../../vision/dist/src-C2sA_wDT.mjs","../../../nodes/node-vision/dist/renderers-B24hckhO.mjs"],"sourcesContent":["//#region src/model/registry.ts\nconst VISION_TASKS = [\n\t\"detect\",\n\t\"segment\",\n\t\"pose\",\n\t\"matte\"\n];\nconst VISION_VARIANTS = [\n\t\"t\",\n\t\"s\",\n\t\"m\"\n];\nconst hf = (repo, revision, path) => `https://huggingface.co/${repo}/resolve/${revision}/${path}`;\nconst RTMDET_INS_REPO = \"tori29umai/rtmdet-ins-onnx-person-masks\";\nconst RTMDET_INS_REV = \"e5218e8d47d7c50077f27f9893a28e0ef2ad5656\";\nconst RTMDET_INS_SOURCE = \"RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export\";\nconst RTMO_SOURCE = \"RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export\";\nconst SELFIE_SOURCE = \"MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export\";\nconst VISION_MODELS = {\n\t\"rtmdet-ins-t\": {\n\t\tkey: \"rtmdet-ins-t\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-t.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/tiny/rtmdet-ins_tiny_640x640.onnx\"),\n\t\tbytes: 24032356,\n\t\tsha256: \"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmdet-ins-s\": {\n\t\tkey: \"rtmdet-ins-s\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-s.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/s/rtmdet-ins_s_640x640.onnx\"),\n\t\tbytes: 43236976,\n\t\tsha256: \"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmdet-ins-m\": {\n\t\tkey: \"rtmdet-ins-m\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-m.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/m/rtmdet-ins_m_640x640.onnx\"),\n\t\tbytes: 115735979,\n\t\tsha256: \"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmo-t\": {\n\t\tkey: \"rtmo-t\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-t.onnx\",\n\t\turl: hf(\"Xenova/RTMO-t\", \"f29d13ce5ee291fbe505e9d06a049992f05699dc\", \"onnx/model.onnx\"),\n\t\tbytes: 27360569,\n\t\tsha256: \"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13\",\n\t\tinput: [416, 416],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"rtmo-s\": {\n\t\tkey: \"rtmo-s\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-s.onnx\",\n\t\turl: hf(\"Xenova/RTMO-s\", \"d8c526187f341d287753831c9c8b1ecc4855bba1\", \"onnx/model.onnx\"),\n\t\tbytes: 39636400,\n\t\tsha256: \"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7\",\n\t\tinput: [640, 640],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"rtmo-m\": {\n\t\tkey: \"rtmo-m\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-m.onnx\",\n\t\turl: hf(\"Xenova/RTMO-m\", \"3aba1280472b98ee2bf663482e27e243038d23fe\", \"onnx/model.onnx\"),\n\t\tbytes: 89291929,\n\t\tsha256: \"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e\",\n\t\tinput: [640, 640],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"selfie-square\": {\n\t\tkey: \"selfie-square\",\n\t\tfamily: \"selfie\",\n\t\tfilename: \"selfie-square.onnx\",\n\t\turl: hf(\"onnx-community/mediapipe_selfie_segmentation\", \"be49485c8e027524be38591817fc5cd31bd9d00e\", \"onnx/model.onnx\"),\n\t\tbytes: 462352,\n\t\tsha256: \"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad\",\n\t\tinput: [256, 256],\n\t\tsource: SELFIE_SOURCE\n\t},\n\t\"selfie-landscape\": {\n\t\tkey: \"selfie-landscape\",\n\t\tfamily: \"selfie\",\n\t\tfilename: \"selfie-landscape.onnx\",\n\t\turl: hf(\"onnx-community/mediapipe_selfie_segmentation_landscape\", \"2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3\", \"onnx/model.onnx\"),\n\t\tbytes: 462338,\n\t\tsha256: \"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24\",\n\t\tinput: [256, 144],\n\t\tsource: SELFIE_SOURCE\n\t}\n};\n/**\n* Resolves the model for a task. `detect` and `segment` share RTMDet-Ins (one forward pass\n* yields both); `matte` picks the landscape Selfie Segmenter for wide frames.\n*/\nfunction modelKeyFor(task, variant = \"s\", aspect = 1) {\n\tif (task === \"pose\") return `rtmo-${variant}`;\n\tif (task === \"matte\") return aspect > 1.3 ? \"selfie-landscape\" : \"selfie-square\";\n\treturn `rtmdet-ins-${variant}`;\n}\n/** COCO 80 class names — index order matches the RTMDet-Ins `labels` output. */\nconst COCO_CLASSES = [\n\t\"person\",\n\t\"bicycle\",\n\t\"car\",\n\t\"motorcycle\",\n\t\"airplane\",\n\t\"bus\",\n\t\"train\",\n\t\"truck\",\n\t\"boat\",\n\t\"traffic light\",\n\t\"fire hydrant\",\n\t\"stop sign\",\n\t\"parking meter\",\n\t\"bench\",\n\t\"bird\",\n\t\"cat\",\n\t\"dog\",\n\t\"horse\",\n\t\"sheep\",\n\t\"cow\",\n\t\"elephant\",\n\t\"bear\",\n\t\"zebra\",\n\t\"giraffe\",\n\t\"backpack\",\n\t\"umbrella\",\n\t\"handbag\",\n\t\"tie\",\n\t\"suitcase\",\n\t\"frisbee\",\n\t\"skis\",\n\t\"snowboard\",\n\t\"sports ball\",\n\t\"kite\",\n\t\"baseball bat\",\n\t\"baseball glove\",\n\t\"skateboard\",\n\t\"surfboard\",\n\t\"tennis racket\",\n\t\"bottle\",\n\t\"wine glass\",\n\t\"cup\",\n\t\"fork\",\n\t\"knife\",\n\t\"spoon\",\n\t\"bowl\",\n\t\"banana\",\n\t\"apple\",\n\t\"sandwich\",\n\t\"orange\",\n\t\"broccoli\",\n\t\"carrot\",\n\t\"hot dog\",\n\t\"pizza\",\n\t\"donut\",\n\t\"cake\",\n\t\"chair\",\n\t\"couch\",\n\t\"potted plant\",\n\t\"bed\",\n\t\"dining table\",\n\t\"toilet\",\n\t\"tv\",\n\t\"laptop\",\n\t\"mouse\",\n\t\"remote\",\n\t\"keyboard\",\n\t\"cell phone\",\n\t\"microwave\",\n\t\"oven\",\n\t\"toaster\",\n\t\"sink\",\n\t\"refrigerator\",\n\t\"book\",\n\t\"clock\",\n\t\"vase\",\n\t\"scissors\",\n\t\"teddy bear\",\n\t\"hair drier\",\n\t\"toothbrush\"\n];\n\n//#endregion\nexport { modelKeyFor as a, VISION_VARIANTS as i, VISION_MODELS as n, VISION_TASKS as r, COCO_CLASSES as t };\n//# sourceMappingURL=registry-CSFimt7C.mjs.map","import { n as __reExport, t as __exportAll } from \"./chunk-CFhWmker.mjs\";\nimport { a as modelKeyFor, i as VISION_VARIANTS, n as VISION_MODELS, r as VISION_TASKS, t as COCO_CLASSES } from \"./registry-CSFimt7C.mjs\";\nimport { PoseSkeletonComputePipeline } from \"@framefields/tensor-webgpu\";\nimport { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, statSync } from \"node:fs\";\nimport { readFile, rename, unlink, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { frameSignal, programmaticSignal } from \"@framefields/core\";\n\n//#region src/tracking/temporal-object-tracker.ts\nfunction computeIoU(boxA, boxB) {\n\tconst xA = Math.max(boxA.originX, boxB.originX);\n\tconst yA = Math.max(boxA.originY, boxB.originY);\n\tconst xB = Math.min(boxA.originX + boxA.width, boxB.originX + boxB.width);\n\tconst yB = Math.min(boxA.originY + boxA.height, boxB.originY + boxB.height);\n\tconst interArea = Math.max(0, xB - xA) * Math.max(0, yB - yA);\n\tif (interArea <= 0) return 0;\n\tconst unionArea = boxA.width * boxA.height + boxB.width * boxB.height - interArea;\n\treturn unionArea > 0 ? interArea / unionArea : 0;\n}\nvar TemporalObjectTracker = class {\n\t_nextTrackId = 1;\n\t_tracks = [];\n\t_iouThreshold;\n\t_maxMissedFrames;\n\t_minHits;\n\t_positionSmoothing;\n\t_activeDuringCoast;\n\tconstructor(options = {}) {\n\t\tthis._iouThreshold = options.iouThreshold ?? .25;\n\t\tthis._maxMissedFrames = options.maxMissedFrames ?? 15;\n\t\tthis._minHits = options.minHits ?? 1;\n\t\tthis._positionSmoothing = Math.max(.1, Math.min(1, options.positionSmoothing ?? .75));\n\t\tthis._activeDuringCoast = options.activeDuringCoast !== false;\n\t}\n\t/**\n\t* Updates the multi-object tracker with new detections for the current frame.\n\t*\n\t* @param detections Raw detections found on the current frame\n\t* @param frame Current frame index\n\t* @param fps Video framerate (used for physical velocity estimation)\n\t* @returns Stable, temporal list of TrackedObjects\n\t*/\n\tupdate(detections, _frame, fps = 24) {\n\t\tconst dt = fps > 0 ? 1 / fps : .0416;\n\t\tfor (const track of this._tracks) {\n\t\t\ttrack.age++;\n\t\t\ttrack.timeSinceUpdate++;\n\t\t\tif (track.timeSinceUpdate > 0) {\n\t\t\t\tconst predCenterX = track.centerX + track.vx * dt;\n\t\t\t\tconst predCenterY = track.centerY + track.vy * dt;\n\t\t\t\ttrack.centerX = predCenterX;\n\t\t\t\ttrack.centerY = predCenterY;\n\t\t\t\tconst w = track.box.width;\n\t\t\t\tconst h = track.box.height;\n\t\t\t\tconst normW = track.box.normalizedWidth;\n\t\t\t\tconst normH = track.box.normalizedHeight;\n\t\t\t\tconst normCenterX = track.box.normalizedX + normW / 2 + track.vx * dt / Math.max(1, track.box.width / normW);\n\t\t\t\tconst normCenterY = track.box.normalizedY + normH / 2 + track.vy * dt / Math.max(1, track.box.height / normH);\n\t\t\t\ttrack.box = {\n\t\t\t\t\toriginX: predCenterX - w / 2,\n\t\t\t\t\toriginY: predCenterY - h / 2,\n\t\t\t\t\twidth: w,\n\t\t\t\t\theight: h,\n\t\t\t\t\tnormalizedX: normCenterX - normW / 2,\n\t\t\t\t\tnormalizedY: normCenterY - normH / 2,\n\t\t\t\t\tnormalizedWidth: normW,\n\t\t\t\t\tnormalizedHeight: normH\n\t\t\t\t};\n\t\t\t\ttrack.vx *= .92;\n\t\t\t\ttrack.vy *= .92;\n\t\t\t\ttrack.isCoasting = true;\n\t\t\t}\n\t\t}\n\t\tconst matchedDetections = /* @__PURE__ */ new Set();\n\t\tconst matchedTracks = /* @__PURE__ */ new Set();\n\t\tconst candidateMatches = [];\n\t\tfor (let t = 0; t < this._tracks.length; t++) {\n\t\t\tconst trk = this._tracks[t];\n\t\t\tfor (let d = 0; d < detections.length; d++) {\n\t\t\t\tconst det = detections[d];\n\t\t\t\tif (trk.category !== det.category) continue;\n\t\t\t\tconst iou = computeIoU(trk.box, det.boundingBox);\n\t\t\t\tif (iou >= this._iouThreshold) candidateMatches.push({\n\t\t\t\t\ttrackIdx: t,\n\t\t\t\t\tdetIdx: d,\n\t\t\t\t\tiou\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tcandidateMatches.sort((a, b) => b.iou - a.iou);\n\t\tfor (const match of candidateMatches) {\n\t\t\tif (matchedTracks.has(match.trackIdx) || matchedDetections.has(match.detIdx)) continue;\n\t\t\tmatchedTracks.add(match.trackIdx);\n\t\t\tmatchedDetections.add(match.detIdx);\n\t\t\tconst trk = this._tracks[match.trackIdx];\n\t\t\tconst det = detections[match.detIdx];\n\t\t\tconst detBox = det.boundingBox;\n\t\t\tconst detCenterX = detBox.originX + detBox.width / 2;\n\t\t\tconst detCenterY = detBox.originY + detBox.height / 2;\n\t\t\tconst instVx = (detCenterX - trk.centerX) / dt;\n\t\t\tconst instVy = (detCenterY - trk.centerY) / dt;\n\t\t\ttrk.vx = trk.vx * .4 + instVx * .6;\n\t\t\ttrk.vy = trk.vy * .4 + instVy * .6;\n\t\t\tconst alpha = this._positionSmoothing;\n\t\t\tconst smoothW = trk.box.width * (1 - alpha) + detBox.width * alpha;\n\t\t\tconst smoothH = trk.box.height * (1 - alpha) + detBox.height * alpha;\n\t\t\tconst smoothCenterX = trk.centerX * (1 - alpha) + detCenterX * alpha;\n\t\t\tconst smoothCenterY = trk.centerY * (1 - alpha) + detCenterY * alpha;\n\t\t\ttrk.centerX = smoothCenterX;\n\t\t\ttrk.centerY = smoothCenterY;\n\t\t\ttrk.score = det.score;\n\t\t\ttrk.timeSinceUpdate = 0;\n\t\t\ttrk.hits++;\n\t\t\ttrk.isCoasting = false;\n\t\t\tif (trk.hits >= this._minHits) trk.active = true;\n\t\t\ttrk.box = {\n\t\t\t\toriginX: smoothCenterX - smoothW / 2,\n\t\t\t\toriginY: smoothCenterY - smoothH / 2,\n\t\t\t\twidth: smoothW,\n\t\t\t\theight: smoothH,\n\t\t\t\tnormalizedX: detBox.normalizedX,\n\t\t\t\tnormalizedY: detBox.normalizedY,\n\t\t\t\tnormalizedWidth: detBox.normalizedWidth,\n\t\t\t\tnormalizedHeight: detBox.normalizedHeight\n\t\t\t};\n\t\t}\n\t\tfor (let d = 0; d < detections.length; d++) {\n\t\t\tif (matchedDetections.has(d)) continue;\n\t\t\tconst det = detections[d];\n\t\t\tconst detBox = det.boundingBox;\n\t\t\tconst centerX = detBox.originX + detBox.width / 2;\n\t\t\tconst centerY = detBox.originY + detBox.height / 2;\n\t\t\tthis._tracks.push({\n\t\t\t\ttrackId: this._nextTrackId++,\n\t\t\t\tcategory: det.category,\n\t\t\t\tscore: det.score,\n\t\t\t\tbox: detBox,\n\t\t\t\tcenterX,\n\t\t\t\tcenterY,\n\t\t\t\tvx: 0,\n\t\t\t\tvy: 0,\n\t\t\t\tage: 1,\n\t\t\t\thits: 1,\n\t\t\t\ttimeSinceUpdate: 0,\n\t\t\t\tactive: this._minHits <= 1,\n\t\t\t\tisCoasting: false\n\t\t\t});\n\t\t}\n\t\tthis._tracks = this._tracks.filter((t) => t.timeSinceUpdate <= this._maxMissedFrames);\n\t\treturn this._tracks.filter((t) => t.active).map((t) => {\n\t\t\tconst normW = t.box.normalizedWidth;\n\t\t\tconst normH = t.box.normalizedHeight;\n\t\t\tconst normCenterX = t.box.normalizedX + normW / 2;\n\t\t\tconst normCenterY = t.box.normalizedY + normH / 2;\n\t\t\tconst speed = Math.sqrt(t.vx * t.vx + t.vy * t.vy);\n\t\t\treturn {\n\t\t\t\ttrackId: t.trackId,\n\t\t\t\tcategory: t.category,\n\t\t\t\tscore: t.score,\n\t\t\t\tboundingBox: t.box,\n\t\t\t\tcenterX: t.centerX,\n\t\t\t\tcenterY: t.centerY,\n\t\t\t\tnormalizedCenterX: normCenterX,\n\t\t\t\tnormalizedCenterY: normCenterY,\n\t\t\t\tvelocity: {\n\t\t\t\t\tvx: t.vx,\n\t\t\t\t\tvy: t.vy\n\t\t\t\t},\n\t\t\t\tspeed,\n\t\t\t\tage: t.age,\n\t\t\t\thits: t.hits,\n\t\t\t\tactive: this._activeDuringCoast ? true : t.timeSinceUpdate === 0,\n\t\t\t\tisCoasting: t.isCoasting\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Tracks objects across a full sequence of frames with gap interpolation,\n\t* boundary extrapolation (ensuring frame 0 through end are tracked),\n\t* and temporal Gaussian smoothing.\n\t*\n\t* Guarantees zero flicker, zero drift, and frame-accurate stability across the entire video.\n\t*/\n\ttrackSequence(perFrameDetections, totalFrames, fps = 24) {\n\t\tthis.reset();\n\t\tconst dt = fps > 0 ? 1 / fps : .0416;\n\t\tconst trackHistory = /* @__PURE__ */ new Map();\n\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\tconst dets = perFrameDetections[f] ?? [];\n\t\t\tconst stepTracks = this.update(dets, f, fps);\n\t\t\tfor (const trk of stepTracks) {\n\t\t\t\tif (!trackHistory.has(trk.trackId)) trackHistory.set(trk.trackId, {\n\t\t\t\t\tcategory: trk.category,\n\t\t\t\t\tobservations: []\n\t\t\t\t});\n\t\t\t\tif (!trk.isCoasting) trackHistory.get(trk.trackId).observations.push({\n\t\t\t\t\tframe: f,\n\t\t\t\t\tbox: trk.boundingBox,\n\t\t\t\t\tscore: trk.score\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst fullTrajectories = /* @__PURE__ */ new Map();\n\t\tfor (const [trackId, info] of trackHistory.entries()) {\n\t\t\tconst obs = info.observations;\n\t\t\tif (obs.length === 0) continue;\n\t\t\tobs.sort((a, b) => a.frame - b.frame);\n\t\t\tconst frameData = new Array(totalFrames).fill(null);\n\t\t\tfor (const o of obs) frameData[o.frame] = {\n\t\t\t\tbox: o.box,\n\t\t\t\tscore: o.score\n\t\t\t};\n\t\t\tconst firstObs = obs[0];\n\t\t\tfor (let f = 0; f < firstObs.frame; f++) frameData[f] = {\n\t\t\t\tbox: { ...firstObs.box },\n\t\t\t\tscore: firstObs.score * .9\n\t\t\t};\n\t\t\tfor (let i = 0; i < obs.length - 1; i++) {\n\t\t\t\tconst startObs = obs[i];\n\t\t\t\tconst endObs = obs[i + 1];\n\t\t\t\tconst gap = endObs.frame - startObs.frame;\n\t\t\t\tif (gap <= 1) continue;\n\t\t\t\tfor (let f = startObs.frame + 1; f < endObs.frame; f++) {\n\t\t\t\t\tconst t = (f - startObs.frame) / gap;\n\t\t\t\t\tframeData[f] = {\n\t\t\t\t\t\tbox: {\n\t\t\t\t\t\t\toriginX: startObs.box.originX + (endObs.box.originX - startObs.box.originX) * t,\n\t\t\t\t\t\t\toriginY: startObs.box.originY + (endObs.box.originY - startObs.box.originY) * t,\n\t\t\t\t\t\t\twidth: startObs.box.width + (endObs.box.width - startObs.box.width) * t,\n\t\t\t\t\t\t\theight: startObs.box.height + (endObs.box.height - startObs.box.height) * t,\n\t\t\t\t\t\t\tnormalizedX: startObs.box.normalizedX + (endObs.box.normalizedX - startObs.box.normalizedX) * t,\n\t\t\t\t\t\t\tnormalizedY: startObs.box.normalizedY + (endObs.box.normalizedY - startObs.box.normalizedY) * t,\n\t\t\t\t\t\t\tnormalizedWidth: startObs.box.normalizedWidth + (endObs.box.normalizedWidth - startObs.box.normalizedWidth) * t,\n\t\t\t\t\t\t\tnormalizedHeight: startObs.box.normalizedHeight + (endObs.box.normalizedHeight - startObs.box.normalizedHeight) * t\n\t\t\t\t\t\t},\n\t\t\t\t\t\tscore: startObs.score * (1 - t) + endObs.score * t\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lastObs = obs[obs.length - 1];\n\t\t\tfor (let f = lastObs.frame + 1; f < totalFrames; f++) frameData[f] = {\n\t\t\t\tbox: { ...lastObs.box },\n\t\t\t\tscore: lastObs.score * .9\n\t\t\t};\n\t\t\tconst smoothedFrames = [];\n\t\t\tconst radius = 2;\n\t\t\tconst weights = [\n\t\t\t\t.06136,\n\t\t\t\t.24477,\n\t\t\t\t.38774,\n\t\t\t\t.24477,\n\t\t\t\t.06136\n\t\t\t];\n\t\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\t\tlet sumWeight = 0;\n\t\t\t\tlet sumX = 0;\n\t\t\t\tlet sumY = 0;\n\t\t\t\tlet sumW = 0;\n\t\t\t\tlet sumH = 0;\n\t\t\t\tlet sumNormX = 0;\n\t\t\t\tlet sumNormY = 0;\n\t\t\t\tlet sumNormW = 0;\n\t\t\t\tlet sumNormH = 0;\n\t\t\t\tlet sumScore = 0;\n\t\t\t\tfor (let r = -radius; r <= radius; r++) {\n\t\t\t\t\tconst pt = frameData[Math.max(0, Math.min(totalFrames - 1, f + r))];\n\t\t\t\t\tif (pt) {\n\t\t\t\t\t\tconst w = weights[r + radius];\n\t\t\t\t\t\tsumWeight += w;\n\t\t\t\t\t\tsumX += pt.box.originX * w;\n\t\t\t\t\t\tsumY += pt.box.originY * w;\n\t\t\t\t\t\tsumW += pt.box.width * w;\n\t\t\t\t\t\tsumH += pt.box.height * w;\n\t\t\t\t\t\tsumNormX += pt.box.normalizedX * w;\n\t\t\t\t\t\tsumNormY += pt.box.normalizedY * w;\n\t\t\t\t\t\tsumNormW += pt.box.normalizedWidth * w;\n\t\t\t\t\t\tsumNormH += pt.box.normalizedHeight * w;\n\t\t\t\t\t\tsumScore += pt.score * w;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst invW = sumWeight > 0 ? 1 / sumWeight : 1;\n\t\t\t\tsmoothedFrames.push({\n\t\t\t\t\tbox: {\n\t\t\t\t\t\toriginX: sumX * invW,\n\t\t\t\t\t\toriginY: sumY * invW,\n\t\t\t\t\t\twidth: sumW * invW,\n\t\t\t\t\t\theight: sumH * invW,\n\t\t\t\t\t\tnormalizedX: sumNormX * invW,\n\t\t\t\t\t\tnormalizedY: sumNormY * invW,\n\t\t\t\t\t\tnormalizedWidth: sumNormW * invW,\n\t\t\t\t\t\tnormalizedHeight: sumNormH * invW\n\t\t\t\t\t},\n\t\t\t\t\tscore: sumScore * invW\n\t\t\t\t});\n\t\t\t}\n\t\t\tfullTrajectories.set(trackId, {\n\t\t\t\tcategory: info.category,\n\t\t\t\tframes: smoothedFrames\n\t\t\t});\n\t\t}\n\t\tconst result = [];\n\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\tconst frameObjects = [];\n\t\t\tfor (const [trackId, traj] of fullTrajectories.entries()) {\n\t\t\t\tconst current = traj.frames[f];\n\t\t\t\tif (!current) continue;\n\t\t\t\tconst prev = traj.frames[Math.max(0, f - 1)] ?? current;\n\t\t\t\tconst next = traj.frames[Math.min(totalFrames - 1, f + 1)] ?? current;\n\t\t\t\tconst curCenterX = current.box.originX + current.box.width / 2;\n\t\t\t\tconst curCenterY = current.box.originY + current.box.height / 2;\n\t\t\t\tconst prevCenterX = prev.box.originX + prev.box.width / 2;\n\t\t\t\tconst prevCenterY = prev.box.originY + prev.box.height / 2;\n\t\t\t\tconst nextCenterX = next.box.originX + next.box.width / 2;\n\t\t\t\tconst nextCenterY = next.box.originY + next.box.height / 2;\n\t\t\t\tconst timeDelta = f === 0 || f === totalFrames - 1 ? dt : 2 * dt;\n\t\t\t\tconst vx = (nextCenterX - prevCenterX) / timeDelta;\n\t\t\t\tconst vy = (nextCenterY - prevCenterY) / timeDelta;\n\t\t\t\tconst speed = Math.sqrt(vx * vx + vy * vy);\n\t\t\t\tconst normW = current.box.normalizedWidth;\n\t\t\t\tconst normH = current.box.normalizedHeight;\n\t\t\t\tframeObjects.push({\n\t\t\t\t\ttrackId,\n\t\t\t\t\tcategory: traj.category,\n\t\t\t\t\tscore: current.score,\n\t\t\t\t\tboundingBox: current.box,\n\t\t\t\t\tcenterX: curCenterX,\n\t\t\t\t\tcenterY: curCenterY,\n\t\t\t\t\tnormalizedCenterX: current.box.normalizedX + normW / 2,\n\t\t\t\t\tnormalizedCenterY: current.box.normalizedY + normH / 2,\n\t\t\t\t\tvelocity: {\n\t\t\t\t\t\tvx,\n\t\t\t\t\t\tvy\n\t\t\t\t\t},\n\t\t\t\t\tspeed,\n\t\t\t\t\tage: f + 1,\n\t\t\t\t\thits: 10,\n\t\t\t\t\tactive: true,\n\t\t\t\t\tisCoasting: false\n\t\t\t\t});\n\t\t\t}\n\t\t\tresult.push(frameObjects);\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Resets all internal track state.\n\t*/\n\treset() {\n\t\tthis._tracks = [];\n\t\tthis._nextTrackId = 1;\n\t}\n};\n\n//#endregion\n//#region src/analysis/analyze-sequence.ts\nconst now = () => typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\nasync function analyzeSequence(frames, options) {\n\tconst { runner } = options;\n\tconst fps = options.fps ?? 24;\n\tconst tasks = options.tasks && options.tasks.length > 0 ? options.tasks : [\"detect\"];\n\tconst taskSet = new Set(tasks);\n\tconst categoryFilter = options.categories ? new Set(options.categories.map((c) => c.toLowerCase())) : null;\n\tconst includeMasks = options.includeMasks === true && taskSet.has(\"segment\");\n\tconst tracksObjects = taskSet.has(\"detect\") || taskSet.has(\"segment\");\n\tconst perFrameDetections = [];\n\tconst modelDownloads = {};\n\tconst maskCoverage = /* @__PURE__ */ new Map();\n\tlet inferenceMs = 0;\n\tlet frameIndex = 0;\n\tconst accepts = (category) => !categoryFilter || categoryFilter.has(category.toLowerCase());\n\tconst runTask = async (task, frame, fn) => {\n\t\tconst key = runner.modelKeyFor(task, frame.width / frame.height);\n\t\tconst wasReady = runner.downloadStatus.get(key) === \"ready\";\n\t\tconst start = now();\n\t\tconst result = await fn();\n\t\tconst elapsed = now() - start;\n\t\tinferenceMs += elapsed;\n\t\tif (!wasReady && !modelDownloads[key]) modelDownloads[key] = {\n\t\t\tbytes: VISION_MODELS[key].bytes,\n\t\t\tms: elapsed\n\t\t};\n\t\treturn result;\n\t};\n\tconst recordMasks = (masks$1) => {\n\t\tfor (const m of masks$1) {\n\t\t\tif (!accepts(m.category)) continue;\n\t\t\tconst entry = maskCoverage.get(m.category) ?? {\n\t\t\t\tsum: 0,\n\t\t\t\tcount: 0\n\t\t\t};\n\t\t\tentry.sum += m.coverage;\n\t\t\tentry.count++;\n\t\t\tmaskCoverage.set(m.category, entry);\n\t\t}\n\t};\n\tfor await (const frame of frames) {\n\t\tlet detections = [];\n\t\tif (includeMasks) {\n\t\t\tconst seg = await runTask(\"segment\", frame, () => runner.segment(frame));\n\t\t\trecordMasks(seg.masks);\n\t\t\tdetections = seg.detections;\n\t\t} else if (tracksObjects) detections = await runTask(\"detect\", frame, () => runner.detect(frame));\n\t\tif (taskSet.has(\"pose\")) await runTask(\"pose\", frame, () => runner.pose(frame));\n\t\tif (taskSet.has(\"matte\")) await runTask(\"matte\", frame, () => runner.matte(frame));\n\t\tperFrameDetections.push(categoryFilter ? detections.filter((d) => accepts(d.category)) : detections);\n\t\tframeIndex++;\n\t}\n\tconst totalFrames = frameIndex;\n\tconst trackedPerFrame = new TemporalObjectTracker({\n\t\tiouThreshold: options.iouThreshold ?? .25,\n\t\tmaxMissedFrames: options.maxMissedFrames ?? 15\n\t}).trackSequence(perFrameDetections, totalFrames, fps);\n\tconst pathStride = options.pathStride ?? Math.max(1, Math.ceil(totalFrames / 50));\n\tconst tracks = /* @__PURE__ */ new Map();\n\tconst classPresentFrames = /* @__PURE__ */ new Map();\n\tconst classMaxConfidence = /* @__PURE__ */ new Map();\n\tconst classTrackIds = /* @__PURE__ */ new Map();\n\tconst getOrCreate = (map, key, make) => {\n\t\tlet value = map.get(key);\n\t\tif (value === void 0) {\n\t\t\tvalue = make();\n\t\t\tmap.set(key, value);\n\t\t}\n\t\treturn value;\n\t};\n\tfor (let f = 0; f < totalFrames; f++) for (const obj of trackedPerFrame[f] ?? []) {\n\t\tif (!accepts(obj.category)) continue;\n\t\tlet acc = tracks.get(obj.trackId);\n\t\tif (!acc) {\n\t\t\tacc = {\n\t\t\t\tcategory: obj.category,\n\t\t\t\tfirstFrame: f,\n\t\t\t\tlastFrame: f,\n\t\t\t\tspeedSum: 0,\n\t\t\t\tspeedCount: 0,\n\t\t\t\tcenters: []\n\t\t\t};\n\t\t\ttracks.set(obj.trackId, acc);\n\t\t}\n\t\tacc.lastFrame = f;\n\t\tif (Number.isFinite(obj.speed)) {\n\t\t\tacc.speedSum += obj.speed;\n\t\t\tacc.speedCount++;\n\t\t}\n\t\tif ((f - acc.firstFrame) % pathStride === 0) acc.centers.push({\n\t\t\tframe: f,\n\t\t\tx: obj.centerX,\n\t\t\ty: obj.centerY\n\t\t});\n\t\tgetOrCreate(classPresentFrames, obj.category, () => /* @__PURE__ */ new Set()).add(f);\n\t\tclassMaxConfidence.set(obj.category, Math.max(classMaxConfidence.get(obj.category) ?? 0, obj.score));\n\t\tgetOrCreate(classTrackIds, obj.category, () => /* @__PURE__ */ new Set()).add(obj.trackId);\n\t}\n\tconst trackSummaries = Array.from(tracks.entries()).map(([trackId, acc]) => ({\n\t\ttrackId,\n\t\tcategory: acc.category,\n\t\tframes: [acc.firstFrame, acc.lastFrame],\n\t\tspeedMeanPxS: acc.speedCount > 0 ? acc.speedSum / acc.speedCount : 0,\n\t\tcenterPath: acc.centers.map((c) => [c.x, c.y])\n\t})).sort((a, b) => a.trackId - b.trackId);\n\tconst classes = {};\n\tfor (const [category, frameSet] of classPresentFrames) classes[category] = {\n\t\tframesPresent: frameSet.size,\n\t\ttotalFrames,\n\t\tmaxConfidence: classMaxConfidence.get(category) ?? 0,\n\t\ttracks: classTrackIds.get(category)?.size ?? 0\n\t};\n\tconst masks = {};\n\tfor (const [category, entry] of maskCoverage) masks[category] = { meanCoverage: entry.count > 0 ? entry.sum / entry.count : 0 };\n\treturn {\n\t\tsource: options.source ?? \"frames\",\n\t\ttotalFrames,\n\t\tfps,\n\t\tdurationSec: fps > 0 ? totalFrames / fps : 0,\n\t\ttasks: Array.from(taskSet),\n\t\tmodelDownloads,\n\t\tinferenceMs,\n\t\ttrackCount: trackSummaries.length,\n\t\tclasses,\n\t\ttracks: trackSummaries,\n\t\tmasks\n\t};\n}\n\n//#endregion\n//#region src/decode/preprocess.ts\nconst IMAGENET_BGR_MEAN = [\n\t103.53,\n\t116.28,\n\t123.675\n];\nconst IMAGENET_BGR_STD = [\n\t57.375,\n\t57.12,\n\t58.395\n];\n/** Per-family normalization; the input size always comes from the model's registry entry. */\nconst PREPROCESS_BY_FAMILY = {\n\t\"rtmdet-ins\": {\n\t\tfit: \"topLeft\",\n\t\tchannels: \"bgr\",\n\t\tmean: IMAGENET_BGR_MEAN,\n\t\tstd: IMAGENET_BGR_STD,\n\t\tpadValue: 114\n\t},\n\trtmo: {\n\t\tfit: \"center\",\n\t\tchannels: \"bgr\",\n\t\tmean: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tstd: [\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t],\n\t\tpadValue: 114\n\t},\n\tselfie: {\n\t\tfit: \"stretch\",\n\t\tchannels: \"rgb\",\n\t\tmean: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tstd: [\n\t\t\t255,\n\t\t\t255,\n\t\t\t255\n\t\t],\n\t\tpadValue: 0\n\t}\n};\nfunction preprocessSpec(family, input) {\n\treturn {\n\t\t...PREPROCESS_BY_FAMILY[family],\n\t\twidth: input[0],\n\t\theight: input[1]\n\t};\n}\nfunction computeInputTransform(srcW, srcH, spec) {\n\tif (spec.fit === \"stretch\") return {\n\t\tscaleX: spec.width / srcW,\n\t\tscaleY: spec.height / srcH,\n\t\toffsetX: 0,\n\t\toffsetY: 0,\n\t\tinputWidth: spec.width,\n\t\tinputHeight: spec.height\n\t};\n\tconst scale = Math.min(spec.width / srcW, spec.height / srcH);\n\tconst contentW = Math.round(srcW * scale);\n\tconst contentH = Math.round(srcH * scale);\n\tconst center = spec.fit === \"center\";\n\treturn {\n\t\tscaleX: scale,\n\t\tscaleY: scale,\n\t\toffsetX: center ? (spec.width - contentW) / 2 : 0,\n\t\toffsetY: center ? (spec.height - contentH) / 2 : 0,\n\t\tinputWidth: spec.width,\n\t\tinputHeight: spec.height\n\t};\n}\n/** Model-input point → source pixel point. */\nfunction toSourcePoint(x, y, t) {\n\treturn {\n\t\tx: (x - t.offsetX) / t.scaleX,\n\t\ty: (y - t.offsetY) / t.scaleY\n\t};\n}\n/**\n* Resizes RGBA → NCHW float32 `[1, 3, height, width]` with bilinear sampling, padding,\n* channel reordering and normalization per `spec`. Reuses `out` when large enough\n* (hot-path frame loop).\n*/\nfunction imageToTensor(image, spec, out) {\n\tconst { width: srcW, height: srcH, data: src } = image;\n\tconst { width: W, height: H } = spec;\n\tconst transform = computeInputTransform(srcW, srcH, spec);\n\tconst { scaleX, scaleY, offsetX, offsetY } = transform;\n\tconst plane = W * H;\n\tif (!out || out.length < 3 * plane) out = new Float32Array(3 * plane);\n\tconst order = spec.channels === \"bgr\" ? [\n\t\t2,\n\t\t1,\n\t\t0\n\t] : [\n\t\t0,\n\t\t1,\n\t\t2\n\t];\n\tconst [m0, m1, m2] = spec.mean;\n\tconst inv0 = 1 / spec.std[0];\n\tconst inv1 = 1 / spec.std[1];\n\tconst inv2 = 1 / spec.std[2];\n\tconst pad0 = (spec.padValue - m0) * inv0;\n\tconst pad1 = (spec.padValue - m1) * inv1;\n\tconst pad2 = (spec.padValue - m2) * inv2;\n\tconst [c0, c1, c2] = order;\n\tconst x0 = Math.ceil(offsetX);\n\tconst y0 = Math.ceil(offsetY);\n\tconst x1 = Math.min(W, Math.floor(offsetX + srcW * scaleX)) - 1;\n\tconst y1 = Math.min(H, Math.floor(offsetY + srcH * scaleY)) - 1;\n\tfor (let y = 0; y < H; y++) {\n\t\tconst rowBase = y * W;\n\t\tconst paddedRow = y < y0 || y > y1;\n\t\tconst sy = Math.max(0, (y + .5 - offsetY) / scaleY - .5);\n\t\tconst iy0 = Math.min(srcH - 1, Math.floor(sy));\n\t\tconst iy1 = Math.min(srcH - 1, iy0 + 1);\n\t\tconst fy = sy - iy0;\n\t\tfor (let x = 0; x < W; x++) {\n\t\t\tconst o = rowBase + x;\n\t\t\tif (paddedRow || x < x0 || x > x1) {\n\t\t\t\tout[o] = pad0;\n\t\t\t\tout[plane + o] = pad1;\n\t\t\t\tout[2 * plane + o] = pad2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sx = Math.max(0, (x + .5 - offsetX) / scaleX - .5);\n\t\t\tconst ix0 = Math.min(srcW - 1, Math.floor(sx));\n\t\t\tconst ix1 = Math.min(srcW - 1, ix0 + 1);\n\t\t\tconst fx = sx - ix0;\n\t\t\tconst i00 = (iy0 * srcW + ix0) * 4;\n\t\t\tconst i10 = (iy0 * srcW + ix1) * 4;\n\t\t\tconst i01 = (iy1 * srcW + ix0) * 4;\n\t\t\tconst i11 = (iy1 * srcW + ix1) * 4;\n\t\t\tconst w00 = (1 - fx) * (1 - fy);\n\t\t\tconst w10 = fx * (1 - fy);\n\t\t\tconst w01 = (1 - fx) * fy;\n\t\t\tconst w11 = fx * fy;\n\t\t\tout[o] = (src[i00 + c0] * w00 + src[i10 + c0] * w10 + src[i01 + c0] * w01 + src[i11 + c0] * w11 - m0) * inv0;\n\t\t\tout[plane + o] = (src[i00 + c1] * w00 + src[i10 + c1] * w10 + src[i01 + c1] * w01 + src[i11 + c1] * w11 - m1) * inv1;\n\t\t\tout[2 * plane + o] = (src[i00 + c2] * w00 + src[i10 + c2] * w10 + src[i01 + c2] * w01 + src[i11 + c2] * w11 - m2) * inv2;\n\t\t}\n\t}\n\treturn {\n\t\ttensor: out,\n\t\ttransform\n\t};\n}\n\n//#endregion\n//#region src/decode/rtmdet-ins.ts\n/** Source pixels a mask may extend past its box (instance masks are not box-clipped). */\nconst MASK_BOX_PAD_PX = 8;\nfunction decodeRtmdetIns(out, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh, transform } = opts;\n\tconst classFilter = opts.classes ? new Set(opts.classes.map((c) => c.toLowerCase())) : null;\n\tconst kept = [];\n\tfor (let i = 0; i < out.count; i++) {\n\t\tconst score = out.dets[i * 5 + 4];\n\t\tif (!(score >= opts.confidence)) continue;\n\t\tconst classIndex = Number(out.labels[i]);\n\t\tconst category = opts.classNames[classIndex] ?? `class_${classIndex}`;\n\t\tif (classFilter && !classFilter.has(category.toLowerCase())) continue;\n\t\tconst p0 = toSourcePoint(out.dets[i * 5], out.dets[i * 5 + 1], transform);\n\t\tconst p1 = toSourcePoint(out.dets[i * 5 + 2], out.dets[i * 5 + 3], transform);\n\t\tconst x0 = clamp$1(p0.x, 0, sw);\n\t\tconst y0 = clamp$1(p0.y, 0, sh);\n\t\tconst width = clamp$1(p1.x, 0, sw) - x0;\n\t\tconst height = clamp$1(p1.y, 0, sh) - y0;\n\t\tif (width <= 0 || height <= 0) continue;\n\t\tkept.push({\n\t\t\tindex: i,\n\t\t\tdetection: {\n\t\t\t\tcategory,\n\t\t\t\tscore,\n\t\t\t\tboundingBox: {\n\t\t\t\t\toriginX: x0,\n\t\t\t\t\toriginY: y0,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tnormalizedX: x0 / sw,\n\t\t\t\t\tnormalizedY: y0 / sh,\n\t\t\t\t\tnormalizedWidth: width / sw,\n\t\t\t\t\tnormalizedHeight: height / sh\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tkept.sort((a, b) => b.detection.score - a.detection.score);\n\tconst detections = kept.map((k) => k.detection);\n\tconst masks = [];\n\tif (!out.masks) return {\n\t\tdetections,\n\t\tmasks\n\t};\n\tconst alphaOf = probabilityToAlpha(opts.maskThreshold ?? .5, opts.featherRadius ?? .05);\n\tconst { maskWidth: mw, maskHeight: mh } = out;\n\tconst plane = mw * mh;\n\tconst gx = mw / transform.inputWidth;\n\tconst gy = mh / transform.inputHeight;\n\tfor (let d = 0; d < kept.length; d++) {\n\t\tconst { index, detection } = kept[d];\n\t\tconst box = detection.boundingBox;\n\t\tconst base = index * plane;\n\t\tconst bx0 = Math.max(0, Math.floor(box.originX) - MASK_BOX_PAD_PX);\n\t\tconst by0 = Math.max(0, Math.floor(box.originY) - MASK_BOX_PAD_PX);\n\t\tconst bx1 = Math.min(sw - 1, Math.ceil(box.originX + box.width) + MASK_BOX_PAD_PX);\n\t\tconst by1 = Math.min(sh - 1, Math.ceil(box.originY + box.height) + MASK_BOX_PAD_PX);\n\t\tconst mask = new Uint8Array(sw * sh);\n\t\tlet area = 0;\n\t\tfor (let sy = by0; sy <= by1; sy++) {\n\t\t\tconst my = ((sy + .5) * transform.scaleY + transform.offsetY) * gy - .5;\n\t\t\tconst my0 = clamp$1(Math.floor(my), 0, mh - 1);\n\t\t\tconst my1 = Math.min(mh - 1, my0 + 1);\n\t\t\tconst fy = clamp$1(my - my0, 0, 1);\n\t\t\tconst row = sy * sw;\n\t\t\tfor (let sx = bx0; sx <= bx1; sx++) {\n\t\t\t\tconst mx = ((sx + .5) * transform.scaleX + transform.offsetX) * gx - .5;\n\t\t\t\tconst mx0 = clamp$1(Math.floor(mx), 0, mw - 1);\n\t\t\t\tconst mx1 = Math.min(mw - 1, mx0 + 1);\n\t\t\t\tconst fx = clamp$1(mx - mx0, 0, 1);\n\t\t\t\tconst alpha = alphaOf(out.masks[base + my0 * mw + mx0] * (1 - fx) * (1 - fy) + out.masks[base + my0 * mw + mx1] * fx * (1 - fy) + out.masks[base + my1 * mw + mx0] * (1 - fx) * fy + out.masks[base + my1 * mw + mx1] * fx * fy);\n\t\t\t\tif (alpha > 0) {\n\t\t\t\t\tmask[row + sx] = alpha;\n\t\t\t\t\tarea += alpha / 255;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tarea = Math.round(area);\n\t\tif (area === 0) continue;\n\t\tmasks.push({\n\t\t\tcategory: detection.category,\n\t\t\tmask,\n\t\t\twidth: sw,\n\t\t\theight: sh,\n\t\t\tarea,\n\t\t\tcoverage: area / (sw * sh),\n\t\t\tdetectionIndex: d\n\t\t});\n\t}\n\treturn {\n\t\tdetections,\n\t\tmasks\n\t};\n}\n/**\n* Probability → 0..255 alpha. A hard threshold when `feather` is 0, otherwise a linear ramp\n* across `[threshold − feather, threshold + feather]` for anti-aliased edges.\n*/\nfunction probabilityToAlpha(threshold, feather) {\n\tif (feather <= 0) return (p) => p > threshold ? 255 : 0;\n\tconst lo = threshold - feather;\n\tconst inv = 255 / (2 * feather);\n\treturn (p) => p <= lo ? 0 : p >= threshold + feather ? 255 : (p - lo) * inv;\n}\nfunction clamp$1(v, lo, hi) {\n\treturn v < lo ? lo : v > hi ? hi : v;\n}\n\n//#endregion\n//#region src/decode/rtmo.ts\nconst COCO17_KEYPOINT_COUNT = 17;\n/** Keypoint visibility at which a joint counts as seen. */\nconst VISIBLE = .3;\nfunction decodeRtmo(out, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh, transform } = opts;\n\tconst stride = out.keypointStride;\n\tconst people = [];\n\tfor (let i = 0; i < out.count; i++) {\n\t\tconst score = out.dets[i * 5 + 4];\n\t\tif (!(score >= opts.confidence)) continue;\n\t\tconst p0 = toSourcePoint(out.dets[i * 5], out.dets[i * 5 + 1], transform);\n\t\tconst p1 = toSourcePoint(out.dets[i * 5 + 2], out.dets[i * 5 + 3], transform);\n\t\tconst x0 = clamp(p0.x, 0, sw);\n\t\tconst y0 = clamp(p0.y, 0, sh);\n\t\tconst width = clamp(p1.x, 0, sw) - x0;\n\t\tconst height = clamp(p1.y, 0, sh) - y0;\n\t\tif (width <= 0 || height <= 0) continue;\n\t\tconst keypoints = [];\n\t\tconst base = i * COCO17_KEYPOINT_COUNT * stride;\n\t\tfor (let k = 0; k < COCO17_KEYPOINT_COUNT; k++) {\n\t\t\tconst o = base + k * stride;\n\t\t\tconst p = toSourcePoint(out.keypoints[o], out.keypoints[o + 1], transform);\n\t\t\tkeypoints.push({\n\t\t\t\tx: clamp(p.x, 0, sw),\n\t\t\t\ty: clamp(p.y, 0, sh),\n\t\t\t\tvisibility: clamp(out.keypoints[o + 2], 0, 1)\n\t\t\t});\n\t\t}\n\t\tlet visible = 0;\n\t\tfor (const k of keypoints) if (k.visibility >= VISIBLE) visible++;\n\t\tif (visible < (opts.minVisibleKeypoints ?? 3)) continue;\n\t\tpeople.push({\n\t\t\tscore,\n\t\t\tboundingBox: {\n\t\t\t\toriginX: x0,\n\t\t\t\toriginY: y0,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tnormalizedX: x0 / sw,\n\t\t\t\tnormalizedY: y0 / sh,\n\t\t\t\tnormalizedWidth: width / sw,\n\t\t\t\tnormalizedHeight: height / sh\n\t\t\t},\n\t\t\tkeypoints\n\t\t});\n\t}\n\tpeople.sort((a, b) => b.score - a.score);\n\tconst iou = opts.iouThreshold ?? .6;\n\tconst kept = [];\n\tfor (const p of people) if (!kept.some((k) => isDuplicate(k, p, iou))) kept.push(p);\n\treturn { people: kept };\n}\nfunction clamp(v, lo, hi) {\n\treturn v < lo ? lo : v > hi ? hi : v;\n}\n/**\n* Same person twice: boxes overlap above `iou`, or the joints both detections can see sit\n* within 10% of the stronger detection's box size of each other (boxes may differ when one\n* of them also covers a flowing garment or a shadow).\n*/\nfunction isDuplicate(a, b, iou) {\n\tif (computeIoU(a.boundingBox, b.boundingBox) > iou) return true;\n\tconst scale = Math.sqrt(a.boundingBox.width * a.boundingBox.height);\n\tlet sum = 0;\n\tlet n = 0;\n\tfor (let k = 0; k < a.keypoints.length; k++) {\n\t\tconst ka = a.keypoints[k];\n\t\tconst kb = b.keypoints[k];\n\t\tif (ka.visibility < VISIBLE || kb.visibility < VISIBLE) continue;\n\t\tsum += Math.hypot(ka.x - kb.x, ka.y - kb.y);\n\t\tn++;\n\t}\n\treturn n >= 3 && sum / n < .1 * scale;\n}\n\n//#endregion\n//#region src/decode/selfie.ts\nfunction decodeSelfie(alphas, matteWidth, matteHeight, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh } = opts;\n\tconst alphaOf = probabilityToAlpha(opts.maskThreshold ?? .5, opts.featherRadius ?? .2);\n\tconst mask = new Uint8Array(sw * sh);\n\tconst kx = matteWidth / sw;\n\tconst ky = matteHeight / sh;\n\tlet sum = 0;\n\tfor (let y = 0; y < sh; y++) {\n\t\tconst my = Math.max(0, (y + .5) * ky - .5);\n\t\tconst my0 = Math.min(matteHeight - 1, Math.floor(my));\n\t\tconst my1 = Math.min(matteHeight - 1, my0 + 1);\n\t\tconst fy = my - my0;\n\t\tfor (let x = 0; x < sw; x++) {\n\t\t\tconst mx = Math.max(0, (x + .5) * kx - .5);\n\t\t\tconst mx0 = Math.min(matteWidth - 1, Math.floor(mx));\n\t\t\tconst mx1 = Math.min(matteWidth - 1, mx0 + 1);\n\t\t\tconst fx = mx - mx0;\n\t\t\tconst a = alphaOf(alphas[my0 * matteWidth + mx0] * (1 - fx) * (1 - fy) + alphas[my0 * matteWidth + mx1] * fx * (1 - fy) + alphas[my1 * matteWidth + mx0] * (1 - fx) * fy + alphas[my1 * matteWidth + mx1] * fx * fy);\n\t\t\tmask[y * sw + x] = a;\n\t\t\tsum += a;\n\t\t}\n\t}\n\treturn {\n\t\tmask,\n\t\twidth: sw,\n\t\theight: sh,\n\t\tcoverage: sw * sh > 0 ? sum / (255 * sw * sh) : 0\n\t};\n}\n\n//#endregion\n//#region src/pose/keypoints.ts\n/** COCO-17 keypoint indices (RTMO output order). */\nconst COCO17_KEYPOINTS = {\n\tNOSE: 0,\n\tLEFT_EYE: 1,\n\tRIGHT_EYE: 2,\n\tLEFT_EAR: 3,\n\tRIGHT_EAR: 4,\n\tLEFT_SHOULDER: 5,\n\tRIGHT_SHOULDER: 6,\n\tLEFT_ELBOW: 7,\n\tRIGHT_ELBOW: 8,\n\tLEFT_WRIST: 9,\n\tRIGHT_WRIST: 10,\n\tLEFT_HIP: 11,\n\tRIGHT_HIP: 12,\n\tLEFT_KNEE: 13,\n\tRIGHT_KNEE: 14,\n\tLEFT_ANKLE: 15,\n\tRIGHT_ANKLE: 16\n};\nconst COCO17_KEYPOINT_NAMES = [\n\t\"nose\",\n\t\"leftEye\",\n\t\"rightEye\",\n\t\"leftEar\",\n\t\"rightEar\",\n\t\"leftShoulder\",\n\t\"rightShoulder\",\n\t\"leftElbow\",\n\t\"rightElbow\",\n\t\"leftWrist\",\n\t\"rightWrist\",\n\t\"leftHip\",\n\t\"rightHip\",\n\t\"leftKnee\",\n\t\"rightKnee\",\n\t\"leftAnkle\",\n\t\"rightAnkle\"\n];\n/** COCO-17 skeleton bones for the WebGPU skeleton renderer (indices above). */\nconst COCO17_BONES = [\n\t{\n\t\tfrom: COCO17_KEYPOINTS.NOSE,\n\t\tto: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.NOSE,\n\t\tto: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.LEFT_ELBOW,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t.333,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_ELBOW,\n\t\tto: COCO17_KEYPOINTS.LEFT_WRIST,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t.667,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_ELBOW,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_ELBOW,\n\t\tto: COCO17_KEYPOINTS.RIGHT_WRIST,\n\t\tcolor: [\n\t\t\t.667,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tcolor: [\n\t\t\t.333,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tto: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t.333,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tto: COCO17_KEYPOINTS.LEFT_KNEE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t.667,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_KNEE,\n\t\tto: COCO17_KEYPOINTS.LEFT_ANKLE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tto: COCO17_KEYPOINTS.RIGHT_KNEE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t.667,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_KNEE,\n\t\tto: COCO17_KEYPOINTS.RIGHT_ANKLE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t.333,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t}\n];\n\n//#endregion\n//#region src/gpu/pose-skeleton-renderer.ts\n/**\n* WebGPU skeleton renderer for pose results.\n*\n* Rasterizes the primary person's COCO-17 keypoints into an OpenPose-style\n* conditioning texture natively in VRAM, using the COCO-17 bone set.\n*/\nvar PoseSkeletonRenderer = class {\n\tpipeline;\n\tconstructor(device) {\n\t\tthis.pipeline = new PoseSkeletonComputePipeline(device);\n\t}\n\trenderToTexture(keypoints, options, bones = COCO17_BONES) {\n\t\treturn this.pipeline.execute(keypoints, options, bones);\n\t}\n\tdestroy() {\n\t\tthis.pipeline.destroy();\n\t}\n};\n\n//#endregion\n//#region src/gpu/segmentation-texture-pool.ts\nvar SegmentationTexturePool = class {\n\tdevice;\n\tpool = /* @__PURE__ */ new Map();\n\tconstructor(device) {\n\t\tthis.device = device;\n\t}\n\tgetOrCreateTexture(key, options) {\n\t\tconst existing = this.pool.get(key);\n\t\tif (existing && existing.width === options.width && existing.height === options.height) return existing;\n\t\tif (existing) existing.destroy();\n\t\tconst format = options.format ?? \"rgba8unorm\";\n\t\tconst texture = this.device.createTexture({\n\t\t\tlabel: options.label ?? `vision_segmentation_${key}`,\n\t\t\tsize: [\n\t\t\t\toptions.width,\n\t\t\t\toptions.height,\n\t\t\t\t1\n\t\t\t],\n\t\t\tformat,\n\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT\n\t\t});\n\t\tthis.pool.set(key, texture);\n\t\treturn texture;\n\t}\n\tuploadMask(key, maskData, width, height) {\n\t\tconst isRgba = maskData.length >= width * height * 4;\n\t\tconst format = isRgba ? \"rgba8unorm\" : \"r8unorm\";\n\t\tconst texture = this.getOrCreateTexture(key, {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tformat\n\t\t});\n\t\tlet uploadBytes;\n\t\tif (maskData instanceof Float32Array) {\n\t\t\tuploadBytes = new Uint8Array(maskData.length);\n\t\t\tfor (let i = 0; i < maskData.length; i++) uploadBytes[i] = Math.round(Math.max(0, Math.min(1, maskData[i])) * 255);\n\t\t} else uploadBytes = maskData;\n\t\tconst bytesPerRow = width * (isRgba ? 4 : 1);\n\t\tconst alignedBytesPerRow = Math.ceil(bytesPerRow / 256) * 256;\n\t\tlet finalBuffer;\n\t\tif (alignedBytesPerRow === bytesPerRow) finalBuffer = uploadBytes;\n\t\telse {\n\t\t\tfinalBuffer = new Uint8Array(alignedBytesPerRow * height);\n\t\t\tfor (let y = 0; y < height; y++) finalBuffer.set(uploadBytes.subarray(y * bytesPerRow, (y + 1) * bytesPerRow), y * alignedBytesPerRow);\n\t\t}\n\t\tthis.device.queue.writeTexture({ texture }, finalBuffer.buffer, {\n\t\t\toffset: finalBuffer.byteOffset,\n\t\t\tbytesPerRow: alignedBytesPerRow,\n\t\t\trowsPerImage: height\n\t\t}, {\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\treturn texture;\n\t}\n\tdestroy() {\n\t\tfor (const tex of this.pool.values()) tex.destroy();\n\t\tthis.pool.clear();\n\t}\n};\n\n//#endregion\n//#region src/model/model-store.ts\n/**\n* Resolves the default model cache directory:\n* 1. `FRAMEFIELDS_MODELS_DIR`\n* 2. `~/.cache/framefields/models`\n*/\nfunction getDefaultModelsDir() {\n\tif (process.env.FRAMEFIELDS_MODELS_DIR) return resolve(process.env.FRAMEFIELDS_MODELS_DIR);\n\treturn resolve(homedir(), \".cache/framefields/models\");\n}\n/**\n* Lazy model store. The constructor performs ZERO I/O; the only entry that can hit the\n* network is `ensure(key)`, called by an inference function the first time it runs.\n* Concurrent callers of the same key share a single in-flight download (promise dedupe),\n* downloads are written atomically (temp + rename), and verified files on disk are reused\n* across processes.\n*/\nvar VisionModelStore = class {\n\t_modelsDir;\n\t_baseUrl;\n\t_timeoutMs;\n\t_retries;\n\t_retryDelayMs;\n\t_verify;\n\t_fetch;\n\t_onProgress;\n\t_inflight = /* @__PURE__ */ new Map();\n\t_buffers = /* @__PURE__ */ new Map();\n\t_status = /* @__PURE__ */ new Map();\n\tconstructor(options = {}) {\n\t\tthis._modelsDir = options.modelsDir ? resolve(options.modelsDir) : getDefaultModelsDir();\n\t\tthis._baseUrl = options.baseUrl ?? process.env.FRAMEFIELDS_MODELS_BASE_URL ?? void 0;\n\t\tthis._timeoutMs = options.timeoutMs;\n\t\tthis._retries = Math.max(0, options.retries ?? 2);\n\t\tthis._retryDelayMs = options.retryDelayMs ?? 1e3;\n\t\tthis._verify = options.verify !== false;\n\t\tthis._fetch = options.fetchImpl ?? globalThis.fetch;\n\t\tthis._onProgress = options.onProgress;\n\t}\n\tget modelsDir() {\n\t\treturn this._modelsDir;\n\t}\n\tpathFor(key) {\n\t\treturn join(this._modelsDir, VISION_MODELS[key].filename);\n\t}\n\tdescriptor(key) {\n\t\treturn VISION_MODELS[key];\n\t}\n\t/** The URL `ensure(key)` downloads from (mirror when `baseUrl` is set). */\n\turlFor(key) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (!this._baseUrl) return desc.url;\n\t\treturn `${this._baseUrl.replace(/\\/+$/, \"\")}/${desc.filename}`;\n\t}\n\t/** True when a complete cached file exists (exact registry size when verifying). */\n\thas(key) {\n\t\tconst targetPath = this.pathFor(key);\n\t\tif (!existsSync(targetPath)) return false;\n\t\ttry {\n\t\t\tconst size = statSync(targetPath).size;\n\t\t\treturn this._verify ? size === VISION_MODELS[key].bytes : size > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\t/** Drops a cached model (file + memory) so the next `ensure` re-downloads it. */\n\tasync evict(key) {\n\t\tthis._buffers.delete(key);\n\t\tthis._status.set(key, \"pending\");\n\t\tawait unlink(this.pathFor(key)).catch(() => void 0);\n\t}\n\tstatus(key) {\n\t\treturn this._status.get(key) ?? \"pending\";\n\t}\n\t/** Snapshot of every tracked model's status (empty until anything is fetched). */\n\tstatuses() {\n\t\treturn new Map(this._status);\n\t}\n\t/** True when the model is resident in memory (loaded or downloaded this process). */\n\tisLoaded(key) {\n\t\treturn this._buffers.has(key);\n\t}\n\t/**\n\t* THE only download entry point. Returns the model bytes from memory (cached),\n\t* loading from disk or fetching from the registry URL as needed.\n\t*/\n\tasync ensure(key) {\n\t\tconst inMemory = this._buffers.get(key);\n\t\tif (inMemory) return inMemory;\n\t\tconst inflight = this._inflight.get(key);\n\t\tif (inflight) return inflight;\n\t\tconst promise = this.load(key).finally(() => this._inflight.delete(key));\n\t\tthis._inflight.set(key, promise);\n\t\treturn promise;\n\t}\n\t/** Explicit warm-up — fetch multiple models ahead of use (agents, renderers). */\n\tasync preload(keys) {\n\t\tawait Promise.all([...new Set(keys)].map((key) => this.ensure(key)));\n\t}\n\tasync load(key) {\n\t\tconst targetPath = this.pathFor(key);\n\t\tif (this.has(key)) {\n\t\t\tthis._status.set(key, \"ready\");\n\t\t\treturn this.readBuffer(key, targetPath);\n\t\t}\n\t\tconst downloadUrl = this.urlFor(key);\n\t\tthis._status.set(key, \"downloading\");\n\t\tif (!existsSync(dirname(targetPath))) mkdirSync(dirname(targetPath), { recursive: true });\n\t\tconst tempPath = `${targetPath}.tmp.${Date.now()}`;\n\t\ttry {\n\t\t\tconst { buffer, totalBytes } = await this.download(key, downloadUrl);\n\t\t\tif (buffer.byteLength === 0) throw new Error(`Downloaded vision model '${key}' is empty (0 bytes).`);\n\t\t\tif (this._verify) this.verifyBytes(key, buffer, downloadUrl);\n\t\t\tthis._onProgress?.(key, buffer.byteLength, totalBytes || buffer.byteLength);\n\t\t\tawait writeFile(tempPath, buffer);\n\t\t\tawait rename(tempPath, targetPath);\n\t\t\tthis._buffers.set(key, buffer);\n\t\t\tthis._status.set(key, \"ready\");\n\t\t\treturn buffer;\n\t\t} catch (error) {\n\t\t\tthis._status.set(key, \"error\");\n\t\t\tif (existsSync(tempPath)) await unlink(tempPath).catch(() => void 0);\n\t\t\tthrow error;\n\t\t}\n\t}\n\t/** Fetches with retries on transient failures (network errors, HTTP 429/5xx). */\n\tasync download(key, url) {\n\t\tfor (let attempt = 0;; attempt++) {\n\t\t\tlet transient;\n\t\t\ttry {\n\t\t\t\tconst response = await this._fetch(url, { signal: this._timeoutMs ? AbortSignal.timeout(this._timeoutMs) : void 0 });\n\t\t\t\tif (response.ok) {\n\t\t\t\t\tconst totalBytes = Number(response.headers.get(\"content-length\") ?? 0);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbuffer: new Uint8Array(await response.arrayBuffer()),\n\t\t\t\t\t\ttotalBytes\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst error = /* @__PURE__ */ new Error(`Failed to download vision model '${key}' from ${url}: HTTP ${response.status} ${response.statusText}`);\n\t\t\t\tif (response.status !== 429 && response.status < 500) throw error;\n\t\t\t\ttransient = error;\n\t\t\t} catch (error) {\n\t\t\t\tif (!(error instanceof TypeError)) throw error;\n\t\t\t\ttransient = error;\n\t\t\t}\n\t\t\tif (attempt >= this._retries) throw new Error(`Failed to download vision model '${key}' from ${url} after ${attempt + 1} attempts: ${String(transient)}`, { cause: transient });\n\t\t\tawait new Promise((r) => setTimeout(r, this._retryDelayMs * 2 ** attempt));\n\t\t}\n\t}\n\tverifyBytes(key, buffer, url) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (buffer.byteLength !== desc.bytes) throw new Error(`Vision model '${key}' from ${url} is ${buffer.byteLength} bytes, expected ${desc.bytes}.`);\n\t\tconst digest = createHash(\"sha256\").update(buffer).digest(\"hex\");\n\t\tif (digest !== desc.sha256) throw new Error(`Vision model '${key}' from ${url} failed its SHA-256 check (got ${digest}, expected ${desc.sha256}).`);\n\t}\n\tasync readBuffer(key, targetPath) {\n\t\tconst fileBuffer = await readFile(targetPath);\n\t\tconst buffer = new Uint8Array(fileBuffer.buffer, fileBuffer.byteOffset, fileBuffer.byteLength);\n\t\tthis._buffers.set(key, buffer);\n\t\treturn buffer;\n\t}\n\t/** Drops in-memory buffers (model stays on disk for the next run). */\n\tclearMemoryCache() {\n\t\tthis._buffers.clear();\n\t}\n};\n\n//#endregion\n//#region src/runner/canonical-baselines.ts\n/** Neutral fallbacks so signal evaluators always have a well-formed frame to read. */\nfunction createNeutralObjectResult() {\n\treturn {\n\t\tobjects: [],\n\t\trawDetections: []\n\t};\n}\nfunction createNeutralPoseResult() {\n\treturn { people: [] };\n}\n/** 17 neutral COCO keypoints at frame center — used by pose signals when nobody is detected. */\nfunction createNeutralLandmarks() {\n\tconst landmarks = [];\n\tfor (let i = 0; i < 17; i++) landmarks.push({\n\t\tx: .5,\n\t\ty: .5,\n\t\tz: 0,\n\t\tvisibility: 0\n\t});\n\treturn landmarks;\n}\n\n//#endregion\n//#region src/runtime/webgpu-provider.ts\nconst ORT_WEB_SPECIFIER = \"onnxruntime-web\";\nconst defaultLoader = () => import(\n\t/* @vite-ignore */\n\tORT_WEB_SPECIFIER\n);\nvar WebGPUProvider = class {\n\tkind = \"webgpu\";\n\t_loader;\n\t_providers;\n\t_wasmFallback;\n\t_ortPromise;\n\tconstructor(options = {}) {\n\t\tthis._loader = options.loader ?? defaultLoader;\n\t\tthis._providers = options.executionProviders ?? [\"webgpu\", \"wasm\"];\n\t\tthis._wasmFallback = options.wasmFallback !== false;\n\t}\n\tort() {\n\t\tif (!this._ortPromise) this._ortPromise = this._loader().catch((err) => {\n\t\t\tthis._ortPromise = void 0;\n\t\t\tthrow new Error(`onnxruntime-web failed to load (${String(err)}). Install it in the browser bundle or pass a custom loader.`);\n\t\t});\n\t\treturn this._ortPromise;\n\t}\n\tasync createSession(modelBytes) {\n\t\tconst ort = await this.ort();\n\t\tlet session;\n\t\ttry {\n\t\t\tsession = await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: [...this._providers],\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\tlogSeverityLevel: 3\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (!this._wasmFallback || !this._providers.includes(\"webgpu\")) throw err;\n\t\t\tsession = await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: [\"wasm\"],\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\tlogSeverityLevel: 3\n\t\t\t});\n\t\t}\n\t\treturn {\n\t\t\trun: async (input) => {\n\t\t\t\tconst inputName = session.inputNames.includes(input.name) ? input.name : session.inputNames[0] ?? input.name;\n\t\t\t\tconst results = await session.run({ [inputName]: new ort.Tensor(\"float32\", input.data, [...input.dims]) });\n\t\t\t\tconst outputs = {};\n\t\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\t\tdata: tensor.data,\n\t\t\t\t\tdims: [...tensor.dims]\n\t\t\t\t};\n\t\t\t\treturn outputs;\n\t\t\t},\n\t\t\trelease: () => {\n\t\t\t\tsession.release();\n\t\t\t}\n\t\t};\n\t}\n};\n/**\n* Convenience factory: a `SessionProvider` type guard for the browser entry. Kept tiny so\n* `@framefields/vision/web` stays tree-shakeable.\n*/\nfunction createWebGPUProvider(options) {\n\treturn new WebGPUProvider(options);\n}\n/** True when the environment exposes a WebGPU device (synchronous capability probe). */\nfunction hasWebGPU() {\n\treturn typeof navigator !== \"undefined\" && \"gpu\" in navigator;\n}\n\n//#endregion\n//#region src/runtime/node-webgpu-provider.ts\nconst ORT_WEBGPU_SPECIFIER = \"onnxruntime-web/webgpu\";\nconst WEBGPU_SPECIFIER = \"webgpu\";\nlet nodeWebGPUReady;\n/**\n* Ensure `globalThis.navigator.gpu` exists. In the renderer this is already the\n* Dawn device; otherwise imports the `webgpu` (Dawn) package and installs its\n* globals plus an adapter, which is what onnxruntime-web's WebGPU EP needs.\n*/\nfunction ensureNodeWebGPU() {\n\tif (!nodeWebGPUReady) {\n\t\tnodeWebGPUReady = (async () => {\n\t\t\tconst g = globalThis;\n\t\t\tif (g.navigator?.gpu) return;\n\t\t\tconst { create, globals } = await import(\n\t\t\t\t/* @vite-ignore */\n\t\t\t\tWEBGPU_SPECIFIER\n);\n\t\t\tObject.assign(globalThis, globals);\n\t\t\tconst nav = g.navigator ??= {};\n\t\t\tObject.defineProperty(nav, \"gpu\", {\n\t\t\t\tvalue: create([]),\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t})();\n\t\tnodeWebGPUReady.catch(() => {\n\t\t\tnodeWebGPUReady = void 0;\n\t\t});\n\t}\n\treturn nodeWebGPUReady;\n}\nvar NodeWebGPUProvider = class {\n\tkind = \"webgpu\";\n\t_inner;\n\tconstructor(options = {}) {\n\t\tconst loader = options.loader ?? (async () => {\n\t\t\tawait ensureNodeWebGPU();\n\t\t\tconst mod = await import(\n\t\t\t\t/* @vite-ignore */\n\t\t\t\tORT_WEBGPU_SPECIFIER\n);\n\t\t\tif (mod.env?.wasm) mod.env.wasm.numThreads = 1;\n\t\t\treturn mod;\n\t\t});\n\t\tthis._inner = new WebGPUProvider({\n\t\t\twasmFallback: false,\n\t\t\t...options,\n\t\t\tloader\n\t\t});\n\t}\n\tcreateSession(modelBytes) {\n\t\treturn this._inner.createSession(modelBytes);\n\t}\n};\nfunction createNodeWebGPUProvider(options) {\n\treturn new NodeWebGPUProvider(options);\n}\n\n//#endregion\n//#region src/runtime/session-provider.ts\nlet defaultProvider;\n/**\n* Sets the provider runners use when none is passed, for hosts that create\n* runners indirectly (e.g. a browser player rendering vision nodes). `undefined`\n* restores the default, onnxruntime-node.\n*/\nfunction setDefaultSessionProvider(factory) {\n\tdefaultProvider = factory;\n}\n/**\n* Prefers the GPU (onnxruntime-web's WebGPU EP on the process's WebGPU device —\n* the Dawn device the renderer already creates, or one this ensures) and falls\n* back to the CPU provider (onnxruntime-node) when a WebGPU session cannot be\n* created: no device, no Dawn, or the EP unavailable. The choice is made on the\n* first session and reused for the runner's lifetime.\n*/\nvar AutoSessionProvider = class {\n\t_resolved;\n\tget kind() {\n\t\treturn this._resolved?.kind ?? \"webgpu\";\n\t}\n\tasync createSession(modelBytes) {\n\t\tif (!this._resolved) {\n\t\t\tconst webgpu = new NodeWebGPUProvider({ wasmFallback: false });\n\t\t\ttry {\n\t\t\t\tconst session = await webgpu.createSession(modelBytes);\n\t\t\t\tthis._resolved = webgpu;\n\t\t\t\treturn session;\n\t\t\t} catch {\n\t\t\t\tthis._resolved = new NodeSessionProvider();\n\t\t\t}\n\t\t}\n\t\treturn this._resolved.createSession(modelBytes);\n\t}\n};\n/**\n* The provider for a runner created without one: GPU if possible, otherwise CPU.\n*/\nfunction createDefaultSessionProvider() {\n\treturn defaultProvider?.() ?? new AutoSessionProvider();\n}\n/** onnxruntime-node provider. The native module is imported lazily on first session. */\nvar NodeSessionProvider = class {\n\tkind = \"node\";\n\tortPromise;\n\tasync ort() {\n\t\tif (!this.ortPromise) this.ortPromise = import(\"onnxruntime-node\").catch((err) => {\n\t\t\tthis.ortPromise = void 0;\n\t\t\tthrow new Error(`onnxruntime-node failed to load (${String(err)}). Install it in the environment or provide a custom SessionProvider.`);\n\t\t});\n\t\treturn this.ortPromise;\n\t}\n\tasync createSession(modelBytes) {\n\t\tconst ort = await this.ort();\n\t\tconst session = await ort.InferenceSession.create(modelBytes, {\n\t\t\texecutionProviders: [\"cpu\"],\n\t\t\tgraphOptimizationLevel: \"all\"\n\t\t});\n\t\treturn {\n\t\t\trun: async (input) => {\n\t\t\t\tconst feeds = { [session.inputNames.includes(input.name) ? input.name : session.inputNames[0] ?? input.name]: new ort.Tensor(\"float32\", input.data, [...input.dims]) };\n\t\t\t\tconst results = await session.run(feeds);\n\t\t\t\tconst outputs = {};\n\t\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\t\tdata: tensor.data,\n\t\t\t\t\tdims: [...tensor.dims]\n\t\t\t\t};\n\t\t\t\treturn outputs;\n\t\t\t},\n\t\t\trelease: () => {\n\t\t\t\tsession.release();\n\t\t\t}\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/runner/vision-runner.ts\n/**\n* Lazy vision runner.\n*\n* `create()` performs ZERO I/O: no downloads, no sessions. Each inference method downloads\n* its model and warms its session on FIRST USE ONLY, then reuses them for the process\n* lifetime. `detect()` and `segment()` share one RTMDet-Ins forward pass per frame.\n* Call `close()` to release sessions.\n*/\nvar VisionRunner = class VisionRunner {\n\tvariant;\n\tconfidence;\n\tclasses;\n\tmaskThreshold;\n\tfeatherRadius;\n\t_store;\n\t_provider;\n\t_sessions = /* @__PURE__ */ new Map();\n\t_tensorScratch = /* @__PURE__ */ new Map();\n\t/** One RTMDet-Ins pass per frame buffer, shared by detect() and segment(). */\n\t_instancePass;\n\tconstructor(options) {\n\t\tthis.variant = options.variant ?? \"s\";\n\t\tthis.confidence = options.confidence ?? .3;\n\t\tthis.classes = options.classes;\n\t\tthis.maskThreshold = options.maskThreshold ?? .5;\n\t\tthis.featherRadius = options.featherRadius;\n\t\tthis._store = options.store ?? new VisionModelStore({\n\t\t\tmodelsDir: options.modelsDir,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\tonProgress: options.onProgress\n\t\t});\n\t\tthis._provider = options.provider ?? createDefaultSessionProvider();\n\t}\n\t/** Cheap: no downloads, no sessions, no side effects. */\n\tstatic create(options = {}) {\n\t\treturn new VisionRunner(options);\n\t}\n\tget modelsDir() {\n\t\treturn this._store.modelsDir;\n\t}\n\t/** Every registry model keyed to its current download state (downloaded → \"ready\"). */\n\tget downloadStatus() {\n\t\tconst statuses = /* @__PURE__ */ new Map();\n\t\tfor (const key of Object.keys(VISION_MODELS)) statuses.set(key, \"pending\");\n\t\tfor (const [key, status] of this._store.statuses()) statuses.set(key, status);\n\t\treturn statuses;\n\t}\n\t/** The model serving `task` (matte depends on frame aspect; defaults to square). */\n\tmodelKeyFor(task, aspect = 1) {\n\t\treturn modelKeyFor(task, this.variant, aspect);\n\t}\n\t/**\n\t* Explicit warm-up: downloads + sessions for the given tasks, ahead of first use.\n\t* `matte` warms both aspect variants (the frame aspect is unknown until inference).\n\t*/\n\tasync preload(tasks = [\"detect\"]) {\n\t\tconst keys = /* @__PURE__ */ new Set();\n\t\tfor (const task of tasks) if (task === \"matte\") {\n\t\t\tkeys.add(\"selfie-square\");\n\t\t\tkeys.add(\"selfie-landscape\");\n\t\t} else keys.add(this.modelKeyFor(task));\n\t\tawait this._store.preload([...keys]);\n\t\tawait Promise.all([...keys].map((key) => this.session(key)));\n\t}\n\t/** COCO-80 boxes (sorted by score, source pixels). Masks are not decoded. */\n\tasync detect(image) {\n\t\tconst pass = await this.instancePass(image);\n\t\treturn decodeRtmdetIns({\n\t\t\t...pass.outputs,\n\t\t\tmasks: void 0\n\t\t}, this.instanceDecodeOptions(image, pass.transform)).detections;\n\t}\n\t/** COCO-80 boxes plus a frame-aligned soft mask per instance. */\n\tasync segment(image) {\n\t\tconst pass = await this.instancePass(image);\n\t\treturn decodeRtmdetIns(pass.outputs, this.instanceDecodeOptions(image, pass.transform));\n\t}\n\t/** COCO-17 keypoints per person (source pixels), highest score first. */\n\tasync pose(image) {\n\t\tconst key = this.modelKeyFor(\"pose\");\n\t\tconst { outputs, transform } = await this.infer(key, image);\n\t\tconst dets = output(outputs, \"dets\", key);\n\t\tconst keypoints = output(outputs, \"keypoints\", key);\n\t\treturn decodeRtmo({\n\t\t\tdets: dets.data,\n\t\t\tkeypoints: keypoints.data,\n\t\t\tcount: dets.dims[1] ?? 0,\n\t\t\tkeypointStride: keypoints.dims[3] ?? 3\n\t\t}, {\n\t\t\tconfidence: this.confidence,\n\t\t\ttransform,\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height\n\t\t});\n\t}\n\t/** Person-vs-background alpha for the whole frame (Selfie Segmenter). */\n\tasync matte(image) {\n\t\tconst key = this.modelKeyFor(\"matte\", image.width / image.height);\n\t\tconst [w, h] = VISION_MODELS[key].input;\n\t\tconst { outputs } = await this.infer(key, image);\n\t\treturn decodeSelfie(output(outputs, \"alphas\", key).data, w, h, {\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height,\n\t\t\tmaskThreshold: this.maskThreshold,\n\t\t\t...this.featherRadius !== void 0 ? { featherRadius: this.featherRadius } : {}\n\t\t});\n\t}\n\tclose() {\n\t\tfor (const promise of this._sessions.values()) promise.then((session) => session.release()).catch(() => void 0);\n\t\tthis._sessions.clear();\n\t\tthis._instancePass = void 0;\n\t\tthis._store.clearMemoryCache();\n\t}\n\tinstancePass(image) {\n\t\tif (this._instancePass?.frame === image.data) return this._instancePass.result;\n\t\tconst key = this.modelKeyFor(\"segment\");\n\t\tconst result = this.infer(key, image).then(({ outputs, transform }) => {\n\t\t\tconst dets = output(outputs, \"dets\", key);\n\t\t\tconst masks = output(outputs, \"masks\", key);\n\t\t\treturn {\n\t\t\t\ttransform,\n\t\t\t\toutputs: {\n\t\t\t\t\tdets: dets.data,\n\t\t\t\t\tlabels: output(outputs, \"labels\", key).data,\n\t\t\t\t\tmasks: masks.data,\n\t\t\t\t\tcount: dets.dims[1] ?? 0,\n\t\t\t\t\tmaskHeight: masks.dims[masks.dims.length - 2] ?? 0,\n\t\t\t\t\tmaskWidth: masks.dims[masks.dims.length - 1] ?? 0\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t\tthis._instancePass = {\n\t\t\tframe: image.data,\n\t\t\tresult\n\t\t};\n\t\tresult.catch(() => {\n\t\t\tif (this._instancePass?.result === result) this._instancePass = void 0;\n\t\t});\n\t\treturn result;\n\t}\n\tinstanceDecodeOptions(image, transform) {\n\t\treturn {\n\t\t\tconfidence: this.confidence,\n\t\t\tclasses: this.classes,\n\t\t\tclassNames: COCO_CLASSES,\n\t\t\ttransform,\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height,\n\t\t\tmaskThreshold: this.maskThreshold,\n\t\t\t...this.featherRadius !== void 0 ? { featherRadius: this.featherRadius } : {}\n\t\t};\n\t}\n\tasync infer(key, image) {\n\t\tconst session = await this.session(key);\n\t\tconst desc = VISION_MODELS[key];\n\t\tconst spec = preprocessSpec(desc.family, desc.input);\n\t\tconst size = 3 * spec.width * spec.height;\n\t\tlet scratch = this._tensorScratch.get(key);\n\t\tif (!scratch || scratch.length < size) {\n\t\t\tscratch = new Float32Array(size);\n\t\t\tthis._tensorScratch.set(key, scratch);\n\t\t}\n\t\tconst { tensor, transform } = imageToTensor(image, spec, scratch);\n\t\treturn {\n\t\t\toutputs: await session.run({\n\t\t\t\tname: \"input\",\n\t\t\t\tdata: tensor,\n\t\t\t\tdims: [\n\t\t\t\t\t1,\n\t\t\t\t\t3,\n\t\t\t\t\tspec.height,\n\t\t\t\t\tspec.width\n\t\t\t\t]\n\t\t\t}),\n\t\t\ttransform\n\t\t};\n\t}\n\tsession(key) {\n\t\tlet promise = this._sessions.get(key);\n\t\tif (!promise) {\n\t\t\tpromise = this._store.ensure(key).then((bytes) => this._provider.createSession(bytes)).catch((err) => {\n\t\t\t\tthis._sessions.delete(key);\n\t\t\t\tthis._store.evict(key);\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t\tthis._sessions.set(key, promise);\n\t\t}\n\t\treturn promise;\n\t}\n};\nfunction output(outputs, name, key) {\n\tconst tensor = outputs[name];\n\tif (!tensor) throw new Error(`Vision model '${key}' returned no '${name}' output (got: ${Object.keys(outputs).join(\", \") || \"none\"}). Expected the ${VISION_MODELS[key].source}.`);\n\treturn tensor;\n}\n\n//#endregion\n//#region src/segmentation/subject.ts\n/**\n* The frame's primary instance: the largest person when present, else the most confident\n* instance (lowest `detectionIndex` — detections are score-sorted). Size alone is a poor\n* signal without a person: the largest instance is usually a backdrop (\"dining table\").\n*/\nfunction selectSubjectMask(masks) {\n\tlet best;\n\tfor (const m of masks) {\n\t\tif (!best) {\n\t\t\tbest = m;\n\t\t\tcontinue;\n\t\t}\n\t\tconst mIsPerson = isPerson(m);\n\t\tif (mIsPerson !== isPerson(best)) {\n\t\t\tif (mIsPerson) best = m;\n\t\t} else if (mIsPerson ? m.area > best.area : m.detectionIndex < best.detectionIndex) best = m;\n\t}\n\treturn best;\n}\nfunction isPerson(mask) {\n\treturn mask.category.toLowerCase() === \"person\";\n}\n/** Tight pixel bounds of a mask's non-zero alpha, or null when empty. */\nfunction maskBounds(mask) {\n\tconst { mask: data, width, height } = mask;\n\tlet x0 = width;\n\tlet y0 = height;\n\tlet x1 = -1;\n\tlet y1 = -1;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tif (data[row + x] === 0) continue;\n\t\t\tif (x < x0) x0 = x;\n\t\t\tif (x > x1) x1 = x;\n\t\t\tif (y < y0) y0 = y;\n\t\t\tif (y > y1) y1 = y;\n\t\t}\n\t}\n\treturn x1 < 0 ? null : {\n\t\tx0,\n\t\ty0,\n\t\tx1,\n\t\ty1\n\t};\n}\n/**\n* Builds the full subject silhouette: the primary instance plus every comparably sized\n* instance whose bounds sit mostly inside or across it (`overlap` = intersection / smaller\n* box area; `maxGrowth` caps a part's box area relative to the subject's).\n*\n* COCO has no \"clothing\" class, so a flowing dress, a held guitar or a ridden bike comes back\n* as its own instance (often mislabeled) — merging them keeps the whole figure in the cutout.\n* The size cap keeps containers out: a small figure inside a tunnel or window detected as a\n* huge \"clock\" must not drag the whole frame into the subject.\n*/\nfunction mergeSubjectMask(masks, overlap = .5, maxGrowth = 2) {\n\tconst subject = selectSubjectMask(masks);\n\tif (!subject) return void 0;\n\tconst sb = maskBounds(subject);\n\tif (!sb) return subject;\n\tconst subjectArea = boundsArea(sb);\n\tconst parts = masks.filter((m) => {\n\t\tif (m === subject) return false;\n\t\tconst b = maskBounds(m);\n\t\treturn b !== null && boundsArea(b) <= subjectArea * maxGrowth && boundsOverlap(sb, b) >= overlap;\n\t});\n\tif (parts.length === 0) return subject;\n\tconst merged = subject.mask.slice();\n\tfor (const part of parts) {\n\t\tconst data = part.mask;\n\t\tfor (let i = 0; i < merged.length; i++) if (data[i] > merged[i]) merged[i] = data[i];\n\t}\n\tlet area = 0;\n\tfor (let i = 0; i < merged.length; i++) area += merged[i];\n\tarea = Math.round(area / 255);\n\treturn {\n\t\t...subject,\n\t\tmask: merged,\n\t\tarea,\n\t\tcoverage: area / (subject.width * subject.height)\n\t};\n}\nfunction boundsArea(b) {\n\treturn (b.x1 - b.x0 + 1) * (b.y1 - b.y0 + 1);\n}\nfunction boundsOverlap(a, b) {\n\tconst iw = Math.min(a.x1, b.x1) - Math.max(a.x0, b.x0) + 1;\n\tconst ih = Math.min(a.y1, b.y1) - Math.max(a.y0, b.y0) + 1;\n\tif (iw <= 0 || ih <= 0) return 0;\n\treturn iw * ih / Math.min(boundsArea(a), boundsArea(b));\n}\n\n//#endregion\n//#region src/spatial/camera-space-transformer.ts\nvar SpatialLandmarkTransformer = class {\n\twidth;\n\theight;\n\tfovRad;\n\tfocalDistance;\n\tconstructor(camera) {\n\t\tthis.width = camera.width;\n\t\tthis.height = camera.height;\n\t\tthis.fovRad = (camera.fov ?? 60) * Math.PI / 180;\n\t\tthis.focalDistance = camera.cameraDistance ?? this.height / 2 / Math.tan(this.fovRad / 2);\n\t}\n\t/**\n\t* Projects a normalized landmark [0, 1] into 2D/3D canvas coordinates.\n\t*/\n\tprojectNormalizedLandmark(landmark, offsetZ = 0) {\n\t\tconst screenX = landmark.x * this.width;\n\t\tconst screenY = landmark.y * this.height;\n\t\tconst rawZ = landmark.z * this.width + offsetZ;\n\t\tconst effectiveZ = Math.min(rawZ, this.focalDistance - 10);\n\t\tconst scale = this.focalDistance / (this.focalDistance - effectiveZ);\n\t\treturn {\n\t\t\tx: screenX,\n\t\t\ty: screenY,\n\t\t\tz: rawZ,\n\t\t\tscale: Math.max(.1, scale)\n\t\t};\n\t}\n\t/**\n\t* Projects a metric world landmark [X_w, Y_w, Z_w] in meters into canvas space.\n\t*/\n\tprojectWorldLandmark(worldLandmark, subjectDistanceMeters = 2, scaleMetersToPixels = 800) {\n\t\tconst centerX = this.width / 2;\n\t\tconst centerY = this.height / 2;\n\t\tconst worldX = worldLandmark.x * scaleMetersToPixels;\n\t\tconst worldY = worldLandmark.y * scaleMetersToPixels;\n\t\tconst worldZ = (worldLandmark.z + subjectDistanceMeters) * scaleMetersToPixels;\n\t\tconst effectiveZ = Math.min(worldZ, this.focalDistance - 10);\n\t\tconst scale = this.focalDistance / (this.focalDistance - effectiveZ);\n\t\treturn {\n\t\t\tx: centerX + worldX * scale,\n\t\t\ty: centerY + worldY * scale,\n\t\t\tz: worldZ,\n\t\t\tscale: Math.max(.1, scale)\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/tracking/pose-track-matcher.ts\nfunction getPersonBoundingBox(person) {\n\tif (person.boundingBox && person.boundingBox.width > 0 && person.boundingBox.height > 0) return {\n\t\toriginX: person.boundingBox.originX,\n\t\toriginY: person.boundingBox.originY,\n\t\twidth: person.boundingBox.width,\n\t\theight: person.boundingBox.height\n\t};\n\tlet minX = Infinity;\n\tlet minY = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxY = -Infinity;\n\tlet validCount = 0;\n\tfor (const kp of person.keypoints) if (kp.visibility > .1) {\n\t\tvalidCount++;\n\t\tif (kp.x < minX) minX = kp.x;\n\t\tif (kp.y < minY) minY = kp.y;\n\t\tif (kp.x > maxX) maxX = kp.x;\n\t\tif (kp.y > maxY) maxY = kp.y;\n\t}\n\tif (validCount === 0 || minX >= maxX || minY >= maxY) return {\n\t\toriginX: person.boundingBox?.originX ?? 0,\n\t\toriginY: person.boundingBox?.originY ?? 0,\n\t\twidth: person.boundingBox?.width ?? 0,\n\t\theight: person.boundingBox?.height ?? 0\n\t};\n\treturn {\n\t\toriginX: minX,\n\t\toriginY: minY,\n\t\twidth: maxX - minX,\n\t\theight: maxY - minY\n\t};\n}\n/**\n* Matches detected pose people with active person tracks using greedy bipartite IoU.\n*\n* Annotates each person with the matched trackId.\n*/\nfunction matchPoseToTracks(people, trackedObjects, minIoU = .15) {\n\tif (people.length === 0) return [];\n\tconst personTracks = trackedObjects.filter((o) => o.category.toLowerCase() === \"person\" && o.active);\n\tif (personTracks.length === 0) return [...people];\n\tconst candidateMatches = [];\n\tfor (let p = 0; p < people.length; p++) {\n\t\tconst person = people[p];\n\t\tif (person.trackId !== void 0) continue;\n\t\tconst pBox = getPersonBoundingBox(person);\n\t\tconst isNormalized = pBox.width <= 1.05 && pBox.height <= 1.05;\n\t\tfor (const trk of personTracks) {\n\t\t\tconst iou = computeIoU(pBox, isNormalized && trk.boundingBox.normalizedWidth > 0 ? {\n\t\t\t\toriginX: trk.boundingBox.normalizedX,\n\t\t\t\toriginY: trk.boundingBox.normalizedY,\n\t\t\t\twidth: trk.boundingBox.normalizedWidth,\n\t\t\t\theight: trk.boundingBox.normalizedHeight\n\t\t\t} : trk.boundingBox);\n\t\t\tif (iou >= minIoU) candidateMatches.push({\n\t\t\t\tpersonIdx: p,\n\t\t\t\ttrackId: trk.trackId,\n\t\t\t\tiou\n\t\t\t});\n\t\t}\n\t}\n\tcandidateMatches.sort((a, b) => b.iou - a.iou);\n\tconst assignedPeople = /* @__PURE__ */ new Set();\n\tconst assignedTracks = /* @__PURE__ */ new Set();\n\tconst personTrackMap = /* @__PURE__ */ new Map();\n\tfor (const match of candidateMatches) {\n\t\tif (assignedPeople.has(match.personIdx) || assignedTracks.has(match.trackId)) continue;\n\t\tassignedPeople.add(match.personIdx);\n\t\tassignedTracks.add(match.trackId);\n\t\tpersonTrackMap.set(match.personIdx, match.trackId);\n\t}\n\tif (people.length === 1 && personTracks.length === 1 && !personTrackMap.has(0) && people[0].trackId === void 0) personTrackMap.set(0, personTracks[0].trackId);\n\treturn people.map((person, idx) => {\n\t\tif (person.trackId !== void 0) return person;\n\t\tconst trackId = personTrackMap.get(idx);\n\t\treturn trackId !== void 0 ? {\n\t\t\t...person,\n\t\t\ttrackId\n\t\t} : person;\n\t});\n}\n\n//#endregion\n//#region src/signals/vision-bundle.ts\nvar VisionBundle = class {\n\tobjects;\n\tposeLandmarks;\n\tmasks;\n\tsegmentation;\n\tclasses;\n\tposeLandmarksTensor;\n\tobjectsTensor;\n\tmasksTensor;\n\t/** Per-class detection histogram [nc] — top-level convenience mirror of `classes.histogram`. */\n\thistogramTensor;\n\t_totalFrames;\n\t_fps;\n\t_width;\n\t_height;\n\t_transformer;\n\t_stencilTexture;\n\t_poseCache = /* @__PURE__ */ new Map();\n\t_objectCache = /* @__PURE__ */ new Map();\n\t_maskCache = /* @__PURE__ */ new Map();\n\t_matteCache = /* @__PURE__ */ new Map();\n\t_poseLmCache = /* @__PURE__ */ new Map();\n\t_trackCache = /* @__PURE__ */ new Map();\n\t_categoryCache = /* @__PURE__ */ new Map();\n\t_classCache = /* @__PURE__ */ new Map();\n\t_maskTrackCache = /* @__PURE__ */ new Map();\n\t_registeredSignals = /* @__PURE__ */ new Set();\n\tconstructor(options = {}) {\n\t\tthis._totalFrames = options.totalFrames ?? 120;\n\t\tthis._fps = options.fps ?? 24;\n\t\tthis._width = options.width ?? 1920;\n\t\tthis._height = options.height ?? 1080;\n\t\tthis._transformer = new SpatialLandmarkTransformer({\n\t\t\twidth: this._width,\n\t\t\theight: this._height,\n\t\t\tfov: options.cameraFov ?? 60\n\t\t});\n\t\tconst self = this;\n\t\tconst programmaticSignal$1 = (evaluator, sigOptions) => {\n\t\t\tconst sig = programmaticSignal(evaluator, sigOptions);\n\t\t\tthis._registeredSignals.add(sig);\n\t\t\treturn sig;\n\t\t};\n\t\tconst getPrimaryLandmarks = (frame) => {\n\t\t\treturn this.getPoseResult(frame).people[0]?.keypoints ?? createNeutralLandmarks();\n\t\t};\n\t\tconst createPoseCoord = (index, label) => {\n\t\t\tconst getLm = (frame) => getPrimaryLandmarks(frame)[index] ?? {\n\t\t\t\tx: .5,\n\t\t\t\ty: .5,\n\t\t\t\tz: 0\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tx: programmaticSignal$1((ctx) => getLm(ctx.frame).x, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_x`\n\t\t\t\t}),\n\t\t\t\ty: programmaticSignal$1((ctx) => getLm(ctx.frame).y, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_y`\n\t\t\t\t}),\n\t\t\t\tz: programmaticSignal$1((ctx) => getLm(ctx.frame).z ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_z`\n\t\t\t\t}),\n\t\t\t\tscreenX: programmaticSignal$1((ctx) => this._transformer.projectNormalizedLandmark(getLm(ctx.frame)).x, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_screenX`\n\t\t\t\t}),\n\t\t\t\tscreenY: programmaticSignal$1((ctx) => this._transformer.projectNormalizedLandmark(getLm(ctx.frame)).y, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_screenY`\n\t\t\t\t})\n\t\t\t};\n\t\t};\n\t\tconst getOrCreatePoseLm = (index) => {\n\t\t\tlet sig = this._poseLmCache.get(index);\n\t\t\tif (!sig) {\n\t\t\t\tsig = createPoseCoord(index, COCO17_KEYPOINT_NAMES[index] ?? `kpt_${index}`);\n\t\t\t\tthis._poseLmCache.set(index, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst poseNamed = {\n\t\t\tnose: getOrCreatePoseLm(COCO17_KEYPOINTS.NOSE),\n\t\t\tleftEye: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_EYE),\n\t\t\trightEye: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_EYE),\n\t\t\tleftEar: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_EAR),\n\t\t\trightEar: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_EAR),\n\t\t\tshoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\tleftShoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\trightShoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_SHOULDER),\n\t\t\tleftElbow: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_ELBOW),\n\t\t\trightElbow: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_ELBOW),\n\t\t\tleftWrist: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_WRIST),\n\t\t\trightWrist: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_WRIST),\n\t\t\tleftHip: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_HIP),\n\t\t\trightHip: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_HIP),\n\t\t\tleftKnee: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_KNEE),\n\t\t\trightKnee: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_KNEE),\n\t\t\tleftAnkle: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_ANKLE),\n\t\t\trightAnkle: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_ANKLE),\n\t\t\tget: getOrCreatePoseLm\n\t\t};\n\t\tthis.poseLandmarks = new Proxy(poseNamed, { get(target, prop, receiver) {\n\t\t\tif (typeof prop === \"string\" && /^\\d+$/.test(prop)) return target.get(Number(prop));\n\t\t\tif (typeof prop === \"number\") return target.get(prop);\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t} });\n\t\tconst neutralTrack = (trackId, category = \"unknown\") => ({\n\t\t\ttrackId,\n\t\t\tcategory,\n\t\t\tscore: 0,\n\t\t\tboundingBox: {\n\t\t\t\toriginX: this._width / 2,\n\t\t\t\toriginY: this._height / 2,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tnormalizedX: .5,\n\t\t\t\tnormalizedY: .5,\n\t\t\t\tnormalizedWidth: 0,\n\t\t\t\tnormalizedHeight: 0\n\t\t\t},\n\t\t\tcenterX: this._width / 2,\n\t\t\tcenterY: this._height / 2,\n\t\t\tnormalizedCenterX: .5,\n\t\t\tnormalizedCenterY: .5,\n\t\t\tvelocity: {\n\t\t\t\tvx: 0,\n\t\t\t\tvy: 0\n\t\t\t},\n\t\t\tspeed: 0,\n\t\t\tage: 0,\n\t\t\thits: 0,\n\t\t\tactive: false,\n\t\t\tisCoasting: false\n\t\t});\n\t\tconst createAnchor = (getPos, label) => {\n\t\t\tconst screenX = programmaticSignal$1((ctx) => getPos(ctx.frame).sx, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_screenX`\n\t\t\t});\n\t\t\tconst screenY = programmaticSignal$1((ctx) => getPos(ctx.frame).sy, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_screenY`\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tx: programmaticSignal$1((ctx) => this._width > 0 ? getPos(ctx.frame).sx / this._width : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_x`\n\t\t\t\t}),\n\t\t\t\ty: programmaticSignal$1((ctx) => this._height > 0 ? getPos(ctx.frame).sy / this._height : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_y`\n\t\t\t\t}),\n\t\t\t\tz: programmaticSignal$1(() => 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_z`\n\t\t\t\t}),\n\t\t\t\tscreenX,\n\t\t\t\tscreenY\n\t\t\t};\n\t\t};\n\t\tconst buildTrackPoseSignals = (resolveTrack, label, fixedId) => {\n\t\t\tconst resolvePerson = (frame) => {\n\t\t\t\tconst poseRes = self.getPoseResult(frame);\n\t\t\t\tif (poseRes.people.length === 0) return void 0;\n\t\t\t\tconst trk = resolveTrack(frame);\n\t\t\t\tconst targetId = fixedId ?? trk.trackId;\n\t\t\t\tconst byId = poseRes.people.find((p) => p.trackId === targetId);\n\t\t\t\tif (byId) return byId;\n\t\t\t\tif (!trk.active && poseRes.people.length > 1) return void 0;\n\t\t\t\tif (poseRes.people.length === 1) return poseRes.people[0];\n\t\t\t\tlet bestPerson;\n\t\t\t\tlet bestIoU = .1;\n\t\t\t\tfor (const p of poseRes.people) {\n\t\t\t\t\tconst pBox = getPersonBoundingBox(p);\n\t\t\t\t\tconst iou = computeIoU(pBox, pBox.width <= 1.05 && pBox.height <= 1.05 && trk.boundingBox.normalizedWidth > 0 ? {\n\t\t\t\t\t\toriginX: trk.boundingBox.normalizedX,\n\t\t\t\t\t\toriginY: trk.boundingBox.normalizedY,\n\t\t\t\t\t\twidth: trk.boundingBox.normalizedWidth,\n\t\t\t\t\t\theight: trk.boundingBox.normalizedHeight\n\t\t\t\t\t} : trk.boundingBox);\n\t\t\t\t\tif (iou > bestIoU) {\n\t\t\t\t\t\tbestIoU = iou;\n\t\t\t\t\t\tbestPerson = p;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bestPerson;\n\t\t\t};\n\t\t\tconst hasPose = programmaticSignal$1((ctx) => resolvePerson(ctx.frame) ? 1 : 0, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_hasPose`\n\t\t\t});\n\t\t\tconst createCoord = (index, kptName) => {\n\t\t\t\tconst getLm = (frame) => {\n\t\t\t\t\tconst kp = resolvePerson(frame)?.keypoints[index];\n\t\t\t\t\tif (kp && kp.visibility > .05) return {\n\t\t\t\t\t\tx: kp.x,\n\t\t\t\t\t\ty: kp.y,\n\t\t\t\t\t\tz: 0\n\t\t\t\t\t};\n\t\t\t\t\tconst trk = resolveTrack(frame);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tx: trk.normalizedCenterX,\n\t\t\t\t\t\ty: trk.normalizedCenterY,\n\t\t\t\t\t\tz: 0\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tx: programmaticSignal$1((ctx) => getLm(ctx.frame).x, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_x`\n\t\t\t\t\t}),\n\t\t\t\t\ty: programmaticSignal$1((ctx) => getLm(ctx.frame).y, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_y`\n\t\t\t\t\t}),\n\t\t\t\t\tz: programmaticSignal$1((ctx) => getLm(ctx.frame).z ?? 0, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_z`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenX: programmaticSignal$1((ctx) => self._transformer.projectNormalizedLandmark(getLm(ctx.frame)).x, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_screenX`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenY: programmaticSignal$1((ctx) => self._transformer.projectNormalizedLandmark(getLm(ctx.frame)).y, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_screenY`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst coordsCache = /* @__PURE__ */ new Map();\n\t\t\tconst getOrCreateCoord = (idx) => {\n\t\t\t\tlet c = coordsCache.get(idx);\n\t\t\t\tif (!c) {\n\t\t\t\t\tc = createCoord(idx, COCO17_KEYPOINT_NAMES[idx] ?? `kpt_${idx}`);\n\t\t\t\t\tcoordsCache.set(idx, c);\n\t\t\t\t}\n\t\t\t\treturn c;\n\t\t\t};\n\t\t\tconst namedPose = {\n\t\t\t\thasPose,\n\t\t\t\twristSpeed: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst f = ctx.frame;\n\t\t\t\t\tconst curr = resolvePerson(f);\n\t\t\t\t\tif (!curr) return 0;\n\t\t\t\t\tconst prev = resolvePerson(Math.max(0, f - 1));\n\t\t\t\t\tconst currKp = curr.keypoints;\n\t\t\t\t\tconst prevKp = prev?.keypoints;\n\t\t\t\t\tconst rwCurr = currKp[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tconst rwPrev = prevKp?.[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tlet rwSpeed = 0;\n\t\t\t\t\tif (rwCurr && rwPrev && rwCurr.visibility > .1 && rwPrev.visibility > .1) {\n\t\t\t\t\t\tconst dx = (rwCurr.x - rwPrev.x) * this._width;\n\t\t\t\t\t\tconst dy = (rwCurr.y - rwPrev.y) * this._height;\n\t\t\t\t\t\trwSpeed = Math.sqrt(dx * dx + dy * dy) * this._fps;\n\t\t\t\t\t}\n\t\t\t\t\tconst lwCurr = currKp[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tconst lwPrev = prevKp?.[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tlet lwSpeed = 0;\n\t\t\t\t\tif (lwCurr && lwPrev && lwCurr.visibility > .1 && lwPrev.visibility > .1) {\n\t\t\t\t\t\tconst dx = (lwCurr.x - lwPrev.x) * this._width;\n\t\t\t\t\t\tconst dy = (lwCurr.y - lwPrev.y) * this._height;\n\t\t\t\t\t\tlwSpeed = Math.sqrt(dx * dx + dy * dy) * this._fps;\n\t\t\t\t\t}\n\t\t\t\t\treturn Math.max(rwSpeed, lwSpeed);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_wristSpeed`\n\t\t\t\t}),\n\t\t\t\thandRaised: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst p = resolvePerson(ctx.frame);\n\t\t\t\t\tif (!p) return 0;\n\t\t\t\t\tconst k = p.keypoints;\n\t\t\t\t\tconst lw = k[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tconst ls = k[COCO17_KEYPOINTS.LEFT_SHOULDER];\n\t\t\t\t\tconst rw = k[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tconst rs = k[COCO17_KEYPOINTS.RIGHT_SHOULDER];\n\t\t\t\t\tconst lRaised = lw && ls && lw.visibility > .1 && ls.visibility > .1 && lw.y < ls.y;\n\t\t\t\t\tconst rRaised = rw && rs && rw.visibility > .1 && rs.visibility > .1 && rw.y < rs.y;\n\t\t\t\t\treturn lRaised || rRaised ? 1 : 0;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_handRaised`\n\t\t\t\t}),\n\t\t\t\tbodyTiltAngle: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst p = resolvePerson(ctx.frame);\n\t\t\t\t\tif (!p) return 0;\n\t\t\t\t\tconst k = p.keypoints;\n\t\t\t\t\tconst ls = k[COCO17_KEYPOINTS.LEFT_SHOULDER];\n\t\t\t\t\tconst rs = k[COCO17_KEYPOINTS.RIGHT_SHOULDER];\n\t\t\t\t\tconst lh = k[COCO17_KEYPOINTS.LEFT_HIP];\n\t\t\t\t\tconst rh = k[COCO17_KEYPOINTS.RIGHT_HIP];\n\t\t\t\t\tif (!ls || !rs || !lh || !rh) return 0;\n\t\t\t\t\tconst sx = (ls.x + rs.x) / 2 * this._width;\n\t\t\t\t\tconst sy = (ls.y + rs.y) / 2 * this._height;\n\t\t\t\t\tconst hx = (lh.x + rh.x) / 2 * this._width;\n\t\t\t\t\tconst hy = (lh.y + rh.y) / 2 * this._height;\n\t\t\t\t\tconst dx = sx - hx;\n\t\t\t\t\tconst dy = sy - hy;\n\t\t\t\t\tif (dx === 0 && dy === 0) return 0;\n\t\t\t\t\treturn Math.atan2(dx, -dy);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_bodyTiltAngle`\n\t\t\t\t}),\n\t\t\t\tnose: getOrCreateCoord(COCO17_KEYPOINTS.NOSE),\n\t\t\t\tleftEye: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_EYE),\n\t\t\t\trightEye: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_EYE),\n\t\t\t\tleftEar: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_EAR),\n\t\t\t\trightEar: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_EAR),\n\t\t\t\tshoulder: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\t\tleftShoulder: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\t\trightShoulder: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_SHOULDER),\n\t\t\t\tleftElbow: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_ELBOW),\n\t\t\t\trightElbow: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_ELBOW),\n\t\t\t\tleftWrist: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_WRIST),\n\t\t\t\trightWrist: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_WRIST),\n\t\t\t\tleftHip: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_HIP),\n\t\t\t\trightHip: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_HIP),\n\t\t\t\tleftKnee: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_KNEE),\n\t\t\t\trightKnee: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_KNEE),\n\t\t\t\tleftAnkle: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_ANKLE),\n\t\t\t\trightAnkle: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_ANKLE),\n\t\t\t\tget: getOrCreateCoord\n\t\t\t};\n\t\t\treturn new Proxy(namedPose, { get(target, prop, receiver) {\n\t\t\t\tif (typeof prop === \"string\" && /^\\d+$/.test(prop)) return target.get(Number(prop));\n\t\t\t\tif (typeof prop === \"number\") return target.get(prop);\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t} });\n\t\t};\n\t\tconst buildTrackSignals = (resolve$1, label, fixedCategory, fixedId) => {\n\t\t\tconst getBox = (f) => resolve$1(f).boundingBox;\n\t\t\tconst pose = buildTrackPoseSignals(resolve$1, `${label}_pose`, fixedId);\n\t\t\tconst anchor = (name, sx, sy) => createAnchor((f) => ({\n\t\t\t\tsx: sx(getBox(f)),\n\t\t\t\tsy: sy(getBox(f))\n\t\t\t}), `${label}_${name}`);\n\t\t\tconst center = anchor(\"center\", (b) => b.originX + b.width / 2, (b) => b.originY + b.height / 2);\n\t\t\tconst speed = programmaticSignal$1((ctx) => resolve$1(ctx.frame).speed, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_speed`\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tget trackId() {\n\t\t\t\t\treturn fixedId ?? resolve$1(0).trackId;\n\t\t\t\t},\n\t\t\t\tget category() {\n\t\t\t\t\treturn fixedCategory ?? resolve$1(0).category;\n\t\t\t\t},\n\t\t\t\tbounds: {\n\t\t\t\t\tx: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedX, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normX`\n\t\t\t\t\t}),\n\t\t\t\t\ty: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedY, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normY`\n\t\t\t\t\t}),\n\t\t\t\t\twidth: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedWidth, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normWidth`\n\t\t\t\t\t}),\n\t\t\t\t\theight: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedHeight, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normHeight`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenX: programmaticSignal$1((ctx) => getBox(ctx.frame).originX, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenX`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenY: programmaticSignal$1((ctx) => getBox(ctx.frame).originY, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenY`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenWidth: programmaticSignal$1((ctx) => getBox(ctx.frame).width, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenWidth`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenHeight: programmaticSignal$1((ctx) => getBox(ctx.frame).height, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenHeight`\n\t\t\t\t\t}),\n\t\t\t\t\taspectRatio: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst b = getBox(ctx.frame);\n\t\t\t\t\t\treturn b.height > 0 ? b.width / b.height : 1;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_aspectRatio`\n\t\t\t\t\t}),\n\t\t\t\t\tarea: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst b = getBox(ctx.frame);\n\t\t\t\t\t\treturn b.width * b.height;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_area`\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tanchors: {\n\t\t\t\t\ttopLeft: anchor(\"topLeft\", (b) => b.originX, (b) => b.originY),\n\t\t\t\t\ttopCenter: anchor(\"topCenter\", (b) => b.originX + b.width / 2, (b) => b.originY),\n\t\t\t\t\ttopRight: anchor(\"topRight\", (b) => b.originX + b.width, (b) => b.originY),\n\t\t\t\t\tcenterLeft: anchor(\"centerLeft\", (b) => b.originX, (b) => b.originY + b.height / 2),\n\t\t\t\t\tcenter,\n\t\t\t\t\tcenterRight: anchor(\"centerRight\", (b) => b.originX + b.width, (b) => b.originY + b.height / 2),\n\t\t\t\t\tbottomLeft: anchor(\"bottomLeft\", (b) => b.originX, (b) => b.originY + b.height),\n\t\t\t\t\tbottomCenter: anchor(\"bottomCenter\", (b) => b.originX + b.width / 2, (b) => b.originY + b.height),\n\t\t\t\t\tbottomRight: anchor(\"bottomRight\", (b) => b.originX + b.width, (b) => b.originY + b.height)\n\t\t\t\t},\n\t\t\t\tkinematics: {\n\t\t\t\t\tvx: programmaticSignal$1((ctx) => resolve$1(ctx.frame).velocity.vx, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_vx`\n\t\t\t\t\t}),\n\t\t\t\t\tvy: programmaticSignal$1((ctx) => resolve$1(ctx.frame).velocity.vy, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_vy`\n\t\t\t\t\t}),\n\t\t\t\t\tspeed,\n\t\t\t\t\tacceleration: speed.velocity(1),\n\t\t\t\t\theadingRad: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst v = resolve$1(ctx.frame).velocity;\n\t\t\t\t\t\treturn Math.atan2(v.vy, v.vx);\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_headingRad`\n\t\t\t\t\t}),\n\t\t\t\t\theadingDeg: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst v = resolve$1(ctx.frame).velocity;\n\t\t\t\t\t\treturn Math.atan2(v.vy, v.vx) * 180 / Math.PI;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_headingDeg`\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tconfidence: programmaticSignal$1((ctx) => resolve$1(ctx.frame).score, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_score`\n\t\t\t\t}),\n\t\t\t\tactive: programmaticSignal$1((ctx) => resolve$1(ctx.frame).active ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_active`\n\t\t\t\t}),\n\t\t\t\tisCoasting: programmaticSignal$1((ctx) => resolve$1(ctx.frame).isCoasting ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_isCoasting`\n\t\t\t\t}),\n\t\t\t\tage: programmaticSignal$1((ctx) => resolve$1(ctx.frame).age, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_age`\n\t\t\t\t}),\n\t\t\t\tpose,\n\t\t\t\tcenter,\n\t\t\t\ttopCenter: this[`__pending`],\n\t\t\t\tbottomCenter: center,\n\t\t\t\ttopLeft: center,\n\t\t\t\tbottomLeft: center\n\t\t\t};\n\t\t};\n\t\tconst buildTrack = (resolve$1, label, fixedCategory, fixedId) => {\n\t\t\tconst sig = buildTrackSignals(resolve$1, label, fixedCategory, fixedId);\n\t\t\tconst anchors = sig.anchors;\n\t\t\tObject.assign(sig, {\n\t\t\t\ttopCenter: anchors.topCenter,\n\t\t\t\tbottomCenter: anchors.bottomCenter,\n\t\t\t\ttopLeft: anchors.topLeft,\n\t\t\t\tbottomLeft: anchors.bottomLeft\n\t\t\t});\n\t\t\treturn sig;\n\t\t};\n\t\tconst getTrackById = (trackId) => {\n\t\t\tlet sig = this._trackCache.get(trackId);\n\t\t\tif (!sig) {\n\t\t\t\tsig = buildTrack((frame) => this.getObjectResult(frame).objects.find((o) => o.trackId === trackId) ?? neutralTrack(trackId), `track_${trackId}`, void 0, trackId);\n\t\t\t\tthis._trackCache.set(trackId, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst getTrackByCategory = (category, rank = 0) => {\n\t\t\tconst cacheKey = `${category.toLowerCase()}_${rank}`;\n\t\t\tlet sig = this._categoryCache.get(cacheKey);\n\t\t\tif (!sig) {\n\t\t\t\tsig = buildTrack((frame) => {\n\t\t\t\t\treturn this.getObjectResult(frame).objects.filter((o) => o.category.toLowerCase() === category.toLowerCase() && o.active)[rank] ?? neutralTrack(0, category);\n\t\t\t\t}, `cat_${category}_${rank}`, category);\n\t\t\t\tthis._categoryCache.set(cacheKey, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst primaryTrack = buildTrack((frame) => {\n\t\t\tconst res = this.getObjectResult(frame);\n\t\t\tif (res.objects.length === 0) return neutralTrack(0);\n\t\t\tlet best = res.objects[0];\n\t\t\tfor (let i = 1; i < res.objects.length; i++) if (res.objects[i].score > best.score) best = res.objects[i];\n\t\t\treturn best;\n\t\t}, \"primary_object\");\n\t\tconst activeCategories = (frame) => {\n\t\t\tconst set = /* @__PURE__ */ new Set();\n\t\t\tfor (const o of this.getObjectResult(frame).objects) if (o.active) set.add(o.category);\n\t\t\treturn Array.from(set).sort();\n\t\t};\n\t\tconst buildClassSignals = (category) => {\n\t\t\tconst lower = category.toLowerCase();\n\t\t\tlet sig = this._classCache.get(lower);\n\t\t\tif (sig) return sig;\n\t\t\tsig = {\n\t\t\t\tcount: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.filter((o) => o.active && o.category.toLowerCase() === lower).length, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_count`\n\t\t\t\t}),\n\t\t\t\tmaxConfidence: programmaticSignal$1((ctx) => {\n\t\t\t\t\tlet max = 0;\n\t\t\t\t\tfor (const o of this.getObjectResult(ctx.frame).objects) if (o.active && o.category.toLowerCase() === lower && o.score > max) max = o.score;\n\t\t\t\t\treturn max;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_maxConf`\n\t\t\t\t}),\n\t\t\t\tpresent: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.some((o) => o.active && o.category.toLowerCase() === lower) ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_present`\n\t\t\t\t}),\n\t\t\t\tprimary: getTrackByCategory(category)\n\t\t\t};\n\t\t\tthis._classCache.set(lower, sig);\n\t\t\treturn sig;\n\t\t};\n\t\tthis.classes = {\n\t\t\tget: buildClassSignals,\n\t\t\tget names() {\n\t\t\t\treturn activeCategories(frameSignal.value);\n\t\t\t},\n\t\t\thistogram: {\n\t\t\t\tget: (ctx) => self.getClassHistogramTensor(ctx?.frame ?? frameSignal.value),\n\t\t\t\tget value() {\n\t\t\t\t\treturn self.getClassHistogramTensor(frameSignal.value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.objects = {\n\t\t\tget: getTrackById,\n\t\t\tbyCategory: getTrackByCategory,\n\t\t\tprimary: primaryTrack,\n\t\t\tcount: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.filter((o) => o.active).length, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: \"tracked_objects_count\"\n\t\t\t}),\n\t\t\thasCategory: (category) => buildClassSignals(category).present,\n\t\t\tgetActiveTracks: (frame) => this.getObjectResult(frame).objects.filter((o) => o.active),\n\t\t\tget detectedCategories() {\n\t\t\t\treturn activeCategories(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tconst maskForTrack = (frame, trackId) => this.getMaskResult(frame).find((m) => m.trackId === trackId);\n\t\tconst subjectMask = (frame) => selectSubjectMask(this.getMaskResult(frame));\n\t\tconst buildMaskTrackSignals = (resolve$1, label) => {\n\t\t\tconst boxFor = (frame) => {\n\t\t\t\tconst mask = resolve$1(frame);\n\t\t\t\tif (!mask || mask.trackId === void 0) return void 0;\n\t\t\t\treturn this.getObjectResult(frame).objects.find((o) => o.trackId === mask.trackId);\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tget trackId() {\n\t\t\t\t\treturn resolve$1(frameSignal.value)?.trackId ?? 0;\n\t\t\t\t},\n\t\t\t\tget category() {\n\t\t\t\t\treturn resolve$1(frameSignal.value)?.category ?? \"unknown\";\n\t\t\t\t},\n\t\t\t\tarea: programmaticSignal$1((ctx) => resolve$1(ctx.frame)?.area ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_area`\n\t\t\t\t}),\n\t\t\t\tcoverage: programmaticSignal$1((ctx) => resolve$1(ctx.frame)?.coverage ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_coverage`\n\t\t\t\t}),\n\t\t\t\tsolidity: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst mask = resolve$1(ctx.frame);\n\t\t\t\t\tconst box = boxFor(ctx.frame);\n\t\t\t\t\tif (!mask || !box) return 0;\n\t\t\t\t\tconst bboxArea = box.boundingBox.width * box.boundingBox.height;\n\t\t\t\t\treturn bboxArea > 0 ? mask.area / bboxArea : 0;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_solidity`\n\t\t\t\t}),\n\t\t\t\tbboxFill: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst mask = resolve$1(ctx.frame);\n\t\t\t\t\tif (!mask || mask.width * mask.height === 0) return 0;\n\t\t\t\t\tconst box = boxFor(ctx.frame);\n\t\t\t\t\tif (!box) return 0;\n\t\t\t\t\treturn box.boundingBox.width * box.boundingBox.height / (mask.width * mask.height);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_bboxFill`\n\t\t\t\t})\n\t\t\t};\n\t\t};\n\t\tthis.masks = {\n\t\t\tget: (trackId) => {\n\t\t\t\tlet sig = this._maskTrackCache.get(trackId);\n\t\t\t\tif (!sig) {\n\t\t\t\t\tsig = buildMaskTrackSignals((frame) => maskForTrack(frame, trackId), `mask_${trackId}`);\n\t\t\t\t\tthis._maskTrackCache.set(trackId, sig);\n\t\t\t\t}\n\t\t\t\treturn sig;\n\t\t\t},\n\t\t\tsubject: buildMaskTrackSignals(subjectMask, \"subject\"),\n\t\t\tcount: programmaticSignal$1((ctx) => new Set(this.getMaskResult(ctx.frame).map((m) => m.trackId ?? -1)).size, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: \"mask_count\"\n\t\t\t})\n\t\t};\n\t\tthis.segmentation = {\n\t\t\thumanSilhouette: this.masks.subject,\n\t\t\tsubject: this.masks.subject,\n\t\t\tinstanceMasks: this.masks,\n\t\t\tmatte: {\n\t\t\t\tcoverage: programmaticSignal$1((ctx) => self.getMatteResult(ctx.frame)?.coverage ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: \"matte_coverage\"\n\t\t\t\t}),\n\t\t\t\tat: (frame) => self.getMatteResult(frame)\n\t\t\t},\n\t\t\tget stencilTexture() {\n\t\t\t\treturn self._stencilTexture;\n\t\t\t}\n\t\t};\n\t\tthis.poseLandmarksTensor = {\n\t\t\tget: (ctx) => self.getPoseLandmarksTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getPoseLandmarksTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.objectsTensor = {\n\t\t\tget: (ctx) => self.getObjectsTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getObjectsTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.masksTensor = {\n\t\t\tget: (ctx) => self.getMasksTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getMasksTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.histogramTensor = {\n\t\t\tget: (ctx) => self.getClassHistogramTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getClassHistogramTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t}\n\tsetStencilTexture(texture) {\n\t\tthis._stencilTexture = texture;\n\t}\n\tget stencilTexture() {\n\t\treturn this._stencilTexture;\n\t}\n\t/**\n\t* Reads the most recent result at or before `frame`. Vision results are written one\n\t* frame behind the plate (the node renderer reads back the previous frame to infer),\n\t* and pinned-signal layout runs before the current frame's inference, so a strict\n\t* per-frame lookup would always miss. Walking back a few frames keeps signals live at\n\t* a stable one-frame lag instead of snapping to neutral defaults.\n\t*/\n\tlatestAtOrBefore(cache, frame, maxBack = 8) {\n\t\tconst start = this.clamp(frame);\n\t\tconst floor = Math.max(0, start - maxBack);\n\t\tfor (let f = start; f >= floor; f--) {\n\t\t\tconst value = cache.get(f);\n\t\t\tif (value !== void 0) return value;\n\t\t}\n\t}\n\tinvalidateSignals() {\n\t\tfor (const sig of this._registeredSignals) sig.invalidate();\n\t}\n\tsetPoseResult(frame, result) {\n\t\tthis._poseCache.set(this.clamp(frame), result);\n\t\tthis.invalidateSignals();\n\t}\n\tgetPoseResult(frame) {\n\t\treturn this.latestAtOrBefore(this._poseCache, frame) ?? createNeutralPoseResult();\n\t}\n\tsetObjectResult(frame, result) {\n\t\tconst normalized = \"objects\" in result ? result : {\n\t\t\tobjects: result,\n\t\t\trawDetections: []\n\t\t};\n\t\tthis._objectCache.set(this.clamp(frame), {\n\t\t\tobjects: normalized.objects,\n\t\t\trawDetections: normalized.rawDetections ?? []\n\t\t});\n\t\tthis.invalidateSignals();\n\t}\n\tgetObjectResult(frame) {\n\t\treturn this.latestAtOrBefore(this._objectCache, frame) ?? createNeutralObjectResult();\n\t}\n\tsetMaskResult(frame, masks) {\n\t\tthis._maskCache.set(this.clamp(frame), masks);\n\t\tthis.invalidateSignals();\n\t}\n\tgetMaskResult(frame) {\n\t\treturn this.latestAtOrBefore(this._maskCache, frame) ?? [];\n\t}\n\tsetMatteResult(frame, matte) {\n\t\tthis._matteCache.set(this.clamp(frame), matte);\n\t\tthis.invalidateSignals();\n\t}\n\tgetMatteResult(frame) {\n\t\treturn this.latestAtOrBefore(this._matteCache, frame);\n\t}\n\t/**\n\t* Serializable snapshot of one frame's object / class / mask signals.\n\t* Synchronous — reads only the per-frame caches, never triggers inference.\n\t*/\n\tsummary(frame = frameSignal.value) {\n\t\tconst f = this.clamp(frame);\n\t\tconst res = this.getObjectResult(f);\n\t\tconst objects = res.objects.map((o) => ({\n\t\t\ttrackId: o.trackId,\n\t\t\tcategory: o.category,\n\t\t\tscore: o.score,\n\t\t\tcenter: [o.centerX, o.centerY],\n\t\t\tspeed: o.speed,\n\t\t\tactive: o.active\n\t\t}));\n\t\tconst classSet = /* @__PURE__ */ new Set();\n\t\tfor (const o of res.objects) if (o.active) classSet.add(o.category);\n\t\tconst masks = {};\n\t\tfor (const m of this.getMaskResult(f)) masks[m.category] = (masks[m.category] ?? 0) + 1;\n\t\treturn {\n\t\t\tframe: f,\n\t\t\tobjects,\n\t\t\tclasses: Array.from(classSet).sort(),\n\t\t\tmasks\n\t\t};\n\t}\n\t/** Primary person's 17 keypoints as a [17, 3] float32 tensor. */\n\tgetPoseLandmarksTensor(frame) {\n\t\tconst kpts = this.getPoseResult(frame).people[0]?.keypoints ?? [];\n\t\tconst data = new Float32Array(51);\n\t\tfor (let i = 0; i < 17; i++) {\n\t\t\tdata[i * 3] = kpts[i]?.x ?? .5;\n\t\t\tdata[i * 3 + 1] = kpts[i]?.y ?? .5;\n\t\t\tdata[i * 3 + 2] = kpts[i]?.visibility ?? 0;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [17, 3],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Up to 16 active tracks as [16, 8]: [active, categoryHash, x, y, w, h, vx, vy]. */\n\tgetObjectsTensor(frame, maxObjects = 16) {\n\t\tconst res = this.getObjectResult(frame);\n\t\tconst data = new Float32Array(maxObjects * 8);\n\t\tconst count = Math.min(maxObjects, res.objects.length);\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst obj = res.objects[i];\n\t\t\tconst off = i * 8;\n\t\t\tlet catHash = 0;\n\t\t\tfor (let c = 0; c < obj.category.length; c++) catHash = catHash * 31 + obj.category.charCodeAt(c) & 65535;\n\t\t\tdata[off] = obj.active ? 1 : 0;\n\t\t\tdata[off + 1] = catHash;\n\t\t\tdata[off + 2] = obj.centerX;\n\t\t\tdata[off + 3] = obj.centerY;\n\t\t\tdata[off + 4] = obj.boundingBox.width;\n\t\t\tdata[off + 5] = obj.boundingBox.height;\n\t\t\tdata[off + 6] = obj.velocity.vx;\n\t\t\tdata[off + 7] = obj.velocity.vy;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [maxObjects, 8],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Per-mask coverage + solidity as [16, 2]. */\n\tgetMasksTensor(frame, maxMasks = 16) {\n\t\tconst masks = this.getMaskResult(frame);\n\t\tconst data = new Float32Array(maxMasks * 2);\n\t\tconst count = Math.min(maxMasks, masks.length);\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst m = masks[i];\n\t\t\tdata[i * 2] = m.coverage;\n\t\t\tconst box = this.getObjectResult(frame).objects.find((o) => o.trackId === m.trackId);\n\t\t\tconst bboxArea = box ? box.boundingBox.width * box.boundingBox.height : 0;\n\t\t\tdata[i * 2 + 1] = bboxArea > 0 ? m.area / bboxArea : 0;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [maxMasks, 2],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Per-class detection histogram for the frame as [nc] float32 (COCO 80 by default). */\n\tgetClassHistogramTensor(frame, nc = 80) {\n\t\tconst data = new Float32Array(nc);\n\t\tfor (const o of this.getObjectResult(frame).objects) if (o.active) {\n\t\t\tconst idx = COCO_CLASS_INDEX_BY_NAME.get(o.category.toLowerCase());\n\t\t\tif (idx !== void 0) data[idx] += 1;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [nc],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\tclamp(frame) {\n\t\treturn Math.max(0, Math.min(this._totalFrames - 1, Math.round(frame)));\n\t}\n};\nfunction createVisionBundle(options) {\n\treturn new VisionBundle(options);\n}\nconst COCO_CLASS_INDEX_BY_NAME = new Map(COCO_CLASSES.map((name, index) => [name, index]));\n\n//#endregion\n//#region src/spatial/spatial-pin.ts\nfunction pinNodeToLandmark(node, target, options = {}) {\n\tconst offX = options.offsetX ?? 0;\n\tconst offY = options.offsetY ?? 0;\n\tconst offZ = options.offsetZ ?? 0;\n\tif (!target || typeof target !== \"object\") return node;\n\tif (\"screenX\" in target && target.screenX && typeof target.screenX === \"object\") {\n\t\tconst signals = target;\n\t\tnode.x = offX !== 0 ? signals.screenX.add(offX) : signals.screenX;\n\t\tnode.y = offY !== 0 ? signals.screenY.add(offY) : signals.screenY;\n\t\tnode.z = offZ !== 0 ? signals.z.add(offZ) : signals.z;\n\t} else if (\"x\" in target && typeof target.x === \"object\" && target.x !== null) {\n\t\tconst signals = target;\n\t\tnode.x = offX !== 0 ? signals.x.add(offX) : signals.x;\n\t\tnode.y = offY !== 0 ? signals.y.add(offY) : signals.y;\n\t\tnode.z = offZ !== 0 ? signals.z.add(offZ) : signals.z;\n\t} else {\n\t\tconst staticCoord = target;\n\t\tnode.x = (staticCoord.screenX ?? staticCoord.x) + offX;\n\t\tnode.y = (staticCoord.screenY ?? staticCoord.y) + offY;\n\t\tnode.z = (staticCoord.z ?? 0) + offZ;\n\t}\n\treturn node;\n}\nfunction pinNodeToObject(node, target, options = {}) {\n\tif (!target || typeof target !== \"object\") return node;\n\tif (\"anchors\" in target && target.anchors) {\n\t\tconst track = target;\n\t\tconst anchorName = options.anchor ?? (options.matchWidth || options.matchHeight ? \"topLeft\" : \"center\");\n\t\tconst rawAnchor = track.anchors[anchorName] ?? track.center;\n\t\tlet resolvedAnchor = rawAnchor;\n\t\tif (options.smoothFrames && options.smoothFrames > 1) resolvedAnchor = {\n\t\t\tx: rawAnchor.x.smooth(options.smoothFrames),\n\t\t\ty: rawAnchor.y.smooth(options.smoothFrames),\n\t\t\tz: rawAnchor.z,\n\t\t\tscreenX: rawAnchor.screenX.smooth(options.smoothFrames),\n\t\t\tscreenY: rawAnchor.screenY.smooth(options.smoothFrames)\n\t\t};\n\t\tif (options.matchWidth) node.width = options.smoothFrames && options.smoothFrames > 1 ? track.bounds.screenWidth.smooth(options.smoothFrames) : track.bounds.screenWidth;\n\t\tif (options.matchHeight) node.height = options.smoothFrames && options.smoothFrames > 1 ? track.bounds.screenHeight.smooth(options.smoothFrames) : track.bounds.screenHeight;\n\t\tif (options.hideWhenLost) node.opacity = track.active;\n\t\treturn pinNodeToLandmark(node, resolvedAnchor, options);\n\t}\n\treturn pinNodeToLandmark(node, target, options);\n}\n\n//#endregion\n//#region src/vision-node.ts\n/** Tasks a config turns on; detection is the default when nothing is enabled explicitly. */\nfunction enabledTasks(config) {\n\tconst tasks = [];\n\tif (config.enableDetection === true) tasks.push(\"detect\");\n\tif (config.enableSegmentation === true) tasks.push(\"segment\");\n\tif (config.enablePose === true) tasks.push(\"pose\");\n\tif (config.enableMatte === true) tasks.push(\"matte\");\n\treturn tasks.length > 0 ? tasks : [\"detect\"];\n}\n/**\n* Vision node.\n*\n* LAZY BY CONSTRUCTION: creating a VisionNode performs ZERO I/O — no model downloads, no\n* sessions, no file probes. The first inference call (or an explicit `await vision.ready()`)\n* downloads the required models.\n*/\nvar VisionNode = class VisionNode {\n\tid;\n\tkind = \"vision\";\n\tsource;\n\tconfig;\n\tvision;\n\t_runner;\n\t/** Runner construction options (modelsDir, provider, store, …) — injectable for tests/agents. */\n\t_runnerOptions;\n\tconstructor(source, config = {}, bundleOptions = {}, runnerOptions = {}) {\n\t\tthis.id = `vision-${Math.random().toString(36).slice(2, 9)}`;\n\t\tthis.source = source;\n\t\tthis.config = config;\n\t\tthis._runnerOptions = runnerOptions;\n\t\tthis.vision = new VisionBundle({\n\t\t\t...bundleOptions,\n\t\t\tconfig\n\t\t});\n\t}\n\t/** Lazily-created runner; downloads happen on its first inference. */\n\trunner() {\n\t\tif (!this._runner) {\n\t\t\tconst { variant, confidence, classes, modelsDir, baseUrl, maskThreshold, featherRadius } = this.config;\n\t\t\tthis._runner = VisionRunner.create({\n\t\t\t\t...this._runnerOptions,\n\t\t\t\t...variant !== void 0 ? { variant } : {},\n\t\t\t\t...confidence !== void 0 ? { confidence } : {},\n\t\t\t\t...classes !== void 0 ? { classes } : {},\n\t\t\t\t...modelsDir !== void 0 ? { modelsDir } : {},\n\t\t\t\t...baseUrl !== void 0 ? { baseUrl } : {},\n\t\t\t\t...maskThreshold !== void 0 ? { maskThreshold } : {},\n\t\t\t\t...featherRadius !== void 0 ? { featherRadius } : {}\n\t\t\t});\n\t\t}\n\t\treturn this._runner;\n\t}\n\t/** Explicit warm-up — downloads the models for the enabled tasks, ahead of first inference. */\n\tasync ready() {\n\t\tconst runner = this.runner();\n\t\tawait runner.preload(enabledTasks(this.config));\n\t\treturn runner;\n\t}\n\tclose() {\n\t\tthis._runner?.close();\n\t\tthis._runner = void 0;\n\t}\n\tstatic attach(source, config = {}, bundleOptions = {}) {\n\t\tconst node = new VisionNode(source, config, bundleOptions);\n\t\tconst vision = node.vision;\n\t\tObject.defineProperties(vision, {\n\t\t\tnode: {\n\t\t\t\tvalue: node.toNode(),\n\t\t\t\tenumerable: true\n\t\t\t},\n\t\t\tready: { value: () => node.ready() },\n\t\t\trunner: { value: () => node.runner() },\n\t\t\tclose: { value: () => node.close() }\n\t\t});\n\t\treturn vision;\n\t}\n\ttoNode() {\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tkind: \"vision\",\n\t\t\tsource: this.source,\n\t\t\tconfig: this.config\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/index.ts\nvar src_exports = /* @__PURE__ */ __exportAll({\n\tAutoSessionProvider: () => AutoSessionProvider,\n\tCOCO17_BONES: () => COCO17_BONES,\n\tCOCO17_KEYPOINTS: () => COCO17_KEYPOINTS,\n\tCOCO17_KEYPOINT_COUNT: () => COCO17_KEYPOINT_COUNT,\n\tCOCO17_KEYPOINT_NAMES: () => COCO17_KEYPOINT_NAMES,\n\tCOCO_CLASSES: () => COCO_CLASSES,\n\tNodeSessionProvider: () => NodeSessionProvider,\n\tNodeWebGPUProvider: () => NodeWebGPUProvider,\n\tPREPROCESS_BY_FAMILY: () => PREPROCESS_BY_FAMILY,\n\tPoseSkeletonRenderer: () => PoseSkeletonRenderer,\n\tSegmentationTexturePool: () => SegmentationTexturePool,\n\tSpatialLandmarkTransformer: () => SpatialLandmarkTransformer,\n\tTemporalObjectTracker: () => TemporalObjectTracker,\n\tVISION_MODELS: () => VISION_MODELS,\n\tVISION_TASKS: () => VISION_TASKS,\n\tVISION_VARIANTS: () => VISION_VARIANTS,\n\tVisionBundle: () => VisionBundle,\n\tVisionModelStore: () => VisionModelStore,\n\tVisionNode: () => VisionNode,\n\tVisionRunner: () => VisionRunner,\n\tanalyzeSequence: () => analyzeSequence,\n\tcomputeInputTransform: () => computeInputTransform,\n\tcomputeIoU: () => computeIoU,\n\tcreateDefaultSessionProvider: () => createDefaultSessionProvider,\n\tcreateNeutralLandmarks: () => createNeutralLandmarks,\n\tcreateNeutralObjectResult: () => createNeutralObjectResult,\n\tcreateNeutralPoseResult: () => createNeutralPoseResult,\n\tcreateNodeWebGPUProvider: () => createNodeWebGPUProvider,\n\tcreateVisionBundle: () => createVisionBundle,\n\tdecodeRtmdetIns: () => decodeRtmdetIns,\n\tdecodeRtmo: () => decodeRtmo,\n\tdecodeSelfie: () => decodeSelfie,\n\tensureNodeWebGPU: () => ensureNodeWebGPU,\n\tgetDefaultModelsDir: () => getDefaultModelsDir,\n\tgetPersonBoundingBox: () => getPersonBoundingBox,\n\timageToTensor: () => imageToTensor,\n\tmaskBounds: () => maskBounds,\n\tmatchPoseToTracks: () => matchPoseToTracks,\n\tmergeSubjectMask: () => mergeSubjectMask,\n\tmodelKeyFor: () => modelKeyFor,\n\tpinNodeToLandmark: () => pinNodeToLandmark,\n\tpinNodeToObject: () => pinNodeToObject,\n\tpreprocessSpec: () => preprocessSpec,\n\tprobabilityToAlpha: () => probabilityToAlpha,\n\tselectSubjectMask: () => selectSubjectMask,\n\tsetDefaultSessionProvider: () => setDefaultSessionProvider,\n\ttoSourcePoint: () => toSourcePoint\n});\n\n//#endregion\nexport { PoseSkeletonRenderer as A, computeInputTransform as B, hasWebGPU as C, VisionModelStore as D, createNeutralPoseResult as E, COCO17_KEYPOINT_COUNT as F, TemporalObjectTracker as G, preprocessSpec as H, decodeRtmo as I, computeIoU as K, decodeRtmdetIns as L, COCO17_KEYPOINTS as M, COCO17_KEYPOINT_NAMES as N, getDefaultModelsDir as O, decodeSelfie as P, probabilityToAlpha as R, createWebGPUProvider as S, createNeutralObjectResult as T, toSourcePoint as U, imageToTensor as V, analyzeSequence as W, setDefaultSessionProvider as _, VisionBundle as a, ensureNodeWebGPU as b, matchPoseToTracks as c, mergeSubjectMask as d, selectSubjectMask as f, createDefaultSessionProvider as g, NodeSessionProvider as h, pinNodeToObject as i, COCO17_BONES as j, SegmentationTexturePool as k, SpatialLandmarkTransformer as l, AutoSessionProvider as m, VisionNode as n, createVisionBundle as o, VisionRunner as p, pinNodeToLandmark as r, getPersonBoundingBox as s, src_exports as t, maskBounds as u, NodeWebGPUProvider as v, createNeutralLandmarks as w, WebGPUProvider as x, createNodeWebGPUProvider as y, PREPROCESS_BY_FAMILY as z };\n//# sourceMappingURL=src-C2sA_wDT.mjs.map","import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { PoseSkeletonRenderer, TemporalObjectTracker, VisionRunner, maskBounds, matchPoseToTracks, mergeSubjectMask } from \"@framefields/vision\";\n\n//#region src/renderers/frame-cache.ts\nlet scratchValues = new Uint8Array(0);\nlet scratchLengths = new Uint32Array(0);\nfunction encodeMask(mask, width, height) {\n\tif (scratchValues.length < mask.length) {\n\t\tscratchValues = new Uint8Array(mask.length);\n\t\tscratchLengths = new Uint32Array(mask.length);\n\t}\n\tconst values = scratchValues;\n\tconst lengths = scratchLengths;\n\tlet runs = 0;\n\tlet start = 0;\n\tfor (let i = 1; i <= mask.length; i++) if (i === mask.length || mask[i] !== mask[start]) {\n\t\tvalues[runs] = mask[start];\n\t\tlengths[runs] = i - start;\n\t\truns++;\n\t\tstart = i;\n\t}\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tvalues: values.slice(0, runs),\n\t\tlengths: lengths.slice(0, runs)\n\t};\n}\nfunction decodeMask(rle) {\n\tconst out = new Uint8Array(rle.width * rle.height);\n\tlet at = 0;\n\tfor (let r = 0; r < rle.values.length; r++) {\n\t\tconst end = at + rle.lengths[r];\n\t\tif (rle.values[r] !== 0) out.fill(rle.values[r], at, end);\n\t\tat = end;\n\t}\n\treturn out;\n}\nfunction rleBytes(rle) {\n\treturn rle.values.byteLength + rle.lengths.byteLength;\n}\nfunction toCachedMask(mask) {\n\tconst { mask: data, ...rest } = mask;\n\treturn {\n\t\t...rest,\n\t\trle: encodeMask(data, mask.width, mask.height)\n\t};\n}\nfunction fromCachedMask(mask) {\n\tconst { rle, ...rest } = mask;\n\treturn {\n\t\t...rest,\n\t\tmask: decodeMask(rle)\n\t};\n}\nfunction resultBytes(result) {\n\tlet bytes = 512 + result.detections.length * 128 + result.objects.length * 256;\n\tfor (const m of result.masks ?? []) bytes += rleBytes(m.rle);\n\tif (result.subject) bytes += rleBytes(result.subject.mask.rle);\n\treturn bytes;\n}\n/** Results by source (node + inference settings) and frame, least recently used out first. */\nvar VisionFrameCache = class {\n\tentries = /* @__PURE__ */ new Map();\n\tbytes = 0;\n\tconstructor(maxBytes = 256 * 1024 * 1024) {\n\t\tthis.maxBytes = maxBytes;\n\t}\n\tget(source, frame) {\n\t\tconst key = `${source}#${frame}`;\n\t\tconst hit = this.entries.get(key);\n\t\tif (hit) {\n\t\t\tthis.entries.delete(key);\n\t\t\tthis.entries.set(key, hit);\n\t\t}\n\t\treturn hit;\n\t}\n\tset(source, frame, result) {\n\t\tconst key = `${source}#${frame}`;\n\t\tconst old = this.entries.get(key);\n\t\tif (old) {\n\t\t\tthis.bytes -= resultBytes(old);\n\t\t\tthis.entries.delete(key);\n\t\t}\n\t\tthis.entries.set(key, result);\n\t\tthis.bytes += resultBytes(result);\n\t\tfor (const [k, v] of this.entries) {\n\t\t\tif (this.bytes <= this.maxBytes) break;\n\t\t\tthis.entries.delete(k);\n\t\t\tthis.bytes -= resultBytes(v);\n\t\t}\n\t}\n\tclear() {\n\t\tthis.entries.clear();\n\t\tthis.bytes = 0;\n\t}\n\tget size() {\n\t\treturn this.entries.size;\n\t}\n};\n\n//#endregion\n//#region src/renderers/matte-compositor.ts\n/**\n* GPU composite for the mask-family modes: the picture times the subject mask,\n* in one full-screen pass. Replaces building the RGBA result on the CPU and\n* uploading it; only the 8-bit mask goes to the GPU.\n*\n* - matte: picture × mask (premultiplied, so the background is transparent)\n* - mask: white silhouette (rgb = mask, a = 1)\n* - crop: matte, with the subject's bounding box stretched to the frame\n*/\nconst WGSL = `\nstruct Params {\n\tmode: u32, // 0 matte, 1 mask, 2 crop\n\t_pad: u32,\n\tcropMin: vec2<f32>, // uv of the subject bounds (crop)\n\tcropMax: vec2<f32>,\n\t_pad2: vec2<f32>,\n};\n\n@group(0) @binding(0) var<uniform> params: Params;\n@group(0) @binding(1) var picture: texture_2d<f32>;\n@group(0) @binding(2) var mask: texture_2d<f32>;\n@group(0) @binding(3) var samp: sampler;\n\nstruct VSOut {\n\t@builtin(position) pos: vec4<f32>,\n\t@location(0) uv: vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) i: u32) -> VSOut {\n\tvar p = array<vec2<f32>, 3>(vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0));\n\tvar out: VSOut;\n\tout.pos = vec4(p[i], 0.0, 1.0);\n\tout.uv = vec2(p[i].x * 0.5 + 0.5, 0.5 - p[i].y * 0.5);\n\treturn out;\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tvar uv = in.uv;\n\tif (params.mode == 2u) {\n\t\tuv = mix(params.cropMin, params.cropMax, uv);\n\t}\n\tlet m = textureSampleLevel(mask, samp, uv, 0.0).r;\n\tif (params.mode == 1u) {\n\t\treturn vec4(m, m, m, 1.0);\n\t}\n\treturn textureSampleLevel(picture, samp, uv, 0.0) * m;\n}\n`;\nvar MatteCompositor = class {\n\tpipeline;\n\tsampler;\n\tuniforms = [];\n\tuniformIndex = 0;\n\t/** One 8-bit mask texture per node, rewritten each frame. */\n\tmasks = /* @__PURE__ */ new Map();\n\tconstructor(device, format) {\n\t\tthis.device = device;\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tcode: WGSL\n\t\t});\n\t\tthis.pipeline = device.createRenderPipeline({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tlayout: \"auto\",\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-list\" }\n\t\t});\n\t\tthis.sampler = device.createSampler({\n\t\t\tmagFilter: \"linear\",\n\t\t\tminFilter: \"linear\"\n\t\t});\n\t}\n\t/** Uploads a frame-sized 0..255 mask for `key` and returns its texture. */\n\tuploadMask(key, mask, width, height) {\n\t\tlet tex = this.masks.get(key);\n\t\tif (!tex || tex.width !== width || tex.height !== height) {\n\t\t\ttex?.destroy();\n\t\t\ttex = this.device.createTexture({\n\t\t\t\tlabel: `vision_mask_${key}`,\n\t\t\t\tsize: [width, height],\n\t\t\t\tformat: \"r8unorm\",\n\t\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST\n\t\t\t});\n\t\t\tthis.masks.set(key, tex);\n\t\t}\n\t\tconst aligned = Math.ceil(width / 256) * 256;\n\t\tlet bytes = mask;\n\t\tif (aligned !== width) {\n\t\t\tbytes = new Uint8Array(aligned * height);\n\t\t\tfor (let y = 0; y < height; y++) bytes.set(mask.subarray(y * width, (y + 1) * width), y * aligned);\n\t\t}\n\t\tthis.device.queue.writeTexture({ texture: tex }, bytes.buffer, {\n\t\t\toffset: bytes.byteOffset,\n\t\t\tbytesPerRow: aligned,\n\t\t\trowsPerImage: height\n\t\t}, {\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\treturn tex;\n\t}\n\t/** Clears `target` and draws `picture` through `mask` into it. */\n\tdraw(encoder, target, picture, mask, mode, bounds) {\n\t\tconst w = mask.width;\n\t\tconst h = mask.height;\n\t\tconst data = new Float32Array(8);\n\t\tconst view = new Uint32Array(data.buffer);\n\t\tview[0] = mode === \"matte\" ? 0 : mode === \"mask\" ? 1 : 2;\n\t\tif (mode === \"crop\" && bounds) {\n\t\t\tdata[2] = bounds.x0 / w;\n\t\t\tdata[3] = bounds.y0 / h;\n\t\t\tdata[4] = (bounds.x1 + 1) / w;\n\t\t\tdata[5] = (bounds.y1 + 1) / h;\n\t\t} else {\n\t\t\tdata[2] = 0;\n\t\t\tdata[3] = 0;\n\t\t\tdata[4] = 1;\n\t\t\tdata[5] = 1;\n\t\t\tif (mode === \"crop\") view[0] = 0;\n\t\t}\n\t\tif (this.uniformIndex >= this.uniforms.length) this.uniforms.push(this.device.createBuffer({\n\t\t\tsize: data.byteLength,\n\t\t\tusage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n\t\t}));\n\t\tconst uniform = this.uniforms[this.uniformIndex];\n\t\tthis.uniformIndex = (this.uniformIndex + 1) % 16;\n\t\tthis.device.queue.writeBuffer(uniform, 0, data);\n\t\tconst bindGroup = this.device.createBindGroup({\n\t\t\tlayout: this.pipeline.getBindGroupLayout(0),\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: uniform }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: picture.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: mask.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: this.sampler\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t\tconst pass = encoder.beginRenderPass({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tcolorAttachments: [{\n\t\t\t\tview: target,\n\t\t\t\tloadOp: \"clear\",\n\t\t\t\tstoreOp: \"store\",\n\t\t\t\tclearValue: {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}\n\t\t\t}]\n\t\t});\n\t\tpass.setPipeline(this.pipeline);\n\t\tpass.setBindGroup(0, bindGroup);\n\t\tpass.draw(3);\n\t\tpass.end();\n\t}\n};\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nlet sharedRunner = null;\nlet sharedSkeletonRenderer = null;\nlet sharedCompositor = null;\nlet sharedCompositorFormat = null;\n/** Analysed frames, shared by every vision node in the process. */\nconst frameCache = new VisionFrameCache();\n/** The frame each node's child texture holds (drawn on its last call). */\nconst heldFrameByNode = /* @__PURE__ */ new Map();\n/** Per node: a copy of the held frame, and the composited matte. */\nconst heldTextures = /* @__PURE__ */ new Map();\nconst matteTextures = /* @__PURE__ */ new Map();\n/** One tracker per vision node — track ids must not mix across nodes/sources. */\nconst objectTrackers = /* @__PURE__ */ new Map();\n/**\n* Persistent per-node child textures. The shared frame encoder is submitted at\n* the END of the frame, so a node renderer cannot read back the child it just\n* drew. We keep the texture around and read back the PREVIOUS frame's pixels at\n* the start of the next call — a stable one-frame delay instead of the\n* unpredictable multi-frame lag you get from pooled textures.\n*\n* Keyed on the stable Vision `Effect` instance (render ids change every frame),\n* with a size-keyed fallback for raw operation nodes.\n*/\nconst childTexturesByEffect = /* @__PURE__ */ new WeakMap();\nconst childTexturesByKey = /* @__PURE__ */ new Map();\n/**\n* Last successful subject mask, reused for a few frames when the model misses —\n* a transient miss then holds the silhouette instead of flashing the raw plate.\n* Keyed per node/effect so multiple vision nodes do not collide.\n*/\nconst lastSubjectByNode = /* @__PURE__ */ new Map();\nconst SUBJECT_HOLD_FRAMES = 3;\n/** A per-node texture shaped like `like`, recreated when the size changes. */\nfunction nodeTexture(textures, device, key, like, usage, label) {\n\tlet tex = textures.get(key);\n\tif (!tex || tex.width !== like.width || tex.height !== like.height || tex.format !== like.format) {\n\t\ttex?.destroy();\n\t\ttex = device.createTexture({\n\t\t\tsize: [like.width, like.height],\n\t\t\tformat: like.format,\n\t\t\tusage,\n\t\t\tlabel\n\t\t});\n\t\ttextures.set(key, tex);\n\t}\n\treturn tex;\n}\nconst heldTexture = (device, key, like) => nodeTexture(heldTextures, device, key, like, GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING, \"vision_held_frame\");\nconst matteTexture = (device, key, like) => nodeTexture(matteTextures, device, key, like, GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC, \"vision_matte\");\n/** Everything that decides a frame's results besides the frame itself. */\nfunction cacheSource(nodeKey, child, op, width, height) {\n\tconst c = child;\n\treturn JSON.stringify([\n\t\tnodeKey,\n\t\tc?.operation?.id ?? c?.id ?? null,\n\t\twidth,\n\t\theight,\n\t\top.mode ?? \"passthrough\",\n\t\top.variant,\n\t\top.confidence,\n\t\top.classes,\n\t\top.maskThreshold,\n\t\top.featherRadius,\n\t\top.matteSource,\n\t\top.keyBackground === true,\n\t\top.maxMissedFrames\n\t]);\n}\n/** The background-key threshold at `frame` (it may be animated). */\nfunction backgroundKeyThreshold(op, frame, fps) {\n\tconst raw = op.backgroundKeyThreshold;\n\tif (typeof raw === \"number\") return raw;\n\tif (typeof raw?.get === \"function\") return Number(raw.get({\n\t\tframe,\n\t\tfps\n\t}));\n\tif (typeof raw?._value === \"number\") return Number(raw._value);\n\treturn 70;\n}\n/**\n* The model's subject, or the last one through brief misses: a transient miss\n* then holds the silhouette instead of flashing the raw plate.\n*/\nfunction selectSubject(selected, nodeKey, frame) {\n\tif (selected) {\n\t\tlastSubjectByNode.set(nodeKey, {\n\t\t\tmask: selected,\n\t\t\tframe\n\t\t});\n\t\treturn selected;\n\t}\n\tconst last = lastSubjectByNode.get(nodeKey);\n\tif (last && frame - last.frame <= SUBJECT_HOLD_FRAMES) return last.mask;\n}\n/**\n* Lazy shared runner — `create()` is a pure constructor (zero I/O); the first frame that\n* requests a task triggers that task's model download at inference time (never at init).\n* Recreated only when an option that changes inference changes.\n*/\nfunction getSharedRunner(op) {\n\tconst options = {\n\t\tvariant: op.variant,\n\t\tconfidence: op.confidence,\n\t\tclasses: op.classes,\n\t\tmaskThreshold: op.maskThreshold,\n\t\tfeatherRadius: op.featherRadius,\n\t\tmodelsDir: op.modelsDir,\n\t\tbaseUrl: op.baseUrl\n\t};\n\tconst key = JSON.stringify(options);\n\tif (sharedRunner?.key !== key) {\n\t\tsharedRunner?.runner.close();\n\t\tsharedRunner = {\n\t\t\tkey,\n\t\t\trunner: VisionRunner.create(options)\n\t\t};\n\t}\n\treturn sharedRunner.runner;\n}\nfunction getObjectTracker(nodeKey, op) {\n\tlet tracker = objectTrackers.get(nodeKey);\n\tif (!tracker) {\n\t\ttracker = new TemporalObjectTracker({ maxMissedFrames: op.maxMissedFrames ?? 15 });\n\t\tobjectTrackers.set(nodeKey, tracker);\n\t}\n\treturn tracker;\n}\n/**\n* Normalizes the runner's pose keypoints (plate pixel space) to [0, 1] landmarks, which is\n* the contract the signal bundle and the skeleton pipeline expect.\n*/\nfunction normalizePoseKeypoints(result, width, height) {\n\tif (width <= 0 || height <= 0) return result;\n\treturn { people: result.people.map((person) => ({\n\t\t...person,\n\t\tkeypoints: person.keypoints.map((k) => ({\n\t\t\tx: k.x / width,\n\t\t\ty: k.y / height,\n\t\t\tvisibility: k.visibility\n\t\t}))\n\t})) };\n}\n/** Assigns each decoded instance mask to the temporal track whose box center is nearest the mask's centroid. */\nfunction assignMasksToTracks(masks, tracked) {\n\treturn masks.map((mask) => {\n\t\tconst { cx, cy } = maskCentroid(mask);\n\t\tlet best = null;\n\t\tfor (const obj of tracked) {\n\t\t\tconst dx = obj.centerX - cx;\n\t\t\tconst dy = obj.centerY - cy;\n\t\t\tconst distance = dx * dx + dy * dy;\n\t\t\tif (!best || distance < best.distance) best = {\n\t\t\t\ttrackId: obj.trackId,\n\t\t\t\tdistance\n\t\t\t};\n\t\t}\n\t\treturn best ? {\n\t\t\t...mask,\n\t\t\ttrackId: best.trackId\n\t\t} : mask;\n\t});\n}\n/**\n* Grows a subject mask into connected foreground pixels — seeding a flood fill\n* from the subject through pixels that differ from the sampled backdrop recovers\n* thin or fast-moving edges (hair, fabric) without adding a near-uniform studio\n* wall or its soft grey shadow.\n*/\nfunction fillInternalHoles(mask, width, height) {\n\tconst n = width * height;\n\tconst exterior = new Uint8Array(n);\n\tconst queue = new Int32Array(n);\n\tlet tail = 0;\n\tconst seed = (i) => {\n\t\tif (exterior[i] || mask[i] > 0) return;\n\t\texterior[i] = 1;\n\t\tqueue[tail++] = i;\n\t};\n\tfor (let x = 0; x < width; x++) {\n\t\tseed(x);\n\t\tseed((height - 1) * width + x);\n\t}\n\tfor (let y = 0; y < height; y++) {\n\t\tseed(y * width);\n\t\tseed(y * width + width - 1);\n\t}\n\tlet head = 0;\n\twhile (head < tail) {\n\t\tconst i = queue[head++];\n\t\tconst x = i % width;\n\t\tlet j = i + 1;\n\t\tif (x + 1 < width && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - 1;\n\t\tif (x > 0 && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i + width;\n\t\tif (j < n && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - width;\n\t\tif (j >= 0 && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t}\n\tfor (let i = 0; i < n; i++) if (mask[i] === 0 && exterior[i] === 0) mask[i] = 255;\n}\nfunction smoothMaskBoundary(mask, width, height, radius = 2) {\n\tif (radius <= 0) return mask;\n\tconst temp = new Uint8Array(width * height);\n\tconst out = new Uint8Array(width * height);\n\tconst div = 2 * radius + 1;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tlet sum = 0;\n\t\tfor (let k = -radius; k <= radius; k++) {\n\t\t\tconst x = Math.max(0, Math.min(width - 1, k));\n\t\t\tsum += mask[row + x];\n\t\t}\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\ttemp[row + x] = Math.round(sum / div);\n\t\t\tconst xOut = Math.max(0, x - radius);\n\t\t\tconst xIn = Math.min(width - 1, x + radius + 1);\n\t\t\tsum += mask[row + xIn] - mask[row + xOut];\n\t\t}\n\t}\n\tconst sums = new Float64Array(width);\n\tfor (let k = -radius; k <= radius; k++) {\n\t\tconst row = Math.max(0, Math.min(height - 1, k)) * width;\n\t\tfor (let x = 0; x < width; x++) sums[x] += temp[row + x];\n\t}\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tconst rowOut = Math.max(0, y - radius) * width;\n\t\tconst rowIn = Math.min(height - 1, y + radius + 1) * width;\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tout[row + x] = Math.round(sums[x] / div);\n\t\t\tsums[x] += temp[rowIn + x] - temp[rowOut + x];\n\t\t}\n\t}\n\treturn out;\n}\nfunction growMaskIntoForeground(mask, width, height, pixels, threshold, featherRadius) {\n\tlet br = 0;\n\tlet bg = 0;\n\tlet bb = 0;\n\tlet count = 0;\n\tconst sample = (x, y) => {\n\t\tconst i = y * width + x;\n\t\tif (mask[i]) return;\n\t\tconst p = i * 4;\n\t\tbr += pixels[p];\n\t\tbg += pixels[p + 1];\n\t\tbb += pixels[p + 2];\n\t\tcount++;\n\t};\n\tfor (let x = 0; x < width; x += 4) {\n\t\tsample(x, 0);\n\t\tsample(x, height - 1);\n\t}\n\tfor (let y = 0; y < height; y += 4) {\n\t\tsample(0, y);\n\t\tsample(width - 1, y);\n\t}\n\tif (count === 0) return mask;\n\tbr /= count;\n\tbg /= count;\n\tbb /= count;\n\tconst n = width * height;\n\tconst fg = new Uint8Array(n);\n\tfor (let i = 0, p = 0; i < n; i++, p += 4) fg[i] = Math.max(Math.abs(pixels[p] - br), Math.abs(pixels[p + 1] - bg), Math.abs(pixels[p + 2] - bb)) > threshold ? 1 : 0;\n\tconst queue = new Int32Array(n);\n\tlet tail = 0;\n\tfor (let i = 0; i < n; i++) if (mask[i] > 0) {\n\t\tif (fg[i]) mask[i] = 255;\n\t\tqueue[tail++] = i;\n\t}\n\tlet head = 0;\n\twhile (head < tail) {\n\t\tconst i = queue[head++];\n\t\tconst x = i % width;\n\t\tlet j = i + 1;\n\t\tif (x + 1 < width && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - 1;\n\t\tif (x > 0 && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i + width;\n\t\tif (j < n && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - width;\n\t\tif (j >= 0 && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t}\n\tfillInternalHoles(mask, width, height);\n\treturn smoothMaskBoundary(mask, width, height, featherRadius !== void 0 && featherRadius > 0 ? Math.max(1, Math.min(8, Math.round(featherRadius * 50))) : 2);\n}\nfunction maskCentroid(mask) {\n\tconst { mask: data, width, height } = mask;\n\tlet sumX = 0;\n\tlet sumY = 0;\n\tlet count = 0;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tfor (let x = 0; x < width; x++) if (data[row + x] > 0) {\n\t\t\tsumX += x;\n\t\t\tsumY += y;\n\t\t\tcount++;\n\t\t}\n\t}\n\tif (count === 0) return {\n\t\tcx: 0,\n\t\tcy: 0\n\t};\n\treturn {\n\t\tcx: sumX / count,\n\t\tcy: sumY / count\n\t};\n}\nconst VisionWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetView, targetWidth, targetHeight, props, drawChild } = args;\n\tconst { virtualMedia } = props;\n\tconst rawOp = virtualMedia?.operation;\n\tif (rawOp?.op !== \"Vision\") return;\n\tconst op = rawOp;\n\tpass.end();\n\tconst childMedia = virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tconst effectKey = op.effect;\n\tconst hasEffectKey = effectKey !== void 0 && effectKey !== null;\n\tconst nodeKeyStr = virtualMedia?.id ?? rawOp?.id ?? `${targetWidth}x${targetHeight}_${op.mode}_${op.variant}_${op.keyBackground}_${op.backgroundKeyThreshold}`;\n\tconst fallbackKey = `vision-${nodeKeyStr}`;\n\tlet childTex = hasEffectKey ? childTexturesByEffect.get(effectKey) : childTexturesByKey.get(fallbackKey);\n\tif (childTex && (childTex.width !== targetWidth || childTex.height !== targetHeight)) {\n\t\tchildTex.destroy();\n\t\tchildTex = void 0;\n\t\tif (hasEffectKey) childTexturesByEffect.delete(effectKey);\n\t\telse childTexturesByKey.delete(fallbackKey);\n\t}\n\tconst hasPreviousFrame = childTex !== void 0;\n\tif (!childTex) {\n\t\tchildTex = ctx.device.createTexture({\n\t\t\tsize: [targetWidth, targetHeight],\n\t\t\tformat: ctx.renderer.format,\n\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC,\n\t\t\tlabel: \"vision_child_persistent\"\n\t\t});\n\t\tif (hasEffectKey) childTexturesByEffect.set(effectKey, childTex);\n\t\telse childTexturesByKey.set(fallbackKey, childTex);\n\t\tif (childTexturesByKey.size > 4) {\n\t\t\tconst oldest = childTexturesByKey.keys().next().value;\n\t\t\tif (oldest && oldest !== fallbackKey) {\n\t\t\t\tchildTexturesByKey.get(oldest)?.destroy();\n\t\t\t\tchildTexturesByKey.delete(oldest);\n\t\t\t}\n\t\t}\n\t}\n\tconst frameIdx = props.frame ?? 0;\n\tconst fps = props.fps ?? 24;\n\tconst mode = op.mode ?? \"passthrough\";\n\tconst isMatteMode = mode === \"mask\" || mode === \"matte\" || mode === \"crop\";\n\tconst visionBundle = op.visionBundle ?? virtualMedia.visionBundle;\n\tconst wantsDetection = op.enableDetection !== false || mode === \"boxes\" || mode === \"tracking\";\n\tconst wantsSegmentation = op.enableSegmentation === true || isMatteMode && op.matteSource !== \"selfie\";\n\tconst wantsSelfie = op.enableMatte === true || isMatteMode && op.matteSource === \"selfie\";\n\tconst wantsPose = op.enablePose === true || mode === \"skeleton\";\n\tconst cacheable = !wantsSelfie && !wantsPose && (wantsDetection || wantsSegmentation);\n\tconst source = cacheable ? cacheSource(nodeKeyStr, childMedia, op, targetWidth, targetHeight) : \"\";\n\tconst keyThresholdAt = (frame) => op.keyBackground === true ? backgroundKeyThreshold(op, frame, fps) : void 0;\n\tconst lookup = (frame) => {\n\t\tif (!cacheable || frame === void 0) return void 0;\n\t\tconst hit = frameCache.get(source, frame);\n\t\tif (!hit || hit.keyThreshold !== keyThresholdAt(frame)) return void 0;\n\t\tif (wantsSegmentation && visionBundle && !hit.masks) return void 0;\n\t\treturn hit;\n\t};\n\tconst heldFrame = hasPreviousFrame ? heldFrameByNode.get(nodeKeyStr) : void 0;\n\tlet cached = lookup(frameIdx);\n\tconst exact = cached !== void 0;\n\tif (!cached) cached = lookup(heldFrame);\n\tlet heldTex;\n\tif (isMatteMode && hasPreviousFrame && !exact) {\n\t\theldTex = heldTexture(ctx.device, nodeKeyStr, childTex);\n\t\tencoder.copyTextureToTexture({ texture: childTex }, { texture: heldTex }, [\n\t\t\ttargetWidth,\n\t\t\ttargetHeight,\n\t\t\t1\n\t\t]);\n\t}\n\tlet framePixels = null;\n\tif (hasPreviousFrame && !cached) {\n\t\tconst unalignedBytesPerRow = targetWidth * 4;\n\t\tconst bytesPerRow = Math.ceil(unalignedBytesPerRow / 256) * 256;\n\t\tconst bufferSize = bytesPerRow * targetHeight;\n\t\tconst stagingBuffer = ctx.device.createBuffer({\n\t\t\tsize: bufferSize,\n\t\t\tusage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n\t\t\tlabel: \"vision_frame_staging\"\n\t\t});\n\t\tconst readbackEncoder = ctx.device.createCommandEncoder({ label: \"vision_readback_encoder\" });\n\t\treadbackEncoder.copyTextureToBuffer({ texture: childTex }, {\n\t\t\tbuffer: stagingBuffer,\n\t\t\tbytesPerRow,\n\t\t\trowsPerImage: targetHeight\n\t\t}, [\n\t\t\ttargetWidth,\n\t\t\ttargetHeight,\n\t\t\t1\n\t\t]);\n\t\tctx.device.queue.submit([readbackEncoder.finish()]);\n\t\tawait stagingBuffer.mapAsync(GPUMapMode.READ);\n\t\tconst mappedBytes = new Uint8Array(stagingBuffer.getMappedRange());\n\t\tframePixels = new Uint8ClampedArray(targetWidth * targetHeight * 4);\n\t\tif (bytesPerRow === unalignedBytesPerRow) framePixels.set(mappedBytes.subarray(0, framePixels.length));\n\t\telse for (let y = 0; y < targetHeight; y++) framePixels.set(mappedBytes.subarray(y * bytesPerRow, y * bytesPerRow + unalignedBytesPerRow), y * unalignedBytesPerRow);\n\t\tstagingBuffer.unmap();\n\t\tstagingBuffer.destroy();\n\t}\n\tconst childView = childTex.createView();\n\tctx.renderer.beginFrame(encoder, childView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"clear\").end();\n\tawait drawChild(childMedia, { ...props }, childView, childTex, targetWidth, targetHeight);\n\theldFrameByNode.set(nodeKeyStr, frameIdx);\n\tlet frameObjects = [];\n\tlet frameMasks = [];\n\tlet personMatte;\n\tlet currentPoseRes;\n\tlet subject;\n\tif (cached) {\n\t\tframeObjects = cached.objects;\n\t\tif (wantsDetection) visionBundle?.setObjectResult(frameIdx, {\n\t\t\tobjects: cached.objects,\n\t\t\trawDetections: cached.detections\n\t\t});\n\t\tif (wantsSegmentation && visionBundle && cached.masks) {\n\t\t\tframeMasks = cached.masks.map(fromCachedMask);\n\t\t\tvisionBundle.setMaskResult(frameIdx, frameMasks);\n\t\t}\n\t\tif (cached.subject) {\n\t\t\tsubject = fromCachedMask(cached.subject.mask);\n\t\t\tlastSubjectByNode.set(nodeKeyStr, {\n\t\t\t\tmask: subject,\n\t\t\t\tframe: frameIdx\n\t\t\t});\n\t\t}\n\t} else if (framePixels) {\n\t\tconst runner = getSharedRunner(op);\n\t\tconst image = {\n\t\t\tdata: framePixels,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t};\n\t\tlet detections = [];\n\t\tif (wantsDetection) {\n\t\t\tdetections = await runner.detect(image);\n\t\t\tconst tracker = getObjectTracker(nodeKeyStr, op);\n\t\t\tif (frameIdx === 0) tracker.reset();\n\t\t\tframeObjects = tracker.update(detections, frameIdx, fps);\n\t\t\tvisionBundle?.setObjectResult(frameIdx, {\n\t\t\t\tobjects: frameObjects,\n\t\t\t\trawDetections: detections\n\t\t\t});\n\t\t}\n\t\tif (wantsSegmentation) {\n\t\t\tframeMasks = assignMasksToTracks((await runner.segment(image)).masks, frameObjects);\n\t\t\tvisionBundle?.setMaskResult(frameIdx, frameMasks);\n\t\t}\n\t\tif (wantsSelfie) {\n\t\t\tpersonMatte = await runner.matte(image);\n\t\t\tvisionBundle?.setMatteResult(frameIdx, personMatte);\n\t\t}\n\t\tif (wantsPose) {\n\t\t\tcurrentPoseRes = { people: matchPoseToTracks(normalizePoseKeypoints(await runner.pose(image), image.width, image.height).people, frameObjects) };\n\t\t\tvisionBundle?.setPoseResult(frameIdx, currentPoseRes);\n\t\t}\n\t\tif (isMatteMode) {\n\t\t\tsubject = selectSubject(op.matteSource === \"selfie\" ? personMatteAsMask(personMatte) : mergeSubjectMask(frameMasks.length > 0 ? frameMasks : visionBundle?.getMaskResult(frameIdx) ?? []), nodeKeyStr, frameIdx);\n\t\t\tconst threshold = keyThresholdAt(heldFrame ?? frameIdx);\n\t\t\tif (subject && threshold !== void 0) subject = {\n\t\t\t\t...subject,\n\t\t\t\tmask: growMaskIntoForeground(subject.mask, subject.width, subject.height, framePixels, threshold, op.featherRadius)\n\t\t\t};\n\t\t}\n\t\tif (cacheable && heldFrame !== void 0) frameCache.set(source, heldFrame, {\n\t\t\tdetections,\n\t\t\tobjects: frameObjects,\n\t\t\tmasks: visionBundle ? frameMasks.map(toCachedMask) : null,\n\t\t\tsubject: subject ? { mask: toCachedMask(subject) } : null,\n\t\t\tkeyThreshold: keyThresholdAt(heldFrame)\n\t\t});\n\t}\n\tif (isMatteMode) {\n\t\tconst picture = exact ? childTex : heldTex;\n\t\tif (!subject || !picture) {\n\t\t\tctx.renderer.beginFrame(encoder, targetView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, targetWidth, targetHeight, \"clear\").end();\n\t\t\treturn;\n\t\t}\n\t\tif (!sharedCompositor || sharedCompositorFormat !== ctx.renderer.format) {\n\t\t\tsharedCompositor = new MatteCompositor(ctx.device, ctx.renderer.format);\n\t\t\tsharedCompositorFormat = ctx.renderer.format;\n\t\t}\n\t\tconst maskTex = sharedCompositor.uploadMask(nodeKeyStr, subject.mask, subject.width, subject.height);\n\t\tconst matteTex = matteTexture(ctx.device, nodeKeyStr, childTex);\n\t\tsharedCompositor.draw(encoder, matteTex.createView(), picture, maskTex, mode, mode === \"crop\" ? maskBounds(subject) ?? void 0 : void 0);\n\t\tvisionBundle?.setStencilTexture(matteTex);\n\t\tconst outPass$1 = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\");\n\t\tctx.renderer.drawTexture(outPass$1, matteTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t});\n\t\toutPass$1.end();\n\t\treturn;\n\t}\n\tif (mode === \"skeleton\") {\n\t\tif (!sharedSkeletonRenderer) sharedSkeletonRenderer = new PoseSkeletonRenderer(ctx.device);\n\t\tconst person = (visionBundle?.getPoseResult(frameIdx) ?? currentPoseRes)?.people[0];\n\t\tif (person && person.keypoints.length > 0) {\n\t\t\tconst skelTex = sharedSkeletonRenderer.renderToTexture(person.keypoints, {\n\t\t\t\twidth: targetWidth,\n\t\t\t\theight: targetHeight\n\t\t\t});\n\t\t\tconst skelPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, targetWidth, targetHeight, \"clear\");\n\t\t\tctx.renderer.drawTexture(skelPass, skelTex, {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: targetWidth,\n\t\t\t\theight: targetHeight\n\t\t\t});\n\t\t\tskelPass.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif (mode === \"boxes\" || mode === \"tracking\") {\n\t\tconst outPass$1 = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\");\n\t\tctx.renderer.drawTexture(outPass$1, childTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t});\n\t\tconst objects = frameObjects.length > 0 ? frameObjects : visionBundle?.getObjectResult(frameIdx).objects ?? [];\n\t\tif (objects.length > 0) {\n\t\t\tconst boxColor = \"#38bdf8\";\n\t\t\tconst stroke = 2;\n\t\t\tfor (const obj of objects) {\n\t\t\t\tif (!obj.active) continue;\n\t\t\t\tconst b = obj.boundingBox;\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: b.width,\n\t\t\t\t\theight: stroke\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY + b.height - stroke,\n\t\t\t\t\twidth: b.width,\n\t\t\t\t\theight: stroke\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke,\n\t\t\t\t\theight: b.height\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX + b.width - stroke,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke,\n\t\t\t\t\theight: b.height\n\t\t\t\t}, boxColor);\n\t\t\t\tconst cornerLen = Math.min(16, b.width / 4, b.height / 4);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: cornerLen,\n\t\t\t\t\theight: stroke * 2\n\t\t\t\t}, \"#ffffff\");\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke * 2,\n\t\t\t\t\theight: cornerLen\n\t\t\t\t}, \"#ffffff\");\n\t\t\t\tif (mode === \"tracking\") ctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: obj.centerX - 3,\n\t\t\t\t\ty: obj.centerY - 3,\n\t\t\t\t\twidth: 6,\n\t\t\t\t\theight: 6\n\t\t\t\t}, \"#ef4444\", 3);\n\t\t\t}\n\t\t}\n\t\toutPass$1.end();\n\t\treturn;\n\t}\n\tconst outPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"clear\");\n\tctx.renderer.drawTexture(outPass, childTex, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: targetWidth,\n\t\theight: targetHeight\n\t});\n\toutPass.end();\n};\n/** Adapts a Selfie Segmenter matte to the instance-mask shape the composite path takes. */\nfunction personMatteAsMask(matte) {\n\tif (!matte || matte.coverage <= 0) return void 0;\n\tconst area = Math.round(matte.coverage * matte.width * matte.height);\n\treturn {\n\t\tcategory: \"person\",\n\t\tmask: matte.mask,\n\t\twidth: matte.width,\n\t\theight: matte.height,\n\t\tarea,\n\t\tcoverage: matte.coverage,\n\t\tdetectionIndex: -1\n\t};\n}\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: VisionWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-B24hckhO.mjs.map"],"mappings":"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AO;EACN;EACA,OAAO;EACP,QAAQ;EACR,UAAU,KAAK,KAAK,IAAI,OAAO,MAAM,KAAK,MAAM;EAChD;;;AAMF,MAAM,mBAAmB;CACxB,MAAM;CACN,UAAU;CACV,WAAW;CACX,UAAU;CACV,WAAW;CACX,eAAe;CACf,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,YAAY;CACZ,aAAa;CACb,UAAU;CACV,WAAW;CACX,WAAW;CACX,YAAY;CACZ,YAAY;CACZ,aAAa;CACb;AACD,MAAM,wBAAwB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED,MAAM,eAAe;CACpB;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GAC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"}
1
+ {"version":3,"file":"renderer-b6sZN90h.mjs","names":["path","VisionRunner","VisionNode"],"sources":["../../vision/dist/registry-CSFimt7C.mjs","../../vision/dist/src-C2sA_wDT.mjs","../../../nodes/node-vision/dist/renderers-ClCaeCNB.mjs"],"sourcesContent":["//#region src/model/registry.ts\nconst VISION_TASKS = [\n\t\"detect\",\n\t\"segment\",\n\t\"pose\",\n\t\"matte\"\n];\nconst VISION_VARIANTS = [\n\t\"t\",\n\t\"s\",\n\t\"m\"\n];\nconst hf = (repo, revision, path) => `https://huggingface.co/${repo}/resolve/${revision}/${path}`;\nconst RTMDET_INS_REPO = \"tori29umai/rtmdet-ins-onnx-person-masks\";\nconst RTMDET_INS_REV = \"e5218e8d47d7c50077f27f9893a28e0ef2ad5656\";\nconst RTMDET_INS_SOURCE = \"RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export\";\nconst RTMO_SOURCE = \"RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export\";\nconst SELFIE_SOURCE = \"MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export\";\nconst VISION_MODELS = {\n\t\"rtmdet-ins-t\": {\n\t\tkey: \"rtmdet-ins-t\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-t.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/tiny/rtmdet-ins_tiny_640x640.onnx\"),\n\t\tbytes: 24032356,\n\t\tsha256: \"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmdet-ins-s\": {\n\t\tkey: \"rtmdet-ins-s\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-s.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/s/rtmdet-ins_s_640x640.onnx\"),\n\t\tbytes: 43236976,\n\t\tsha256: \"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmdet-ins-m\": {\n\t\tkey: \"rtmdet-ins-m\",\n\t\tfamily: \"rtmdet-ins\",\n\t\tfilename: \"rtmdet-ins-m.onnx\",\n\t\turl: hf(RTMDET_INS_REPO, RTMDET_INS_REV, \"models/m/rtmdet-ins_m_640x640.onnx\"),\n\t\tbytes: 115735979,\n\t\tsha256: \"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052\",\n\t\tinput: [640, 640],\n\t\tsource: RTMDET_INS_SOURCE\n\t},\n\t\"rtmo-t\": {\n\t\tkey: \"rtmo-t\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-t.onnx\",\n\t\turl: hf(\"Xenova/RTMO-t\", \"f29d13ce5ee291fbe505e9d06a049992f05699dc\", \"onnx/model.onnx\"),\n\t\tbytes: 27360569,\n\t\tsha256: \"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13\",\n\t\tinput: [416, 416],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"rtmo-s\": {\n\t\tkey: \"rtmo-s\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-s.onnx\",\n\t\turl: hf(\"Xenova/RTMO-s\", \"d8c526187f341d287753831c9c8b1ecc4855bba1\", \"onnx/model.onnx\"),\n\t\tbytes: 39636400,\n\t\tsha256: \"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7\",\n\t\tinput: [640, 640],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"rtmo-m\": {\n\t\tkey: \"rtmo-m\",\n\t\tfamily: \"rtmo\",\n\t\tfilename: \"rtmo-m.onnx\",\n\t\turl: hf(\"Xenova/RTMO-m\", \"3aba1280472b98ee2bf663482e27e243038d23fe\", \"onnx/model.onnx\"),\n\t\tbytes: 89291929,\n\t\tsha256: \"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e\",\n\t\tinput: [640, 640],\n\t\tsource: RTMO_SOURCE\n\t},\n\t\"selfie-square\": {\n\t\tkey: \"selfie-square\",\n\t\tfamily: \"selfie\",\n\t\tfilename: \"selfie-square.onnx\",\n\t\turl: hf(\"onnx-community/mediapipe_selfie_segmentation\", \"be49485c8e027524be38591817fc5cd31bd9d00e\", \"onnx/model.onnx\"),\n\t\tbytes: 462352,\n\t\tsha256: \"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad\",\n\t\tinput: [256, 256],\n\t\tsource: SELFIE_SOURCE\n\t},\n\t\"selfie-landscape\": {\n\t\tkey: \"selfie-landscape\",\n\t\tfamily: \"selfie\",\n\t\tfilename: \"selfie-landscape.onnx\",\n\t\turl: hf(\"onnx-community/mediapipe_selfie_segmentation_landscape\", \"2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3\", \"onnx/model.onnx\"),\n\t\tbytes: 462338,\n\t\tsha256: \"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24\",\n\t\tinput: [256, 144],\n\t\tsource: SELFIE_SOURCE\n\t}\n};\n/**\n* Resolves the model for a task. `detect` and `segment` share RTMDet-Ins (one forward pass\n* yields both); `matte` picks the landscape Selfie Segmenter for wide frames.\n*/\nfunction modelKeyFor(task, variant = \"s\", aspect = 1) {\n\tif (task === \"pose\") return `rtmo-${variant}`;\n\tif (task === \"matte\") return aspect > 1.3 ? \"selfie-landscape\" : \"selfie-square\";\n\treturn `rtmdet-ins-${variant}`;\n}\n/** COCO 80 class names — index order matches the RTMDet-Ins `labels` output. */\nconst COCO_CLASSES = [\n\t\"person\",\n\t\"bicycle\",\n\t\"car\",\n\t\"motorcycle\",\n\t\"airplane\",\n\t\"bus\",\n\t\"train\",\n\t\"truck\",\n\t\"boat\",\n\t\"traffic light\",\n\t\"fire hydrant\",\n\t\"stop sign\",\n\t\"parking meter\",\n\t\"bench\",\n\t\"bird\",\n\t\"cat\",\n\t\"dog\",\n\t\"horse\",\n\t\"sheep\",\n\t\"cow\",\n\t\"elephant\",\n\t\"bear\",\n\t\"zebra\",\n\t\"giraffe\",\n\t\"backpack\",\n\t\"umbrella\",\n\t\"handbag\",\n\t\"tie\",\n\t\"suitcase\",\n\t\"frisbee\",\n\t\"skis\",\n\t\"snowboard\",\n\t\"sports ball\",\n\t\"kite\",\n\t\"baseball bat\",\n\t\"baseball glove\",\n\t\"skateboard\",\n\t\"surfboard\",\n\t\"tennis racket\",\n\t\"bottle\",\n\t\"wine glass\",\n\t\"cup\",\n\t\"fork\",\n\t\"knife\",\n\t\"spoon\",\n\t\"bowl\",\n\t\"banana\",\n\t\"apple\",\n\t\"sandwich\",\n\t\"orange\",\n\t\"broccoli\",\n\t\"carrot\",\n\t\"hot dog\",\n\t\"pizza\",\n\t\"donut\",\n\t\"cake\",\n\t\"chair\",\n\t\"couch\",\n\t\"potted plant\",\n\t\"bed\",\n\t\"dining table\",\n\t\"toilet\",\n\t\"tv\",\n\t\"laptop\",\n\t\"mouse\",\n\t\"remote\",\n\t\"keyboard\",\n\t\"cell phone\",\n\t\"microwave\",\n\t\"oven\",\n\t\"toaster\",\n\t\"sink\",\n\t\"refrigerator\",\n\t\"book\",\n\t\"clock\",\n\t\"vase\",\n\t\"scissors\",\n\t\"teddy bear\",\n\t\"hair drier\",\n\t\"toothbrush\"\n];\n\n//#endregion\nexport { modelKeyFor as a, VISION_VARIANTS as i, VISION_MODELS as n, VISION_TASKS as r, COCO_CLASSES as t };\n//# sourceMappingURL=registry-CSFimt7C.mjs.map","import { n as __reExport, t as __exportAll } from \"./chunk-CFhWmker.mjs\";\nimport { a as modelKeyFor, i as VISION_VARIANTS, n as VISION_MODELS, r as VISION_TASKS, t as COCO_CLASSES } from \"./registry-CSFimt7C.mjs\";\nimport { PoseSkeletonComputePipeline } from \"@framefields/tensor-webgpu\";\nimport { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, statSync } from \"node:fs\";\nimport { readFile, rename, unlink, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { frameSignal, programmaticSignal } from \"@framefields/core\";\n\n//#region src/tracking/temporal-object-tracker.ts\nfunction computeIoU(boxA, boxB) {\n\tconst xA = Math.max(boxA.originX, boxB.originX);\n\tconst yA = Math.max(boxA.originY, boxB.originY);\n\tconst xB = Math.min(boxA.originX + boxA.width, boxB.originX + boxB.width);\n\tconst yB = Math.min(boxA.originY + boxA.height, boxB.originY + boxB.height);\n\tconst interArea = Math.max(0, xB - xA) * Math.max(0, yB - yA);\n\tif (interArea <= 0) return 0;\n\tconst unionArea = boxA.width * boxA.height + boxB.width * boxB.height - interArea;\n\treturn unionArea > 0 ? interArea / unionArea : 0;\n}\nvar TemporalObjectTracker = class {\n\t_nextTrackId = 1;\n\t_tracks = [];\n\t_iouThreshold;\n\t_maxMissedFrames;\n\t_minHits;\n\t_positionSmoothing;\n\t_activeDuringCoast;\n\tconstructor(options = {}) {\n\t\tthis._iouThreshold = options.iouThreshold ?? .25;\n\t\tthis._maxMissedFrames = options.maxMissedFrames ?? 15;\n\t\tthis._minHits = options.minHits ?? 1;\n\t\tthis._positionSmoothing = Math.max(.1, Math.min(1, options.positionSmoothing ?? .75));\n\t\tthis._activeDuringCoast = options.activeDuringCoast !== false;\n\t}\n\t/**\n\t* Updates the multi-object tracker with new detections for the current frame.\n\t*\n\t* @param detections Raw detections found on the current frame\n\t* @param frame Current frame index\n\t* @param fps Video framerate (used for physical velocity estimation)\n\t* @returns Stable, temporal list of TrackedObjects\n\t*/\n\tupdate(detections, _frame, fps = 24) {\n\t\tconst dt = fps > 0 ? 1 / fps : .0416;\n\t\tfor (const track of this._tracks) {\n\t\t\ttrack.age++;\n\t\t\ttrack.timeSinceUpdate++;\n\t\t\tif (track.timeSinceUpdate > 0) {\n\t\t\t\tconst predCenterX = track.centerX + track.vx * dt;\n\t\t\t\tconst predCenterY = track.centerY + track.vy * dt;\n\t\t\t\ttrack.centerX = predCenterX;\n\t\t\t\ttrack.centerY = predCenterY;\n\t\t\t\tconst w = track.box.width;\n\t\t\t\tconst h = track.box.height;\n\t\t\t\tconst normW = track.box.normalizedWidth;\n\t\t\t\tconst normH = track.box.normalizedHeight;\n\t\t\t\tconst normCenterX = track.box.normalizedX + normW / 2 + track.vx * dt / Math.max(1, track.box.width / normW);\n\t\t\t\tconst normCenterY = track.box.normalizedY + normH / 2 + track.vy * dt / Math.max(1, track.box.height / normH);\n\t\t\t\ttrack.box = {\n\t\t\t\t\toriginX: predCenterX - w / 2,\n\t\t\t\t\toriginY: predCenterY - h / 2,\n\t\t\t\t\twidth: w,\n\t\t\t\t\theight: h,\n\t\t\t\t\tnormalizedX: normCenterX - normW / 2,\n\t\t\t\t\tnormalizedY: normCenterY - normH / 2,\n\t\t\t\t\tnormalizedWidth: normW,\n\t\t\t\t\tnormalizedHeight: normH\n\t\t\t\t};\n\t\t\t\ttrack.vx *= .92;\n\t\t\t\ttrack.vy *= .92;\n\t\t\t\ttrack.isCoasting = true;\n\t\t\t}\n\t\t}\n\t\tconst matchedDetections = /* @__PURE__ */ new Set();\n\t\tconst matchedTracks = /* @__PURE__ */ new Set();\n\t\tconst candidateMatches = [];\n\t\tfor (let t = 0; t < this._tracks.length; t++) {\n\t\t\tconst trk = this._tracks[t];\n\t\t\tfor (let d = 0; d < detections.length; d++) {\n\t\t\t\tconst det = detections[d];\n\t\t\t\tif (trk.category !== det.category) continue;\n\t\t\t\tconst iou = computeIoU(trk.box, det.boundingBox);\n\t\t\t\tif (iou >= this._iouThreshold) candidateMatches.push({\n\t\t\t\t\ttrackIdx: t,\n\t\t\t\t\tdetIdx: d,\n\t\t\t\t\tiou\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tcandidateMatches.sort((a, b) => b.iou - a.iou);\n\t\tfor (const match of candidateMatches) {\n\t\t\tif (matchedTracks.has(match.trackIdx) || matchedDetections.has(match.detIdx)) continue;\n\t\t\tmatchedTracks.add(match.trackIdx);\n\t\t\tmatchedDetections.add(match.detIdx);\n\t\t\tconst trk = this._tracks[match.trackIdx];\n\t\t\tconst det = detections[match.detIdx];\n\t\t\tconst detBox = det.boundingBox;\n\t\t\tconst detCenterX = detBox.originX + detBox.width / 2;\n\t\t\tconst detCenterY = detBox.originY + detBox.height / 2;\n\t\t\tconst instVx = (detCenterX - trk.centerX) / dt;\n\t\t\tconst instVy = (detCenterY - trk.centerY) / dt;\n\t\t\ttrk.vx = trk.vx * .4 + instVx * .6;\n\t\t\ttrk.vy = trk.vy * .4 + instVy * .6;\n\t\t\tconst alpha = this._positionSmoothing;\n\t\t\tconst smoothW = trk.box.width * (1 - alpha) + detBox.width * alpha;\n\t\t\tconst smoothH = trk.box.height * (1 - alpha) + detBox.height * alpha;\n\t\t\tconst smoothCenterX = trk.centerX * (1 - alpha) + detCenterX * alpha;\n\t\t\tconst smoothCenterY = trk.centerY * (1 - alpha) + detCenterY * alpha;\n\t\t\ttrk.centerX = smoothCenterX;\n\t\t\ttrk.centerY = smoothCenterY;\n\t\t\ttrk.score = det.score;\n\t\t\ttrk.timeSinceUpdate = 0;\n\t\t\ttrk.hits++;\n\t\t\ttrk.isCoasting = false;\n\t\t\tif (trk.hits >= this._minHits) trk.active = true;\n\t\t\ttrk.box = {\n\t\t\t\toriginX: smoothCenterX - smoothW / 2,\n\t\t\t\toriginY: smoothCenterY - smoothH / 2,\n\t\t\t\twidth: smoothW,\n\t\t\t\theight: smoothH,\n\t\t\t\tnormalizedX: detBox.normalizedX,\n\t\t\t\tnormalizedY: detBox.normalizedY,\n\t\t\t\tnormalizedWidth: detBox.normalizedWidth,\n\t\t\t\tnormalizedHeight: detBox.normalizedHeight\n\t\t\t};\n\t\t}\n\t\tfor (let d = 0; d < detections.length; d++) {\n\t\t\tif (matchedDetections.has(d)) continue;\n\t\t\tconst det = detections[d];\n\t\t\tconst detBox = det.boundingBox;\n\t\t\tconst centerX = detBox.originX + detBox.width / 2;\n\t\t\tconst centerY = detBox.originY + detBox.height / 2;\n\t\t\tthis._tracks.push({\n\t\t\t\ttrackId: this._nextTrackId++,\n\t\t\t\tcategory: det.category,\n\t\t\t\tscore: det.score,\n\t\t\t\tbox: detBox,\n\t\t\t\tcenterX,\n\t\t\t\tcenterY,\n\t\t\t\tvx: 0,\n\t\t\t\tvy: 0,\n\t\t\t\tage: 1,\n\t\t\t\thits: 1,\n\t\t\t\ttimeSinceUpdate: 0,\n\t\t\t\tactive: this._minHits <= 1,\n\t\t\t\tisCoasting: false\n\t\t\t});\n\t\t}\n\t\tthis._tracks = this._tracks.filter((t) => t.timeSinceUpdate <= this._maxMissedFrames);\n\t\treturn this._tracks.filter((t) => t.active).map((t) => {\n\t\t\tconst normW = t.box.normalizedWidth;\n\t\t\tconst normH = t.box.normalizedHeight;\n\t\t\tconst normCenterX = t.box.normalizedX + normW / 2;\n\t\t\tconst normCenterY = t.box.normalizedY + normH / 2;\n\t\t\tconst speed = Math.sqrt(t.vx * t.vx + t.vy * t.vy);\n\t\t\treturn {\n\t\t\t\ttrackId: t.trackId,\n\t\t\t\tcategory: t.category,\n\t\t\t\tscore: t.score,\n\t\t\t\tboundingBox: t.box,\n\t\t\t\tcenterX: t.centerX,\n\t\t\t\tcenterY: t.centerY,\n\t\t\t\tnormalizedCenterX: normCenterX,\n\t\t\t\tnormalizedCenterY: normCenterY,\n\t\t\t\tvelocity: {\n\t\t\t\t\tvx: t.vx,\n\t\t\t\t\tvy: t.vy\n\t\t\t\t},\n\t\t\t\tspeed,\n\t\t\t\tage: t.age,\n\t\t\t\thits: t.hits,\n\t\t\t\tactive: this._activeDuringCoast ? true : t.timeSinceUpdate === 0,\n\t\t\t\tisCoasting: t.isCoasting\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Tracks objects across a full sequence of frames with gap interpolation,\n\t* boundary extrapolation (ensuring frame 0 through end are tracked),\n\t* and temporal Gaussian smoothing.\n\t*\n\t* Guarantees zero flicker, zero drift, and frame-accurate stability across the entire video.\n\t*/\n\ttrackSequence(perFrameDetections, totalFrames, fps = 24) {\n\t\tthis.reset();\n\t\tconst dt = fps > 0 ? 1 / fps : .0416;\n\t\tconst trackHistory = /* @__PURE__ */ new Map();\n\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\tconst dets = perFrameDetections[f] ?? [];\n\t\t\tconst stepTracks = this.update(dets, f, fps);\n\t\t\tfor (const trk of stepTracks) {\n\t\t\t\tif (!trackHistory.has(trk.trackId)) trackHistory.set(trk.trackId, {\n\t\t\t\t\tcategory: trk.category,\n\t\t\t\t\tobservations: []\n\t\t\t\t});\n\t\t\t\tif (!trk.isCoasting) trackHistory.get(trk.trackId).observations.push({\n\t\t\t\t\tframe: f,\n\t\t\t\t\tbox: trk.boundingBox,\n\t\t\t\t\tscore: trk.score\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst fullTrajectories = /* @__PURE__ */ new Map();\n\t\tfor (const [trackId, info] of trackHistory.entries()) {\n\t\t\tconst obs = info.observations;\n\t\t\tif (obs.length === 0) continue;\n\t\t\tobs.sort((a, b) => a.frame - b.frame);\n\t\t\tconst frameData = new Array(totalFrames).fill(null);\n\t\t\tfor (const o of obs) frameData[o.frame] = {\n\t\t\t\tbox: o.box,\n\t\t\t\tscore: o.score\n\t\t\t};\n\t\t\tconst firstObs = obs[0];\n\t\t\tfor (let f = 0; f < firstObs.frame; f++) frameData[f] = {\n\t\t\t\tbox: { ...firstObs.box },\n\t\t\t\tscore: firstObs.score * .9\n\t\t\t};\n\t\t\tfor (let i = 0; i < obs.length - 1; i++) {\n\t\t\t\tconst startObs = obs[i];\n\t\t\t\tconst endObs = obs[i + 1];\n\t\t\t\tconst gap = endObs.frame - startObs.frame;\n\t\t\t\tif (gap <= 1) continue;\n\t\t\t\tfor (let f = startObs.frame + 1; f < endObs.frame; f++) {\n\t\t\t\t\tconst t = (f - startObs.frame) / gap;\n\t\t\t\t\tframeData[f] = {\n\t\t\t\t\t\tbox: {\n\t\t\t\t\t\t\toriginX: startObs.box.originX + (endObs.box.originX - startObs.box.originX) * t,\n\t\t\t\t\t\t\toriginY: startObs.box.originY + (endObs.box.originY - startObs.box.originY) * t,\n\t\t\t\t\t\t\twidth: startObs.box.width + (endObs.box.width - startObs.box.width) * t,\n\t\t\t\t\t\t\theight: startObs.box.height + (endObs.box.height - startObs.box.height) * t,\n\t\t\t\t\t\t\tnormalizedX: startObs.box.normalizedX + (endObs.box.normalizedX - startObs.box.normalizedX) * t,\n\t\t\t\t\t\t\tnormalizedY: startObs.box.normalizedY + (endObs.box.normalizedY - startObs.box.normalizedY) * t,\n\t\t\t\t\t\t\tnormalizedWidth: startObs.box.normalizedWidth + (endObs.box.normalizedWidth - startObs.box.normalizedWidth) * t,\n\t\t\t\t\t\t\tnormalizedHeight: startObs.box.normalizedHeight + (endObs.box.normalizedHeight - startObs.box.normalizedHeight) * t\n\t\t\t\t\t\t},\n\t\t\t\t\t\tscore: startObs.score * (1 - t) + endObs.score * t\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lastObs = obs[obs.length - 1];\n\t\t\tfor (let f = lastObs.frame + 1; f < totalFrames; f++) frameData[f] = {\n\t\t\t\tbox: { ...lastObs.box },\n\t\t\t\tscore: lastObs.score * .9\n\t\t\t};\n\t\t\tconst smoothedFrames = [];\n\t\t\tconst radius = 2;\n\t\t\tconst weights = [\n\t\t\t\t.06136,\n\t\t\t\t.24477,\n\t\t\t\t.38774,\n\t\t\t\t.24477,\n\t\t\t\t.06136\n\t\t\t];\n\t\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\t\tlet sumWeight = 0;\n\t\t\t\tlet sumX = 0;\n\t\t\t\tlet sumY = 0;\n\t\t\t\tlet sumW = 0;\n\t\t\t\tlet sumH = 0;\n\t\t\t\tlet sumNormX = 0;\n\t\t\t\tlet sumNormY = 0;\n\t\t\t\tlet sumNormW = 0;\n\t\t\t\tlet sumNormH = 0;\n\t\t\t\tlet sumScore = 0;\n\t\t\t\tfor (let r = -radius; r <= radius; r++) {\n\t\t\t\t\tconst pt = frameData[Math.max(0, Math.min(totalFrames - 1, f + r))];\n\t\t\t\t\tif (pt) {\n\t\t\t\t\t\tconst w = weights[r + radius];\n\t\t\t\t\t\tsumWeight += w;\n\t\t\t\t\t\tsumX += pt.box.originX * w;\n\t\t\t\t\t\tsumY += pt.box.originY * w;\n\t\t\t\t\t\tsumW += pt.box.width * w;\n\t\t\t\t\t\tsumH += pt.box.height * w;\n\t\t\t\t\t\tsumNormX += pt.box.normalizedX * w;\n\t\t\t\t\t\tsumNormY += pt.box.normalizedY * w;\n\t\t\t\t\t\tsumNormW += pt.box.normalizedWidth * w;\n\t\t\t\t\t\tsumNormH += pt.box.normalizedHeight * w;\n\t\t\t\t\t\tsumScore += pt.score * w;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst invW = sumWeight > 0 ? 1 / sumWeight : 1;\n\t\t\t\tsmoothedFrames.push({\n\t\t\t\t\tbox: {\n\t\t\t\t\t\toriginX: sumX * invW,\n\t\t\t\t\t\toriginY: sumY * invW,\n\t\t\t\t\t\twidth: sumW * invW,\n\t\t\t\t\t\theight: sumH * invW,\n\t\t\t\t\t\tnormalizedX: sumNormX * invW,\n\t\t\t\t\t\tnormalizedY: sumNormY * invW,\n\t\t\t\t\t\tnormalizedWidth: sumNormW * invW,\n\t\t\t\t\t\tnormalizedHeight: sumNormH * invW\n\t\t\t\t\t},\n\t\t\t\t\tscore: sumScore * invW\n\t\t\t\t});\n\t\t\t}\n\t\t\tfullTrajectories.set(trackId, {\n\t\t\t\tcategory: info.category,\n\t\t\t\tframes: smoothedFrames\n\t\t\t});\n\t\t}\n\t\tconst result = [];\n\t\tfor (let f = 0; f < totalFrames; f++) {\n\t\t\tconst frameObjects = [];\n\t\t\tfor (const [trackId, traj] of fullTrajectories.entries()) {\n\t\t\t\tconst current = traj.frames[f];\n\t\t\t\tif (!current) continue;\n\t\t\t\tconst prev = traj.frames[Math.max(0, f - 1)] ?? current;\n\t\t\t\tconst next = traj.frames[Math.min(totalFrames - 1, f + 1)] ?? current;\n\t\t\t\tconst curCenterX = current.box.originX + current.box.width / 2;\n\t\t\t\tconst curCenterY = current.box.originY + current.box.height / 2;\n\t\t\t\tconst prevCenterX = prev.box.originX + prev.box.width / 2;\n\t\t\t\tconst prevCenterY = prev.box.originY + prev.box.height / 2;\n\t\t\t\tconst nextCenterX = next.box.originX + next.box.width / 2;\n\t\t\t\tconst nextCenterY = next.box.originY + next.box.height / 2;\n\t\t\t\tconst timeDelta = f === 0 || f === totalFrames - 1 ? dt : 2 * dt;\n\t\t\t\tconst vx = (nextCenterX - prevCenterX) / timeDelta;\n\t\t\t\tconst vy = (nextCenterY - prevCenterY) / timeDelta;\n\t\t\t\tconst speed = Math.sqrt(vx * vx + vy * vy);\n\t\t\t\tconst normW = current.box.normalizedWidth;\n\t\t\t\tconst normH = current.box.normalizedHeight;\n\t\t\t\tframeObjects.push({\n\t\t\t\t\ttrackId,\n\t\t\t\t\tcategory: traj.category,\n\t\t\t\t\tscore: current.score,\n\t\t\t\t\tboundingBox: current.box,\n\t\t\t\t\tcenterX: curCenterX,\n\t\t\t\t\tcenterY: curCenterY,\n\t\t\t\t\tnormalizedCenterX: current.box.normalizedX + normW / 2,\n\t\t\t\t\tnormalizedCenterY: current.box.normalizedY + normH / 2,\n\t\t\t\t\tvelocity: {\n\t\t\t\t\t\tvx,\n\t\t\t\t\t\tvy\n\t\t\t\t\t},\n\t\t\t\t\tspeed,\n\t\t\t\t\tage: f + 1,\n\t\t\t\t\thits: 10,\n\t\t\t\t\tactive: true,\n\t\t\t\t\tisCoasting: false\n\t\t\t\t});\n\t\t\t}\n\t\t\tresult.push(frameObjects);\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Resets all internal track state.\n\t*/\n\treset() {\n\t\tthis._tracks = [];\n\t\tthis._nextTrackId = 1;\n\t}\n};\n\n//#endregion\n//#region src/analysis/analyze-sequence.ts\nconst now = () => typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\nasync function analyzeSequence(frames, options) {\n\tconst { runner } = options;\n\tconst fps = options.fps ?? 24;\n\tconst tasks = options.tasks && options.tasks.length > 0 ? options.tasks : [\"detect\"];\n\tconst taskSet = new Set(tasks);\n\tconst categoryFilter = options.categories ? new Set(options.categories.map((c) => c.toLowerCase())) : null;\n\tconst includeMasks = options.includeMasks === true && taskSet.has(\"segment\");\n\tconst tracksObjects = taskSet.has(\"detect\") || taskSet.has(\"segment\");\n\tconst perFrameDetections = [];\n\tconst modelDownloads = {};\n\tconst maskCoverage = /* @__PURE__ */ new Map();\n\tlet inferenceMs = 0;\n\tlet frameIndex = 0;\n\tconst accepts = (category) => !categoryFilter || categoryFilter.has(category.toLowerCase());\n\tconst runTask = async (task, frame, fn) => {\n\t\tconst key = runner.modelKeyFor(task, frame.width / frame.height);\n\t\tconst wasReady = runner.downloadStatus.get(key) === \"ready\";\n\t\tconst start = now();\n\t\tconst result = await fn();\n\t\tconst elapsed = now() - start;\n\t\tinferenceMs += elapsed;\n\t\tif (!wasReady && !modelDownloads[key]) modelDownloads[key] = {\n\t\t\tbytes: VISION_MODELS[key].bytes,\n\t\t\tms: elapsed\n\t\t};\n\t\treturn result;\n\t};\n\tconst recordMasks = (masks$1) => {\n\t\tfor (const m of masks$1) {\n\t\t\tif (!accepts(m.category)) continue;\n\t\t\tconst entry = maskCoverage.get(m.category) ?? {\n\t\t\t\tsum: 0,\n\t\t\t\tcount: 0\n\t\t\t};\n\t\t\tentry.sum += m.coverage;\n\t\t\tentry.count++;\n\t\t\tmaskCoverage.set(m.category, entry);\n\t\t}\n\t};\n\tfor await (const frame of frames) {\n\t\tlet detections = [];\n\t\tif (includeMasks) {\n\t\t\tconst seg = await runTask(\"segment\", frame, () => runner.segment(frame));\n\t\t\trecordMasks(seg.masks);\n\t\t\tdetections = seg.detections;\n\t\t} else if (tracksObjects) detections = await runTask(\"detect\", frame, () => runner.detect(frame));\n\t\tif (taskSet.has(\"pose\")) await runTask(\"pose\", frame, () => runner.pose(frame));\n\t\tif (taskSet.has(\"matte\")) await runTask(\"matte\", frame, () => runner.matte(frame));\n\t\tperFrameDetections.push(categoryFilter ? detections.filter((d) => accepts(d.category)) : detections);\n\t\tframeIndex++;\n\t}\n\tconst totalFrames = frameIndex;\n\tconst trackedPerFrame = new TemporalObjectTracker({\n\t\tiouThreshold: options.iouThreshold ?? .25,\n\t\tmaxMissedFrames: options.maxMissedFrames ?? 15\n\t}).trackSequence(perFrameDetections, totalFrames, fps);\n\tconst pathStride = options.pathStride ?? Math.max(1, Math.ceil(totalFrames / 50));\n\tconst tracks = /* @__PURE__ */ new Map();\n\tconst classPresentFrames = /* @__PURE__ */ new Map();\n\tconst classMaxConfidence = /* @__PURE__ */ new Map();\n\tconst classTrackIds = /* @__PURE__ */ new Map();\n\tconst getOrCreate = (map, key, make) => {\n\t\tlet value = map.get(key);\n\t\tif (value === void 0) {\n\t\t\tvalue = make();\n\t\t\tmap.set(key, value);\n\t\t}\n\t\treturn value;\n\t};\n\tfor (let f = 0; f < totalFrames; f++) for (const obj of trackedPerFrame[f] ?? []) {\n\t\tif (!accepts(obj.category)) continue;\n\t\tlet acc = tracks.get(obj.trackId);\n\t\tif (!acc) {\n\t\t\tacc = {\n\t\t\t\tcategory: obj.category,\n\t\t\t\tfirstFrame: f,\n\t\t\t\tlastFrame: f,\n\t\t\t\tspeedSum: 0,\n\t\t\t\tspeedCount: 0,\n\t\t\t\tcenters: []\n\t\t\t};\n\t\t\ttracks.set(obj.trackId, acc);\n\t\t}\n\t\tacc.lastFrame = f;\n\t\tif (Number.isFinite(obj.speed)) {\n\t\t\tacc.speedSum += obj.speed;\n\t\t\tacc.speedCount++;\n\t\t}\n\t\tif ((f - acc.firstFrame) % pathStride === 0) acc.centers.push({\n\t\t\tframe: f,\n\t\t\tx: obj.centerX,\n\t\t\ty: obj.centerY\n\t\t});\n\t\tgetOrCreate(classPresentFrames, obj.category, () => /* @__PURE__ */ new Set()).add(f);\n\t\tclassMaxConfidence.set(obj.category, Math.max(classMaxConfidence.get(obj.category) ?? 0, obj.score));\n\t\tgetOrCreate(classTrackIds, obj.category, () => /* @__PURE__ */ new Set()).add(obj.trackId);\n\t}\n\tconst trackSummaries = Array.from(tracks.entries()).map(([trackId, acc]) => ({\n\t\ttrackId,\n\t\tcategory: acc.category,\n\t\tframes: [acc.firstFrame, acc.lastFrame],\n\t\tspeedMeanPxS: acc.speedCount > 0 ? acc.speedSum / acc.speedCount : 0,\n\t\tcenterPath: acc.centers.map((c) => [c.x, c.y])\n\t})).sort((a, b) => a.trackId - b.trackId);\n\tconst classes = {};\n\tfor (const [category, frameSet] of classPresentFrames) classes[category] = {\n\t\tframesPresent: frameSet.size,\n\t\ttotalFrames,\n\t\tmaxConfidence: classMaxConfidence.get(category) ?? 0,\n\t\ttracks: classTrackIds.get(category)?.size ?? 0\n\t};\n\tconst masks = {};\n\tfor (const [category, entry] of maskCoverage) masks[category] = { meanCoverage: entry.count > 0 ? entry.sum / entry.count : 0 };\n\treturn {\n\t\tsource: options.source ?? \"frames\",\n\t\ttotalFrames,\n\t\tfps,\n\t\tdurationSec: fps > 0 ? totalFrames / fps : 0,\n\t\ttasks: Array.from(taskSet),\n\t\tmodelDownloads,\n\t\tinferenceMs,\n\t\ttrackCount: trackSummaries.length,\n\t\tclasses,\n\t\ttracks: trackSummaries,\n\t\tmasks\n\t};\n}\n\n//#endregion\n//#region src/decode/preprocess.ts\nconst IMAGENET_BGR_MEAN = [\n\t103.53,\n\t116.28,\n\t123.675\n];\nconst IMAGENET_BGR_STD = [\n\t57.375,\n\t57.12,\n\t58.395\n];\n/** Per-family normalization; the input size always comes from the model's registry entry. */\nconst PREPROCESS_BY_FAMILY = {\n\t\"rtmdet-ins\": {\n\t\tfit: \"topLeft\",\n\t\tchannels: \"bgr\",\n\t\tmean: IMAGENET_BGR_MEAN,\n\t\tstd: IMAGENET_BGR_STD,\n\t\tpadValue: 114\n\t},\n\trtmo: {\n\t\tfit: \"center\",\n\t\tchannels: \"bgr\",\n\t\tmean: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tstd: [\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t],\n\t\tpadValue: 114\n\t},\n\tselfie: {\n\t\tfit: \"stretch\",\n\t\tchannels: \"rgb\",\n\t\tmean: [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tstd: [\n\t\t\t255,\n\t\t\t255,\n\t\t\t255\n\t\t],\n\t\tpadValue: 0\n\t}\n};\nfunction preprocessSpec(family, input) {\n\treturn {\n\t\t...PREPROCESS_BY_FAMILY[family],\n\t\twidth: input[0],\n\t\theight: input[1]\n\t};\n}\nfunction computeInputTransform(srcW, srcH, spec) {\n\tif (spec.fit === \"stretch\") return {\n\t\tscaleX: spec.width / srcW,\n\t\tscaleY: spec.height / srcH,\n\t\toffsetX: 0,\n\t\toffsetY: 0,\n\t\tinputWidth: spec.width,\n\t\tinputHeight: spec.height\n\t};\n\tconst scale = Math.min(spec.width / srcW, spec.height / srcH);\n\tconst contentW = Math.round(srcW * scale);\n\tconst contentH = Math.round(srcH * scale);\n\tconst center = spec.fit === \"center\";\n\treturn {\n\t\tscaleX: scale,\n\t\tscaleY: scale,\n\t\toffsetX: center ? (spec.width - contentW) / 2 : 0,\n\t\toffsetY: center ? (spec.height - contentH) / 2 : 0,\n\t\tinputWidth: spec.width,\n\t\tinputHeight: spec.height\n\t};\n}\n/** Model-input point → source pixel point. */\nfunction toSourcePoint(x, y, t) {\n\treturn {\n\t\tx: (x - t.offsetX) / t.scaleX,\n\t\ty: (y - t.offsetY) / t.scaleY\n\t};\n}\n/**\n* Resizes RGBA → NCHW float32 `[1, 3, height, width]` with bilinear sampling, padding,\n* channel reordering and normalization per `spec`. Reuses `out` when large enough\n* (hot-path frame loop).\n*/\nfunction imageToTensor(image, spec, out) {\n\tconst { width: srcW, height: srcH, data: src } = image;\n\tconst { width: W, height: H } = spec;\n\tconst transform = computeInputTransform(srcW, srcH, spec);\n\tconst { scaleX, scaleY, offsetX, offsetY } = transform;\n\tconst plane = W * H;\n\tif (!out || out.length < 3 * plane) out = new Float32Array(3 * plane);\n\tconst order = spec.channels === \"bgr\" ? [\n\t\t2,\n\t\t1,\n\t\t0\n\t] : [\n\t\t0,\n\t\t1,\n\t\t2\n\t];\n\tconst [m0, m1, m2] = spec.mean;\n\tconst inv0 = 1 / spec.std[0];\n\tconst inv1 = 1 / spec.std[1];\n\tconst inv2 = 1 / spec.std[2];\n\tconst pad0 = (spec.padValue - m0) * inv0;\n\tconst pad1 = (spec.padValue - m1) * inv1;\n\tconst pad2 = (spec.padValue - m2) * inv2;\n\tconst [c0, c1, c2] = order;\n\tconst x0 = Math.ceil(offsetX);\n\tconst y0 = Math.ceil(offsetY);\n\tconst x1 = Math.min(W, Math.floor(offsetX + srcW * scaleX)) - 1;\n\tconst y1 = Math.min(H, Math.floor(offsetY + srcH * scaleY)) - 1;\n\tfor (let y = 0; y < H; y++) {\n\t\tconst rowBase = y * W;\n\t\tconst paddedRow = y < y0 || y > y1;\n\t\tconst sy = Math.max(0, (y + .5 - offsetY) / scaleY - .5);\n\t\tconst iy0 = Math.min(srcH - 1, Math.floor(sy));\n\t\tconst iy1 = Math.min(srcH - 1, iy0 + 1);\n\t\tconst fy = sy - iy0;\n\t\tfor (let x = 0; x < W; x++) {\n\t\t\tconst o = rowBase + x;\n\t\t\tif (paddedRow || x < x0 || x > x1) {\n\t\t\t\tout[o] = pad0;\n\t\t\t\tout[plane + o] = pad1;\n\t\t\t\tout[2 * plane + o] = pad2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sx = Math.max(0, (x + .5 - offsetX) / scaleX - .5);\n\t\t\tconst ix0 = Math.min(srcW - 1, Math.floor(sx));\n\t\t\tconst ix1 = Math.min(srcW - 1, ix0 + 1);\n\t\t\tconst fx = sx - ix0;\n\t\t\tconst i00 = (iy0 * srcW + ix0) * 4;\n\t\t\tconst i10 = (iy0 * srcW + ix1) * 4;\n\t\t\tconst i01 = (iy1 * srcW + ix0) * 4;\n\t\t\tconst i11 = (iy1 * srcW + ix1) * 4;\n\t\t\tconst w00 = (1 - fx) * (1 - fy);\n\t\t\tconst w10 = fx * (1 - fy);\n\t\t\tconst w01 = (1 - fx) * fy;\n\t\t\tconst w11 = fx * fy;\n\t\t\tout[o] = (src[i00 + c0] * w00 + src[i10 + c0] * w10 + src[i01 + c0] * w01 + src[i11 + c0] * w11 - m0) * inv0;\n\t\t\tout[plane + o] = (src[i00 + c1] * w00 + src[i10 + c1] * w10 + src[i01 + c1] * w01 + src[i11 + c1] * w11 - m1) * inv1;\n\t\t\tout[2 * plane + o] = (src[i00 + c2] * w00 + src[i10 + c2] * w10 + src[i01 + c2] * w01 + src[i11 + c2] * w11 - m2) * inv2;\n\t\t}\n\t}\n\treturn {\n\t\ttensor: out,\n\t\ttransform\n\t};\n}\n\n//#endregion\n//#region src/decode/rtmdet-ins.ts\n/** Source pixels a mask may extend past its box (instance masks are not box-clipped). */\nconst MASK_BOX_PAD_PX = 8;\nfunction decodeRtmdetIns(out, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh, transform } = opts;\n\tconst classFilter = opts.classes ? new Set(opts.classes.map((c) => c.toLowerCase())) : null;\n\tconst kept = [];\n\tfor (let i = 0; i < out.count; i++) {\n\t\tconst score = out.dets[i * 5 + 4];\n\t\tif (!(score >= opts.confidence)) continue;\n\t\tconst classIndex = Number(out.labels[i]);\n\t\tconst category = opts.classNames[classIndex] ?? `class_${classIndex}`;\n\t\tif (classFilter && !classFilter.has(category.toLowerCase())) continue;\n\t\tconst p0 = toSourcePoint(out.dets[i * 5], out.dets[i * 5 + 1], transform);\n\t\tconst p1 = toSourcePoint(out.dets[i * 5 + 2], out.dets[i * 5 + 3], transform);\n\t\tconst x0 = clamp$1(p0.x, 0, sw);\n\t\tconst y0 = clamp$1(p0.y, 0, sh);\n\t\tconst width = clamp$1(p1.x, 0, sw) - x0;\n\t\tconst height = clamp$1(p1.y, 0, sh) - y0;\n\t\tif (width <= 0 || height <= 0) continue;\n\t\tkept.push({\n\t\t\tindex: i,\n\t\t\tdetection: {\n\t\t\t\tcategory,\n\t\t\t\tscore,\n\t\t\t\tboundingBox: {\n\t\t\t\t\toriginX: x0,\n\t\t\t\t\toriginY: y0,\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tnormalizedX: x0 / sw,\n\t\t\t\t\tnormalizedY: y0 / sh,\n\t\t\t\t\tnormalizedWidth: width / sw,\n\t\t\t\t\tnormalizedHeight: height / sh\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tkept.sort((a, b) => b.detection.score - a.detection.score);\n\tconst detections = kept.map((k) => k.detection);\n\tconst masks = [];\n\tif (!out.masks) return {\n\t\tdetections,\n\t\tmasks\n\t};\n\tconst alphaOf = probabilityToAlpha(opts.maskThreshold ?? .5, opts.featherRadius ?? .05);\n\tconst { maskWidth: mw, maskHeight: mh } = out;\n\tconst plane = mw * mh;\n\tconst gx = mw / transform.inputWidth;\n\tconst gy = mh / transform.inputHeight;\n\tfor (let d = 0; d < kept.length; d++) {\n\t\tconst { index, detection } = kept[d];\n\t\tconst box = detection.boundingBox;\n\t\tconst base = index * plane;\n\t\tconst bx0 = Math.max(0, Math.floor(box.originX) - MASK_BOX_PAD_PX);\n\t\tconst by0 = Math.max(0, Math.floor(box.originY) - MASK_BOX_PAD_PX);\n\t\tconst bx1 = Math.min(sw - 1, Math.ceil(box.originX + box.width) + MASK_BOX_PAD_PX);\n\t\tconst by1 = Math.min(sh - 1, Math.ceil(box.originY + box.height) + MASK_BOX_PAD_PX);\n\t\tconst mask = new Uint8Array(sw * sh);\n\t\tlet area = 0;\n\t\tfor (let sy = by0; sy <= by1; sy++) {\n\t\t\tconst my = ((sy + .5) * transform.scaleY + transform.offsetY) * gy - .5;\n\t\t\tconst my0 = clamp$1(Math.floor(my), 0, mh - 1);\n\t\t\tconst my1 = Math.min(mh - 1, my0 + 1);\n\t\t\tconst fy = clamp$1(my - my0, 0, 1);\n\t\t\tconst row = sy * sw;\n\t\t\tfor (let sx = bx0; sx <= bx1; sx++) {\n\t\t\t\tconst mx = ((sx + .5) * transform.scaleX + transform.offsetX) * gx - .5;\n\t\t\t\tconst mx0 = clamp$1(Math.floor(mx), 0, mw - 1);\n\t\t\t\tconst mx1 = Math.min(mw - 1, mx0 + 1);\n\t\t\t\tconst fx = clamp$1(mx - mx0, 0, 1);\n\t\t\t\tconst alpha = alphaOf(out.masks[base + my0 * mw + mx0] * (1 - fx) * (1 - fy) + out.masks[base + my0 * mw + mx1] * fx * (1 - fy) + out.masks[base + my1 * mw + mx0] * (1 - fx) * fy + out.masks[base + my1 * mw + mx1] * fx * fy);\n\t\t\t\tif (alpha > 0) {\n\t\t\t\t\tmask[row + sx] = alpha;\n\t\t\t\t\tarea += alpha / 255;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tarea = Math.round(area);\n\t\tif (area === 0) continue;\n\t\tmasks.push({\n\t\t\tcategory: detection.category,\n\t\t\tmask,\n\t\t\twidth: sw,\n\t\t\theight: sh,\n\t\t\tarea,\n\t\t\tcoverage: area / (sw * sh),\n\t\t\tdetectionIndex: d\n\t\t});\n\t}\n\treturn {\n\t\tdetections,\n\t\tmasks\n\t};\n}\n/**\n* Probability → 0..255 alpha. A hard threshold when `feather` is 0, otherwise a linear ramp\n* across `[threshold − feather, threshold + feather]` for anti-aliased edges.\n*/\nfunction probabilityToAlpha(threshold, feather) {\n\tif (feather <= 0) return (p) => p > threshold ? 255 : 0;\n\tconst lo = threshold - feather;\n\tconst inv = 255 / (2 * feather);\n\treturn (p) => p <= lo ? 0 : p >= threshold + feather ? 255 : (p - lo) * inv;\n}\nfunction clamp$1(v, lo, hi) {\n\treturn v < lo ? lo : v > hi ? hi : v;\n}\n\n//#endregion\n//#region src/decode/rtmo.ts\nconst COCO17_KEYPOINT_COUNT = 17;\n/** Keypoint visibility at which a joint counts as seen. */\nconst VISIBLE = .3;\nfunction decodeRtmo(out, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh, transform } = opts;\n\tconst stride = out.keypointStride;\n\tconst people = [];\n\tfor (let i = 0; i < out.count; i++) {\n\t\tconst score = out.dets[i * 5 + 4];\n\t\tif (!(score >= opts.confidence)) continue;\n\t\tconst p0 = toSourcePoint(out.dets[i * 5], out.dets[i * 5 + 1], transform);\n\t\tconst p1 = toSourcePoint(out.dets[i * 5 + 2], out.dets[i * 5 + 3], transform);\n\t\tconst x0 = clamp(p0.x, 0, sw);\n\t\tconst y0 = clamp(p0.y, 0, sh);\n\t\tconst width = clamp(p1.x, 0, sw) - x0;\n\t\tconst height = clamp(p1.y, 0, sh) - y0;\n\t\tif (width <= 0 || height <= 0) continue;\n\t\tconst keypoints = [];\n\t\tconst base = i * COCO17_KEYPOINT_COUNT * stride;\n\t\tfor (let k = 0; k < COCO17_KEYPOINT_COUNT; k++) {\n\t\t\tconst o = base + k * stride;\n\t\t\tconst p = toSourcePoint(out.keypoints[o], out.keypoints[o + 1], transform);\n\t\t\tkeypoints.push({\n\t\t\t\tx: clamp(p.x, 0, sw),\n\t\t\t\ty: clamp(p.y, 0, sh),\n\t\t\t\tvisibility: clamp(out.keypoints[o + 2], 0, 1)\n\t\t\t});\n\t\t}\n\t\tlet visible = 0;\n\t\tfor (const k of keypoints) if (k.visibility >= VISIBLE) visible++;\n\t\tif (visible < (opts.minVisibleKeypoints ?? 3)) continue;\n\t\tpeople.push({\n\t\t\tscore,\n\t\t\tboundingBox: {\n\t\t\t\toriginX: x0,\n\t\t\t\toriginY: y0,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tnormalizedX: x0 / sw,\n\t\t\t\tnormalizedY: y0 / sh,\n\t\t\t\tnormalizedWidth: width / sw,\n\t\t\t\tnormalizedHeight: height / sh\n\t\t\t},\n\t\t\tkeypoints\n\t\t});\n\t}\n\tpeople.sort((a, b) => b.score - a.score);\n\tconst iou = opts.iouThreshold ?? .6;\n\tconst kept = [];\n\tfor (const p of people) if (!kept.some((k) => isDuplicate(k, p, iou))) kept.push(p);\n\treturn { people: kept };\n}\nfunction clamp(v, lo, hi) {\n\treturn v < lo ? lo : v > hi ? hi : v;\n}\n/**\n* Same person twice: boxes overlap above `iou`, or the joints both detections can see sit\n* within 10% of the stronger detection's box size of each other (boxes may differ when one\n* of them also covers a flowing garment or a shadow).\n*/\nfunction isDuplicate(a, b, iou) {\n\tif (computeIoU(a.boundingBox, b.boundingBox) > iou) return true;\n\tconst scale = Math.sqrt(a.boundingBox.width * a.boundingBox.height);\n\tlet sum = 0;\n\tlet n = 0;\n\tfor (let k = 0; k < a.keypoints.length; k++) {\n\t\tconst ka = a.keypoints[k];\n\t\tconst kb = b.keypoints[k];\n\t\tif (ka.visibility < VISIBLE || kb.visibility < VISIBLE) continue;\n\t\tsum += Math.hypot(ka.x - kb.x, ka.y - kb.y);\n\t\tn++;\n\t}\n\treturn n >= 3 && sum / n < .1 * scale;\n}\n\n//#endregion\n//#region src/decode/selfie.ts\nfunction decodeSelfie(alphas, matteWidth, matteHeight, opts) {\n\tconst { sourceWidth: sw, sourceHeight: sh } = opts;\n\tconst alphaOf = probabilityToAlpha(opts.maskThreshold ?? .5, opts.featherRadius ?? .2);\n\tconst mask = new Uint8Array(sw * sh);\n\tconst kx = matteWidth / sw;\n\tconst ky = matteHeight / sh;\n\tlet sum = 0;\n\tfor (let y = 0; y < sh; y++) {\n\t\tconst my = Math.max(0, (y + .5) * ky - .5);\n\t\tconst my0 = Math.min(matteHeight - 1, Math.floor(my));\n\t\tconst my1 = Math.min(matteHeight - 1, my0 + 1);\n\t\tconst fy = my - my0;\n\t\tfor (let x = 0; x < sw; x++) {\n\t\t\tconst mx = Math.max(0, (x + .5) * kx - .5);\n\t\t\tconst mx0 = Math.min(matteWidth - 1, Math.floor(mx));\n\t\t\tconst mx1 = Math.min(matteWidth - 1, mx0 + 1);\n\t\t\tconst fx = mx - mx0;\n\t\t\tconst a = alphaOf(alphas[my0 * matteWidth + mx0] * (1 - fx) * (1 - fy) + alphas[my0 * matteWidth + mx1] * fx * (1 - fy) + alphas[my1 * matteWidth + mx0] * (1 - fx) * fy + alphas[my1 * matteWidth + mx1] * fx * fy);\n\t\t\tmask[y * sw + x] = a;\n\t\t\tsum += a;\n\t\t}\n\t}\n\treturn {\n\t\tmask,\n\t\twidth: sw,\n\t\theight: sh,\n\t\tcoverage: sw * sh > 0 ? sum / (255 * sw * sh) : 0\n\t};\n}\n\n//#endregion\n//#region src/pose/keypoints.ts\n/** COCO-17 keypoint indices (RTMO output order). */\nconst COCO17_KEYPOINTS = {\n\tNOSE: 0,\n\tLEFT_EYE: 1,\n\tRIGHT_EYE: 2,\n\tLEFT_EAR: 3,\n\tRIGHT_EAR: 4,\n\tLEFT_SHOULDER: 5,\n\tRIGHT_SHOULDER: 6,\n\tLEFT_ELBOW: 7,\n\tRIGHT_ELBOW: 8,\n\tLEFT_WRIST: 9,\n\tRIGHT_WRIST: 10,\n\tLEFT_HIP: 11,\n\tRIGHT_HIP: 12,\n\tLEFT_KNEE: 13,\n\tRIGHT_KNEE: 14,\n\tLEFT_ANKLE: 15,\n\tRIGHT_ANKLE: 16\n};\nconst COCO17_KEYPOINT_NAMES = [\n\t\"nose\",\n\t\"leftEye\",\n\t\"rightEye\",\n\t\"leftEar\",\n\t\"rightEar\",\n\t\"leftShoulder\",\n\t\"rightShoulder\",\n\t\"leftElbow\",\n\t\"rightElbow\",\n\t\"leftWrist\",\n\t\"rightWrist\",\n\t\"leftHip\",\n\t\"rightHip\",\n\t\"leftKnee\",\n\t\"rightKnee\",\n\t\"leftAnkle\",\n\t\"rightAnkle\"\n];\n/** COCO-17 skeleton bones for the WebGPU skeleton renderer (indices above). */\nconst COCO17_BONES = [\n\t{\n\t\tfrom: COCO17_KEYPOINTS.NOSE,\n\t\tto: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.NOSE,\n\t\tto: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.LEFT_ELBOW,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t.333,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_ELBOW,\n\t\tto: COCO17_KEYPOINTS.LEFT_WRIST,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t.667,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_ELBOW,\n\t\tcolor: [\n\t\t\t1,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_ELBOW,\n\t\tto: COCO17_KEYPOINTS.RIGHT_WRIST,\n\t\tcolor: [\n\t\t\t.667,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tcolor: [\n\t\t\t.333,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_SHOULDER,\n\t\tto: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tto: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t.333,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_HIP,\n\t\tto: COCO17_KEYPOINTS.LEFT_KNEE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t.667,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.LEFT_KNEE,\n\t\tto: COCO17_KEYPOINTS.LEFT_ANKLE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t1,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_HIP,\n\t\tto: COCO17_KEYPOINTS.RIGHT_KNEE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t.667,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t},\n\t{\n\t\tfrom: COCO17_KEYPOINTS.RIGHT_KNEE,\n\t\tto: COCO17_KEYPOINTS.RIGHT_ANKLE,\n\t\tcolor: [\n\t\t\t0,\n\t\t\t.333,\n\t\t\t1,\n\t\t\t1\n\t\t]\n\t}\n];\n\n//#endregion\n//#region src/gpu/pose-skeleton-renderer.ts\n/**\n* WebGPU skeleton renderer for pose results.\n*\n* Rasterizes the primary person's COCO-17 keypoints into an OpenPose-style\n* conditioning texture natively in VRAM, using the COCO-17 bone set.\n*/\nvar PoseSkeletonRenderer = class {\n\tpipeline;\n\tconstructor(device) {\n\t\tthis.pipeline = new PoseSkeletonComputePipeline(device);\n\t}\n\trenderToTexture(keypoints, options, bones = COCO17_BONES) {\n\t\treturn this.pipeline.execute(keypoints, options, bones);\n\t}\n\tdestroy() {\n\t\tthis.pipeline.destroy();\n\t}\n};\n\n//#endregion\n//#region src/gpu/segmentation-texture-pool.ts\nvar SegmentationTexturePool = class {\n\tdevice;\n\tpool = /* @__PURE__ */ new Map();\n\tconstructor(device) {\n\t\tthis.device = device;\n\t}\n\tgetOrCreateTexture(key, options) {\n\t\tconst existing = this.pool.get(key);\n\t\tif (existing && existing.width === options.width && existing.height === options.height) return existing;\n\t\tif (existing) existing.destroy();\n\t\tconst format = options.format ?? \"rgba8unorm\";\n\t\tconst texture = this.device.createTexture({\n\t\t\tlabel: options.label ?? `vision_segmentation_${key}`,\n\t\t\tsize: [\n\t\t\t\toptions.width,\n\t\t\t\toptions.height,\n\t\t\t\t1\n\t\t\t],\n\t\t\tformat,\n\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT\n\t\t});\n\t\tthis.pool.set(key, texture);\n\t\treturn texture;\n\t}\n\tuploadMask(key, maskData, width, height) {\n\t\tconst isRgba = maskData.length >= width * height * 4;\n\t\tconst format = isRgba ? \"rgba8unorm\" : \"r8unorm\";\n\t\tconst texture = this.getOrCreateTexture(key, {\n\t\t\twidth,\n\t\t\theight,\n\t\t\tformat\n\t\t});\n\t\tlet uploadBytes;\n\t\tif (maskData instanceof Float32Array) {\n\t\t\tuploadBytes = new Uint8Array(maskData.length);\n\t\t\tfor (let i = 0; i < maskData.length; i++) uploadBytes[i] = Math.round(Math.max(0, Math.min(1, maskData[i])) * 255);\n\t\t} else uploadBytes = maskData;\n\t\tconst bytesPerRow = width * (isRgba ? 4 : 1);\n\t\tconst alignedBytesPerRow = Math.ceil(bytesPerRow / 256) * 256;\n\t\tlet finalBuffer;\n\t\tif (alignedBytesPerRow === bytesPerRow) finalBuffer = uploadBytes;\n\t\telse {\n\t\t\tfinalBuffer = new Uint8Array(alignedBytesPerRow * height);\n\t\t\tfor (let y = 0; y < height; y++) finalBuffer.set(uploadBytes.subarray(y * bytesPerRow, (y + 1) * bytesPerRow), y * alignedBytesPerRow);\n\t\t}\n\t\tthis.device.queue.writeTexture({ texture }, finalBuffer.buffer, {\n\t\t\toffset: finalBuffer.byteOffset,\n\t\t\tbytesPerRow: alignedBytesPerRow,\n\t\t\trowsPerImage: height\n\t\t}, {\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\treturn texture;\n\t}\n\tdestroy() {\n\t\tfor (const tex of this.pool.values()) tex.destroy();\n\t\tthis.pool.clear();\n\t}\n};\n\n//#endregion\n//#region src/model/model-store.ts\n/**\n* Resolves the default model cache directory:\n* 1. `FRAMEFIELDS_MODELS_DIR`\n* 2. `~/.cache/framefields/models`\n*/\nfunction getDefaultModelsDir() {\n\tif (process.env.FRAMEFIELDS_MODELS_DIR) return resolve(process.env.FRAMEFIELDS_MODELS_DIR);\n\treturn resolve(homedir(), \".cache/framefields/models\");\n}\n/**\n* Lazy model store. The constructor performs ZERO I/O; the only entry that can hit the\n* network is `ensure(key)`, called by an inference function the first time it runs.\n* Concurrent callers of the same key share a single in-flight download (promise dedupe),\n* downloads are written atomically (temp + rename), and verified files on disk are reused\n* across processes.\n*/\nvar VisionModelStore = class {\n\t_modelsDir;\n\t_baseUrl;\n\t_timeoutMs;\n\t_retries;\n\t_retryDelayMs;\n\t_verify;\n\t_fetch;\n\t_onProgress;\n\t_inflight = /* @__PURE__ */ new Map();\n\t_buffers = /* @__PURE__ */ new Map();\n\t_status = /* @__PURE__ */ new Map();\n\tconstructor(options = {}) {\n\t\tthis._modelsDir = options.modelsDir ? resolve(options.modelsDir) : getDefaultModelsDir();\n\t\tthis._baseUrl = options.baseUrl ?? process.env.FRAMEFIELDS_MODELS_BASE_URL ?? void 0;\n\t\tthis._timeoutMs = options.timeoutMs;\n\t\tthis._retries = Math.max(0, options.retries ?? 2);\n\t\tthis._retryDelayMs = options.retryDelayMs ?? 1e3;\n\t\tthis._verify = options.verify !== false;\n\t\tthis._fetch = options.fetchImpl ?? globalThis.fetch;\n\t\tthis._onProgress = options.onProgress;\n\t}\n\tget modelsDir() {\n\t\treturn this._modelsDir;\n\t}\n\tpathFor(key) {\n\t\treturn join(this._modelsDir, VISION_MODELS[key].filename);\n\t}\n\tdescriptor(key) {\n\t\treturn VISION_MODELS[key];\n\t}\n\t/** The URL `ensure(key)` downloads from (mirror when `baseUrl` is set). */\n\turlFor(key) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (!this._baseUrl) return desc.url;\n\t\treturn `${this._baseUrl.replace(/\\/+$/, \"\")}/${desc.filename}`;\n\t}\n\t/** True when a complete cached file exists (exact registry size when verifying). */\n\thas(key) {\n\t\tconst targetPath = this.pathFor(key);\n\t\tif (!existsSync(targetPath)) return false;\n\t\ttry {\n\t\t\tconst size = statSync(targetPath).size;\n\t\t\treturn this._verify ? size === VISION_MODELS[key].bytes : size > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\t/** Drops a cached model (file + memory) so the next `ensure` re-downloads it. */\n\tasync evict(key) {\n\t\tthis._buffers.delete(key);\n\t\tthis._status.set(key, \"pending\");\n\t\tawait unlink(this.pathFor(key)).catch(() => void 0);\n\t}\n\tstatus(key) {\n\t\treturn this._status.get(key) ?? \"pending\";\n\t}\n\t/** Snapshot of every tracked model's status (empty until anything is fetched). */\n\tstatuses() {\n\t\treturn new Map(this._status);\n\t}\n\t/** True when the model is resident in memory (loaded or downloaded this process). */\n\tisLoaded(key) {\n\t\treturn this._buffers.has(key);\n\t}\n\t/**\n\t* THE only download entry point. Returns the model bytes from memory (cached),\n\t* loading from disk or fetching from the registry URL as needed.\n\t*/\n\tasync ensure(key) {\n\t\tconst inMemory = this._buffers.get(key);\n\t\tif (inMemory) return inMemory;\n\t\tconst inflight = this._inflight.get(key);\n\t\tif (inflight) return inflight;\n\t\tconst promise = this.load(key).finally(() => this._inflight.delete(key));\n\t\tthis._inflight.set(key, promise);\n\t\treturn promise;\n\t}\n\t/** Explicit warm-up — fetch multiple models ahead of use (agents, renderers). */\n\tasync preload(keys) {\n\t\tawait Promise.all([...new Set(keys)].map((key) => this.ensure(key)));\n\t}\n\tasync load(key) {\n\t\tconst targetPath = this.pathFor(key);\n\t\tif (this.has(key)) {\n\t\t\tthis._status.set(key, \"ready\");\n\t\t\treturn this.readBuffer(key, targetPath);\n\t\t}\n\t\tconst downloadUrl = this.urlFor(key);\n\t\tthis._status.set(key, \"downloading\");\n\t\tif (!existsSync(dirname(targetPath))) mkdirSync(dirname(targetPath), { recursive: true });\n\t\tconst tempPath = `${targetPath}.tmp.${Date.now()}`;\n\t\ttry {\n\t\t\tconst { buffer, totalBytes } = await this.download(key, downloadUrl);\n\t\t\tif (buffer.byteLength === 0) throw new Error(`Downloaded vision model '${key}' is empty (0 bytes).`);\n\t\t\tif (this._verify) this.verifyBytes(key, buffer, downloadUrl);\n\t\t\tthis._onProgress?.(key, buffer.byteLength, totalBytes || buffer.byteLength);\n\t\t\tawait writeFile(tempPath, buffer);\n\t\t\tawait rename(tempPath, targetPath);\n\t\t\tthis._buffers.set(key, buffer);\n\t\t\tthis._status.set(key, \"ready\");\n\t\t\treturn buffer;\n\t\t} catch (error) {\n\t\t\tthis._status.set(key, \"error\");\n\t\t\tif (existsSync(tempPath)) await unlink(tempPath).catch(() => void 0);\n\t\t\tthrow error;\n\t\t}\n\t}\n\t/** Fetches with retries on transient failures (network errors, HTTP 429/5xx). */\n\tasync download(key, url) {\n\t\tfor (let attempt = 0;; attempt++) {\n\t\t\tlet transient;\n\t\t\ttry {\n\t\t\t\tconst response = await this._fetch(url, { signal: this._timeoutMs ? AbortSignal.timeout(this._timeoutMs) : void 0 });\n\t\t\t\tif (response.ok) {\n\t\t\t\t\tconst totalBytes = Number(response.headers.get(\"content-length\") ?? 0);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbuffer: new Uint8Array(await response.arrayBuffer()),\n\t\t\t\t\t\ttotalBytes\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst error = /* @__PURE__ */ new Error(`Failed to download vision model '${key}' from ${url}: HTTP ${response.status} ${response.statusText}`);\n\t\t\t\tif (response.status !== 429 && response.status < 500) throw error;\n\t\t\t\ttransient = error;\n\t\t\t} catch (error) {\n\t\t\t\tif (!(error instanceof TypeError)) throw error;\n\t\t\t\ttransient = error;\n\t\t\t}\n\t\t\tif (attempt >= this._retries) throw new Error(`Failed to download vision model '${key}' from ${url} after ${attempt + 1} attempts: ${String(transient)}`, { cause: transient });\n\t\t\tawait new Promise((r) => setTimeout(r, this._retryDelayMs * 2 ** attempt));\n\t\t}\n\t}\n\tverifyBytes(key, buffer, url) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (buffer.byteLength !== desc.bytes) throw new Error(`Vision model '${key}' from ${url} is ${buffer.byteLength} bytes, expected ${desc.bytes}.`);\n\t\tconst digest = createHash(\"sha256\").update(buffer).digest(\"hex\");\n\t\tif (digest !== desc.sha256) throw new Error(`Vision model '${key}' from ${url} failed its SHA-256 check (got ${digest}, expected ${desc.sha256}).`);\n\t}\n\tasync readBuffer(key, targetPath) {\n\t\tconst fileBuffer = await readFile(targetPath);\n\t\tconst buffer = new Uint8Array(fileBuffer.buffer, fileBuffer.byteOffset, fileBuffer.byteLength);\n\t\tthis._buffers.set(key, buffer);\n\t\treturn buffer;\n\t}\n\t/** Drops in-memory buffers (model stays on disk for the next run). */\n\tclearMemoryCache() {\n\t\tthis._buffers.clear();\n\t}\n};\n\n//#endregion\n//#region src/runner/canonical-baselines.ts\n/** Neutral fallbacks so signal evaluators always have a well-formed frame to read. */\nfunction createNeutralObjectResult() {\n\treturn {\n\t\tobjects: [],\n\t\trawDetections: []\n\t};\n}\nfunction createNeutralPoseResult() {\n\treturn { people: [] };\n}\n/** 17 neutral COCO keypoints at frame center — used by pose signals when nobody is detected. */\nfunction createNeutralLandmarks() {\n\tconst landmarks = [];\n\tfor (let i = 0; i < 17; i++) landmarks.push({\n\t\tx: .5,\n\t\ty: .5,\n\t\tz: 0,\n\t\tvisibility: 0\n\t});\n\treturn landmarks;\n}\n\n//#endregion\n//#region src/runtime/webgpu-provider.ts\nconst ORT_WEB_SPECIFIER = \"onnxruntime-web\";\nconst defaultLoader = () => import(\n\t/* @vite-ignore */\n\tORT_WEB_SPECIFIER\n);\nvar WebGPUProvider = class {\n\tkind = \"webgpu\";\n\t_loader;\n\t_providers;\n\t_wasmFallback;\n\t_ortPromise;\n\tconstructor(options = {}) {\n\t\tthis._loader = options.loader ?? defaultLoader;\n\t\tthis._providers = options.executionProviders ?? [\"webgpu\", \"wasm\"];\n\t\tthis._wasmFallback = options.wasmFallback !== false;\n\t}\n\tort() {\n\t\tif (!this._ortPromise) this._ortPromise = this._loader().catch((err) => {\n\t\t\tthis._ortPromise = void 0;\n\t\t\tthrow new Error(`onnxruntime-web failed to load (${String(err)}). Install it in the browser bundle or pass a custom loader.`);\n\t\t});\n\t\treturn this._ortPromise;\n\t}\n\tasync createSession(modelBytes) {\n\t\tconst ort = await this.ort();\n\t\tlet session;\n\t\ttry {\n\t\t\tsession = await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: [...this._providers],\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\tlogSeverityLevel: 3\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (!this._wasmFallback || !this._providers.includes(\"webgpu\")) throw err;\n\t\t\tsession = await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: [\"wasm\"],\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\tlogSeverityLevel: 3\n\t\t\t});\n\t\t}\n\t\treturn {\n\t\t\trun: async (input) => {\n\t\t\t\tconst inputName = session.inputNames.includes(input.name) ? input.name : session.inputNames[0] ?? input.name;\n\t\t\t\tconst results = await session.run({ [inputName]: new ort.Tensor(\"float32\", input.data, [...input.dims]) });\n\t\t\t\tconst outputs = {};\n\t\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\t\tdata: tensor.data,\n\t\t\t\t\tdims: [...tensor.dims]\n\t\t\t\t};\n\t\t\t\treturn outputs;\n\t\t\t},\n\t\t\trelease: () => {\n\t\t\t\tsession.release();\n\t\t\t}\n\t\t};\n\t}\n};\n/**\n* Convenience factory: a `SessionProvider` type guard for the browser entry. Kept tiny so\n* `@framefields/vision/web` stays tree-shakeable.\n*/\nfunction createWebGPUProvider(options) {\n\treturn new WebGPUProvider(options);\n}\n/** True when the environment exposes a WebGPU device (synchronous capability probe). */\nfunction hasWebGPU() {\n\treturn typeof navigator !== \"undefined\" && \"gpu\" in navigator;\n}\n\n//#endregion\n//#region src/runtime/node-webgpu-provider.ts\nconst ORT_WEBGPU_SPECIFIER = \"onnxruntime-web/webgpu\";\nconst WEBGPU_SPECIFIER = \"webgpu\";\nlet nodeWebGPUReady;\n/**\n* Ensure `globalThis.navigator.gpu` exists. In the renderer this is already the\n* Dawn device; otherwise imports the `webgpu` (Dawn) package and installs its\n* globals plus an adapter, which is what onnxruntime-web's WebGPU EP needs.\n*/\nfunction ensureNodeWebGPU() {\n\tif (!nodeWebGPUReady) {\n\t\tnodeWebGPUReady = (async () => {\n\t\t\tconst g = globalThis;\n\t\t\tif (g.navigator?.gpu) return;\n\t\t\tconst { create, globals } = await import(\n\t\t\t\t/* @vite-ignore */\n\t\t\t\tWEBGPU_SPECIFIER\n);\n\t\t\tObject.assign(globalThis, globals);\n\t\t\tconst nav = g.navigator ??= {};\n\t\t\tObject.defineProperty(nav, \"gpu\", {\n\t\t\t\tvalue: create([]),\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t})();\n\t\tnodeWebGPUReady.catch(() => {\n\t\t\tnodeWebGPUReady = void 0;\n\t\t});\n\t}\n\treturn nodeWebGPUReady;\n}\nvar NodeWebGPUProvider = class {\n\tkind = \"webgpu\";\n\t_inner;\n\tconstructor(options = {}) {\n\t\tconst loader = options.loader ?? (async () => {\n\t\t\tawait ensureNodeWebGPU();\n\t\t\tconst mod = await import(\n\t\t\t\t/* @vite-ignore */\n\t\t\t\tORT_WEBGPU_SPECIFIER\n);\n\t\t\tif (mod.env?.wasm) mod.env.wasm.numThreads = 1;\n\t\t\treturn mod;\n\t\t});\n\t\tthis._inner = new WebGPUProvider({\n\t\t\twasmFallback: false,\n\t\t\t...options,\n\t\t\tloader\n\t\t});\n\t}\n\tcreateSession(modelBytes) {\n\t\treturn this._inner.createSession(modelBytes);\n\t}\n};\nfunction createNodeWebGPUProvider(options) {\n\treturn new NodeWebGPUProvider(options);\n}\n\n//#endregion\n//#region src/runtime/session-provider.ts\nlet defaultProvider;\n/**\n* Sets the provider runners use when none is passed, for hosts that create\n* runners indirectly (e.g. a browser player rendering vision nodes). `undefined`\n* restores the default, onnxruntime-node.\n*/\nfunction setDefaultSessionProvider(factory) {\n\tdefaultProvider = factory;\n}\n/**\n* Prefers the GPU (onnxruntime-web's WebGPU EP on the process's WebGPU device —\n* the Dawn device the renderer already creates, or one this ensures) and falls\n* back to the CPU provider (onnxruntime-node) when a WebGPU session cannot be\n* created: no device, no Dawn, or the EP unavailable. The choice is made on the\n* first session and reused for the runner's lifetime.\n*/\nvar AutoSessionProvider = class {\n\t_resolved;\n\tget kind() {\n\t\treturn this._resolved?.kind ?? \"webgpu\";\n\t}\n\tasync createSession(modelBytes) {\n\t\tif (!this._resolved) {\n\t\t\tconst webgpu = new NodeWebGPUProvider({ wasmFallback: false });\n\t\t\ttry {\n\t\t\t\tconst session = await webgpu.createSession(modelBytes);\n\t\t\t\tthis._resolved = webgpu;\n\t\t\t\treturn session;\n\t\t\t} catch {\n\t\t\t\tthis._resolved = new NodeSessionProvider();\n\t\t\t}\n\t\t}\n\t\treturn this._resolved.createSession(modelBytes);\n\t}\n};\n/**\n* The provider for a runner created without one: GPU if possible, otherwise CPU.\n*/\nfunction createDefaultSessionProvider() {\n\treturn defaultProvider?.() ?? new AutoSessionProvider();\n}\n/** onnxruntime-node provider. The native module is imported lazily on first session. */\nvar NodeSessionProvider = class {\n\tkind = \"node\";\n\tortPromise;\n\tasync ort() {\n\t\tif (!this.ortPromise) this.ortPromise = import(\"onnxruntime-node\").catch((err) => {\n\t\t\tthis.ortPromise = void 0;\n\t\t\tthrow new Error(`onnxruntime-node failed to load (${String(err)}). Install it in the environment or provide a custom SessionProvider.`);\n\t\t});\n\t\treturn this.ortPromise;\n\t}\n\tasync createSession(modelBytes) {\n\t\tconst ort = await this.ort();\n\t\tconst session = await ort.InferenceSession.create(modelBytes, {\n\t\t\texecutionProviders: [\"cpu\"],\n\t\t\tgraphOptimizationLevel: \"all\"\n\t\t});\n\t\treturn {\n\t\t\trun: async (input) => {\n\t\t\t\tconst feeds = { [session.inputNames.includes(input.name) ? input.name : session.inputNames[0] ?? input.name]: new ort.Tensor(\"float32\", input.data, [...input.dims]) };\n\t\t\t\tconst results = await session.run(feeds);\n\t\t\t\tconst outputs = {};\n\t\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\t\tdata: tensor.data,\n\t\t\t\t\tdims: [...tensor.dims]\n\t\t\t\t};\n\t\t\t\treturn outputs;\n\t\t\t},\n\t\t\trelease: () => {\n\t\t\t\tsession.release();\n\t\t\t}\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/runner/vision-runner.ts\n/**\n* Lazy vision runner.\n*\n* `create()` performs ZERO I/O: no downloads, no sessions. Each inference method downloads\n* its model and warms its session on FIRST USE ONLY, then reuses them for the process\n* lifetime. `detect()` and `segment()` share one RTMDet-Ins forward pass per frame.\n* Call `close()` to release sessions.\n*/\nvar VisionRunner = class VisionRunner {\n\tvariant;\n\tconfidence;\n\tclasses;\n\tmaskThreshold;\n\tfeatherRadius;\n\t_store;\n\t_provider;\n\t_sessions = /* @__PURE__ */ new Map();\n\t_tensorScratch = /* @__PURE__ */ new Map();\n\t/** One RTMDet-Ins pass per frame buffer, shared by detect() and segment(). */\n\t_instancePass;\n\tconstructor(options) {\n\t\tthis.variant = options.variant ?? \"s\";\n\t\tthis.confidence = options.confidence ?? .3;\n\t\tthis.classes = options.classes;\n\t\tthis.maskThreshold = options.maskThreshold ?? .5;\n\t\tthis.featherRadius = options.featherRadius;\n\t\tthis._store = options.store ?? new VisionModelStore({\n\t\t\tmodelsDir: options.modelsDir,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\tonProgress: options.onProgress\n\t\t});\n\t\tthis._provider = options.provider ?? createDefaultSessionProvider();\n\t}\n\t/** Cheap: no downloads, no sessions, no side effects. */\n\tstatic create(options = {}) {\n\t\treturn new VisionRunner(options);\n\t}\n\tget modelsDir() {\n\t\treturn this._store.modelsDir;\n\t}\n\t/** Every registry model keyed to its current download state (downloaded → \"ready\"). */\n\tget downloadStatus() {\n\t\tconst statuses = /* @__PURE__ */ new Map();\n\t\tfor (const key of Object.keys(VISION_MODELS)) statuses.set(key, \"pending\");\n\t\tfor (const [key, status] of this._store.statuses()) statuses.set(key, status);\n\t\treturn statuses;\n\t}\n\t/** The model serving `task` (matte depends on frame aspect; defaults to square). */\n\tmodelKeyFor(task, aspect = 1) {\n\t\treturn modelKeyFor(task, this.variant, aspect);\n\t}\n\t/**\n\t* Explicit warm-up: downloads + sessions for the given tasks, ahead of first use.\n\t* `matte` warms both aspect variants (the frame aspect is unknown until inference).\n\t*/\n\tasync preload(tasks = [\"detect\"]) {\n\t\tconst keys = /* @__PURE__ */ new Set();\n\t\tfor (const task of tasks) if (task === \"matte\") {\n\t\t\tkeys.add(\"selfie-square\");\n\t\t\tkeys.add(\"selfie-landscape\");\n\t\t} else keys.add(this.modelKeyFor(task));\n\t\tawait this._store.preload([...keys]);\n\t\tawait Promise.all([...keys].map((key) => this.session(key)));\n\t}\n\t/** COCO-80 boxes (sorted by score, source pixels). Masks are not decoded. */\n\tasync detect(image) {\n\t\tconst pass = await this.instancePass(image);\n\t\treturn decodeRtmdetIns({\n\t\t\t...pass.outputs,\n\t\t\tmasks: void 0\n\t\t}, this.instanceDecodeOptions(image, pass.transform)).detections;\n\t}\n\t/** COCO-80 boxes plus a frame-aligned soft mask per instance. */\n\tasync segment(image) {\n\t\tconst pass = await this.instancePass(image);\n\t\treturn decodeRtmdetIns(pass.outputs, this.instanceDecodeOptions(image, pass.transform));\n\t}\n\t/** COCO-17 keypoints per person (source pixels), highest score first. */\n\tasync pose(image) {\n\t\tconst key = this.modelKeyFor(\"pose\");\n\t\tconst { outputs, transform } = await this.infer(key, image);\n\t\tconst dets = output(outputs, \"dets\", key);\n\t\tconst keypoints = output(outputs, \"keypoints\", key);\n\t\treturn decodeRtmo({\n\t\t\tdets: dets.data,\n\t\t\tkeypoints: keypoints.data,\n\t\t\tcount: dets.dims[1] ?? 0,\n\t\t\tkeypointStride: keypoints.dims[3] ?? 3\n\t\t}, {\n\t\t\tconfidence: this.confidence,\n\t\t\ttransform,\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height\n\t\t});\n\t}\n\t/** Person-vs-background alpha for the whole frame (Selfie Segmenter). */\n\tasync matte(image) {\n\t\tconst key = this.modelKeyFor(\"matte\", image.width / image.height);\n\t\tconst [w, h] = VISION_MODELS[key].input;\n\t\tconst { outputs } = await this.infer(key, image);\n\t\treturn decodeSelfie(output(outputs, \"alphas\", key).data, w, h, {\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height,\n\t\t\tmaskThreshold: this.maskThreshold,\n\t\t\t...this.featherRadius !== void 0 ? { featherRadius: this.featherRadius } : {}\n\t\t});\n\t}\n\tclose() {\n\t\tfor (const promise of this._sessions.values()) promise.then((session) => session.release()).catch(() => void 0);\n\t\tthis._sessions.clear();\n\t\tthis._instancePass = void 0;\n\t\tthis._store.clearMemoryCache();\n\t}\n\tinstancePass(image) {\n\t\tif (this._instancePass?.frame === image.data) return this._instancePass.result;\n\t\tconst key = this.modelKeyFor(\"segment\");\n\t\tconst result = this.infer(key, image).then(({ outputs, transform }) => {\n\t\t\tconst dets = output(outputs, \"dets\", key);\n\t\t\tconst masks = output(outputs, \"masks\", key);\n\t\t\treturn {\n\t\t\t\ttransform,\n\t\t\t\toutputs: {\n\t\t\t\t\tdets: dets.data,\n\t\t\t\t\tlabels: output(outputs, \"labels\", key).data,\n\t\t\t\t\tmasks: masks.data,\n\t\t\t\t\tcount: dets.dims[1] ?? 0,\n\t\t\t\t\tmaskHeight: masks.dims[masks.dims.length - 2] ?? 0,\n\t\t\t\t\tmaskWidth: masks.dims[masks.dims.length - 1] ?? 0\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t\tthis._instancePass = {\n\t\t\tframe: image.data,\n\t\t\tresult\n\t\t};\n\t\tresult.catch(() => {\n\t\t\tif (this._instancePass?.result === result) this._instancePass = void 0;\n\t\t});\n\t\treturn result;\n\t}\n\tinstanceDecodeOptions(image, transform) {\n\t\treturn {\n\t\t\tconfidence: this.confidence,\n\t\t\tclasses: this.classes,\n\t\t\tclassNames: COCO_CLASSES,\n\t\t\ttransform,\n\t\t\tsourceWidth: image.width,\n\t\t\tsourceHeight: image.height,\n\t\t\tmaskThreshold: this.maskThreshold,\n\t\t\t...this.featherRadius !== void 0 ? { featherRadius: this.featherRadius } : {}\n\t\t};\n\t}\n\tasync infer(key, image) {\n\t\tconst session = await this.session(key);\n\t\tconst desc = VISION_MODELS[key];\n\t\tconst spec = preprocessSpec(desc.family, desc.input);\n\t\tconst size = 3 * spec.width * spec.height;\n\t\tlet scratch = this._tensorScratch.get(key);\n\t\tif (!scratch || scratch.length < size) {\n\t\t\tscratch = new Float32Array(size);\n\t\t\tthis._tensorScratch.set(key, scratch);\n\t\t}\n\t\tconst { tensor, transform } = imageToTensor(image, spec, scratch);\n\t\treturn {\n\t\t\toutputs: await session.run({\n\t\t\t\tname: \"input\",\n\t\t\t\tdata: tensor,\n\t\t\t\tdims: [\n\t\t\t\t\t1,\n\t\t\t\t\t3,\n\t\t\t\t\tspec.height,\n\t\t\t\t\tspec.width\n\t\t\t\t]\n\t\t\t}),\n\t\t\ttransform\n\t\t};\n\t}\n\tsession(key) {\n\t\tlet promise = this._sessions.get(key);\n\t\tif (!promise) {\n\t\t\tpromise = this._store.ensure(key).then((bytes) => this._provider.createSession(bytes)).catch((err) => {\n\t\t\t\tthis._sessions.delete(key);\n\t\t\t\tthis._store.evict(key);\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t\tthis._sessions.set(key, promise);\n\t\t}\n\t\treturn promise;\n\t}\n};\nfunction output(outputs, name, key) {\n\tconst tensor = outputs[name];\n\tif (!tensor) throw new Error(`Vision model '${key}' returned no '${name}' output (got: ${Object.keys(outputs).join(\", \") || \"none\"}). Expected the ${VISION_MODELS[key].source}.`);\n\treturn tensor;\n}\n\n//#endregion\n//#region src/segmentation/subject.ts\n/**\n* The frame's primary instance: the largest person when present, else the most confident\n* instance (lowest `detectionIndex` — detections are score-sorted). Size alone is a poor\n* signal without a person: the largest instance is usually a backdrop (\"dining table\").\n*/\nfunction selectSubjectMask(masks) {\n\tlet best;\n\tfor (const m of masks) {\n\t\tif (!best) {\n\t\t\tbest = m;\n\t\t\tcontinue;\n\t\t}\n\t\tconst mIsPerson = isPerson(m);\n\t\tif (mIsPerson !== isPerson(best)) {\n\t\t\tif (mIsPerson) best = m;\n\t\t} else if (mIsPerson ? m.area > best.area : m.detectionIndex < best.detectionIndex) best = m;\n\t}\n\treturn best;\n}\nfunction isPerson(mask) {\n\treturn mask.category.toLowerCase() === \"person\";\n}\n/** Tight pixel bounds of a mask's non-zero alpha, or null when empty. */\nfunction maskBounds(mask) {\n\tconst { mask: data, width, height } = mask;\n\tlet x0 = width;\n\tlet y0 = height;\n\tlet x1 = -1;\n\tlet y1 = -1;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tif (data[row + x] === 0) continue;\n\t\t\tif (x < x0) x0 = x;\n\t\t\tif (x > x1) x1 = x;\n\t\t\tif (y < y0) y0 = y;\n\t\t\tif (y > y1) y1 = y;\n\t\t}\n\t}\n\treturn x1 < 0 ? null : {\n\t\tx0,\n\t\ty0,\n\t\tx1,\n\t\ty1\n\t};\n}\n/**\n* Builds the full subject silhouette: the primary instance plus every comparably sized\n* instance whose bounds sit mostly inside or across it (`overlap` = intersection / smaller\n* box area; `maxGrowth` caps a part's box area relative to the subject's).\n*\n* COCO has no \"clothing\" class, so a flowing dress, a held guitar or a ridden bike comes back\n* as its own instance (often mislabeled) — merging them keeps the whole figure in the cutout.\n* The size cap keeps containers out: a small figure inside a tunnel or window detected as a\n* huge \"clock\" must not drag the whole frame into the subject.\n*/\nfunction mergeSubjectMask(masks, overlap = .5, maxGrowth = 2) {\n\tconst subject = selectSubjectMask(masks);\n\tif (!subject) return void 0;\n\tconst sb = maskBounds(subject);\n\tif (!sb) return subject;\n\tconst subjectArea = boundsArea(sb);\n\tconst parts = masks.filter((m) => {\n\t\tif (m === subject) return false;\n\t\tconst b = maskBounds(m);\n\t\treturn b !== null && boundsArea(b) <= subjectArea * maxGrowth && boundsOverlap(sb, b) >= overlap;\n\t});\n\tif (parts.length === 0) return subject;\n\tconst merged = subject.mask.slice();\n\tfor (const part of parts) {\n\t\tconst data = part.mask;\n\t\tfor (let i = 0; i < merged.length; i++) if (data[i] > merged[i]) merged[i] = data[i];\n\t}\n\tlet area = 0;\n\tfor (let i = 0; i < merged.length; i++) area += merged[i];\n\tarea = Math.round(area / 255);\n\treturn {\n\t\t...subject,\n\t\tmask: merged,\n\t\tarea,\n\t\tcoverage: area / (subject.width * subject.height)\n\t};\n}\nfunction boundsArea(b) {\n\treturn (b.x1 - b.x0 + 1) * (b.y1 - b.y0 + 1);\n}\nfunction boundsOverlap(a, b) {\n\tconst iw = Math.min(a.x1, b.x1) - Math.max(a.x0, b.x0) + 1;\n\tconst ih = Math.min(a.y1, b.y1) - Math.max(a.y0, b.y0) + 1;\n\tif (iw <= 0 || ih <= 0) return 0;\n\treturn iw * ih / Math.min(boundsArea(a), boundsArea(b));\n}\n\n//#endregion\n//#region src/spatial/camera-space-transformer.ts\nvar SpatialLandmarkTransformer = class {\n\twidth;\n\theight;\n\tfovRad;\n\tfocalDistance;\n\tconstructor(camera) {\n\t\tthis.width = camera.width;\n\t\tthis.height = camera.height;\n\t\tthis.fovRad = (camera.fov ?? 60) * Math.PI / 180;\n\t\tthis.focalDistance = camera.cameraDistance ?? this.height / 2 / Math.tan(this.fovRad / 2);\n\t}\n\t/**\n\t* Projects a normalized landmark [0, 1] into 2D/3D canvas coordinates.\n\t*/\n\tprojectNormalizedLandmark(landmark, offsetZ = 0) {\n\t\tconst screenX = landmark.x * this.width;\n\t\tconst screenY = landmark.y * this.height;\n\t\tconst rawZ = landmark.z * this.width + offsetZ;\n\t\tconst effectiveZ = Math.min(rawZ, this.focalDistance - 10);\n\t\tconst scale = this.focalDistance / (this.focalDistance - effectiveZ);\n\t\treturn {\n\t\t\tx: screenX,\n\t\t\ty: screenY,\n\t\t\tz: rawZ,\n\t\t\tscale: Math.max(.1, scale)\n\t\t};\n\t}\n\t/**\n\t* Projects a metric world landmark [X_w, Y_w, Z_w] in meters into canvas space.\n\t*/\n\tprojectWorldLandmark(worldLandmark, subjectDistanceMeters = 2, scaleMetersToPixels = 800) {\n\t\tconst centerX = this.width / 2;\n\t\tconst centerY = this.height / 2;\n\t\tconst worldX = worldLandmark.x * scaleMetersToPixels;\n\t\tconst worldY = worldLandmark.y * scaleMetersToPixels;\n\t\tconst worldZ = (worldLandmark.z + subjectDistanceMeters) * scaleMetersToPixels;\n\t\tconst effectiveZ = Math.min(worldZ, this.focalDistance - 10);\n\t\tconst scale = this.focalDistance / (this.focalDistance - effectiveZ);\n\t\treturn {\n\t\t\tx: centerX + worldX * scale,\n\t\t\ty: centerY + worldY * scale,\n\t\t\tz: worldZ,\n\t\t\tscale: Math.max(.1, scale)\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/tracking/pose-track-matcher.ts\nfunction getPersonBoundingBox(person) {\n\tif (person.boundingBox && person.boundingBox.width > 0 && person.boundingBox.height > 0) return {\n\t\toriginX: person.boundingBox.originX,\n\t\toriginY: person.boundingBox.originY,\n\t\twidth: person.boundingBox.width,\n\t\theight: person.boundingBox.height\n\t};\n\tlet minX = Infinity;\n\tlet minY = Infinity;\n\tlet maxX = -Infinity;\n\tlet maxY = -Infinity;\n\tlet validCount = 0;\n\tfor (const kp of person.keypoints) if (kp.visibility > .1) {\n\t\tvalidCount++;\n\t\tif (kp.x < minX) minX = kp.x;\n\t\tif (kp.y < minY) minY = kp.y;\n\t\tif (kp.x > maxX) maxX = kp.x;\n\t\tif (kp.y > maxY) maxY = kp.y;\n\t}\n\tif (validCount === 0 || minX >= maxX || minY >= maxY) return {\n\t\toriginX: person.boundingBox?.originX ?? 0,\n\t\toriginY: person.boundingBox?.originY ?? 0,\n\t\twidth: person.boundingBox?.width ?? 0,\n\t\theight: person.boundingBox?.height ?? 0\n\t};\n\treturn {\n\t\toriginX: minX,\n\t\toriginY: minY,\n\t\twidth: maxX - minX,\n\t\theight: maxY - minY\n\t};\n}\n/**\n* Matches detected pose people with active person tracks using greedy bipartite IoU.\n*\n* Annotates each person with the matched trackId.\n*/\nfunction matchPoseToTracks(people, trackedObjects, minIoU = .15) {\n\tif (people.length === 0) return [];\n\tconst personTracks = trackedObjects.filter((o) => o.category.toLowerCase() === \"person\" && o.active);\n\tif (personTracks.length === 0) return [...people];\n\tconst candidateMatches = [];\n\tfor (let p = 0; p < people.length; p++) {\n\t\tconst person = people[p];\n\t\tif (person.trackId !== void 0) continue;\n\t\tconst pBox = getPersonBoundingBox(person);\n\t\tconst isNormalized = pBox.width <= 1.05 && pBox.height <= 1.05;\n\t\tfor (const trk of personTracks) {\n\t\t\tconst iou = computeIoU(pBox, isNormalized && trk.boundingBox.normalizedWidth > 0 ? {\n\t\t\t\toriginX: trk.boundingBox.normalizedX,\n\t\t\t\toriginY: trk.boundingBox.normalizedY,\n\t\t\t\twidth: trk.boundingBox.normalizedWidth,\n\t\t\t\theight: trk.boundingBox.normalizedHeight\n\t\t\t} : trk.boundingBox);\n\t\t\tif (iou >= minIoU) candidateMatches.push({\n\t\t\t\tpersonIdx: p,\n\t\t\t\ttrackId: trk.trackId,\n\t\t\t\tiou\n\t\t\t});\n\t\t}\n\t}\n\tcandidateMatches.sort((a, b) => b.iou - a.iou);\n\tconst assignedPeople = /* @__PURE__ */ new Set();\n\tconst assignedTracks = /* @__PURE__ */ new Set();\n\tconst personTrackMap = /* @__PURE__ */ new Map();\n\tfor (const match of candidateMatches) {\n\t\tif (assignedPeople.has(match.personIdx) || assignedTracks.has(match.trackId)) continue;\n\t\tassignedPeople.add(match.personIdx);\n\t\tassignedTracks.add(match.trackId);\n\t\tpersonTrackMap.set(match.personIdx, match.trackId);\n\t}\n\tif (people.length === 1 && personTracks.length === 1 && !personTrackMap.has(0) && people[0].trackId === void 0) personTrackMap.set(0, personTracks[0].trackId);\n\treturn people.map((person, idx) => {\n\t\tif (person.trackId !== void 0) return person;\n\t\tconst trackId = personTrackMap.get(idx);\n\t\treturn trackId !== void 0 ? {\n\t\t\t...person,\n\t\t\ttrackId\n\t\t} : person;\n\t});\n}\n\n//#endregion\n//#region src/signals/vision-bundle.ts\nvar VisionBundle = class {\n\tobjects;\n\tposeLandmarks;\n\tmasks;\n\tsegmentation;\n\tclasses;\n\tposeLandmarksTensor;\n\tobjectsTensor;\n\tmasksTensor;\n\t/** Per-class detection histogram [nc] — top-level convenience mirror of `classes.histogram`. */\n\thistogramTensor;\n\t_totalFrames;\n\t_fps;\n\t_width;\n\t_height;\n\t_transformer;\n\t_stencilTexture;\n\t_poseCache = /* @__PURE__ */ new Map();\n\t_objectCache = /* @__PURE__ */ new Map();\n\t_maskCache = /* @__PURE__ */ new Map();\n\t_matteCache = /* @__PURE__ */ new Map();\n\t_poseLmCache = /* @__PURE__ */ new Map();\n\t_trackCache = /* @__PURE__ */ new Map();\n\t_categoryCache = /* @__PURE__ */ new Map();\n\t_classCache = /* @__PURE__ */ new Map();\n\t_maskTrackCache = /* @__PURE__ */ new Map();\n\t_registeredSignals = /* @__PURE__ */ new Set();\n\tconstructor(options = {}) {\n\t\tthis._totalFrames = options.totalFrames ?? 120;\n\t\tthis._fps = options.fps ?? 24;\n\t\tthis._width = options.width ?? 1920;\n\t\tthis._height = options.height ?? 1080;\n\t\tthis._transformer = new SpatialLandmarkTransformer({\n\t\t\twidth: this._width,\n\t\t\theight: this._height,\n\t\t\tfov: options.cameraFov ?? 60\n\t\t});\n\t\tconst self = this;\n\t\tconst programmaticSignal$1 = (evaluator, sigOptions) => {\n\t\t\tconst sig = programmaticSignal(evaluator, sigOptions);\n\t\t\tthis._registeredSignals.add(sig);\n\t\t\treturn sig;\n\t\t};\n\t\tconst getPrimaryLandmarks = (frame) => {\n\t\t\treturn this.getPoseResult(frame).people[0]?.keypoints ?? createNeutralLandmarks();\n\t\t};\n\t\tconst createPoseCoord = (index, label) => {\n\t\t\tconst getLm = (frame) => getPrimaryLandmarks(frame)[index] ?? {\n\t\t\t\tx: .5,\n\t\t\t\ty: .5,\n\t\t\t\tz: 0\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tx: programmaticSignal$1((ctx) => getLm(ctx.frame).x, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_x`\n\t\t\t\t}),\n\t\t\t\ty: programmaticSignal$1((ctx) => getLm(ctx.frame).y, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_y`\n\t\t\t\t}),\n\t\t\t\tz: programmaticSignal$1((ctx) => getLm(ctx.frame).z ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_z`\n\t\t\t\t}),\n\t\t\t\tscreenX: programmaticSignal$1((ctx) => this._transformer.projectNormalizedLandmark(getLm(ctx.frame)).x, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_screenX`\n\t\t\t\t}),\n\t\t\t\tscreenY: programmaticSignal$1((ctx) => this._transformer.projectNormalizedLandmark(getLm(ctx.frame)).y, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_screenY`\n\t\t\t\t})\n\t\t\t};\n\t\t};\n\t\tconst getOrCreatePoseLm = (index) => {\n\t\t\tlet sig = this._poseLmCache.get(index);\n\t\t\tif (!sig) {\n\t\t\t\tsig = createPoseCoord(index, COCO17_KEYPOINT_NAMES[index] ?? `kpt_${index}`);\n\t\t\t\tthis._poseLmCache.set(index, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst poseNamed = {\n\t\t\tnose: getOrCreatePoseLm(COCO17_KEYPOINTS.NOSE),\n\t\t\tleftEye: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_EYE),\n\t\t\trightEye: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_EYE),\n\t\t\tleftEar: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_EAR),\n\t\t\trightEar: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_EAR),\n\t\t\tshoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\tleftShoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\trightShoulder: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_SHOULDER),\n\t\t\tleftElbow: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_ELBOW),\n\t\t\trightElbow: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_ELBOW),\n\t\t\tleftWrist: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_WRIST),\n\t\t\trightWrist: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_WRIST),\n\t\t\tleftHip: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_HIP),\n\t\t\trightHip: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_HIP),\n\t\t\tleftKnee: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_KNEE),\n\t\t\trightKnee: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_KNEE),\n\t\t\tleftAnkle: getOrCreatePoseLm(COCO17_KEYPOINTS.LEFT_ANKLE),\n\t\t\trightAnkle: getOrCreatePoseLm(COCO17_KEYPOINTS.RIGHT_ANKLE),\n\t\t\tget: getOrCreatePoseLm\n\t\t};\n\t\tthis.poseLandmarks = new Proxy(poseNamed, { get(target, prop, receiver) {\n\t\t\tif (typeof prop === \"string\" && /^\\d+$/.test(prop)) return target.get(Number(prop));\n\t\t\tif (typeof prop === \"number\") return target.get(prop);\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t} });\n\t\tconst neutralTrack = (trackId, category = \"unknown\") => ({\n\t\t\ttrackId,\n\t\t\tcategory,\n\t\t\tscore: 0,\n\t\t\tboundingBox: {\n\t\t\t\toriginX: this._width / 2,\n\t\t\t\toriginY: this._height / 2,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tnormalizedX: .5,\n\t\t\t\tnormalizedY: .5,\n\t\t\t\tnormalizedWidth: 0,\n\t\t\t\tnormalizedHeight: 0\n\t\t\t},\n\t\t\tcenterX: this._width / 2,\n\t\t\tcenterY: this._height / 2,\n\t\t\tnormalizedCenterX: .5,\n\t\t\tnormalizedCenterY: .5,\n\t\t\tvelocity: {\n\t\t\t\tvx: 0,\n\t\t\t\tvy: 0\n\t\t\t},\n\t\t\tspeed: 0,\n\t\t\tage: 0,\n\t\t\thits: 0,\n\t\t\tactive: false,\n\t\t\tisCoasting: false\n\t\t});\n\t\tconst createAnchor = (getPos, label) => {\n\t\t\tconst screenX = programmaticSignal$1((ctx) => getPos(ctx.frame).sx, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_screenX`\n\t\t\t});\n\t\t\tconst screenY = programmaticSignal$1((ctx) => getPos(ctx.frame).sy, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_screenY`\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tx: programmaticSignal$1((ctx) => this._width > 0 ? getPos(ctx.frame).sx / this._width : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_x`\n\t\t\t\t}),\n\t\t\t\ty: programmaticSignal$1((ctx) => this._height > 0 ? getPos(ctx.frame).sy / this._height : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_y`\n\t\t\t\t}),\n\t\t\t\tz: programmaticSignal$1(() => 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_z`\n\t\t\t\t}),\n\t\t\t\tscreenX,\n\t\t\t\tscreenY\n\t\t\t};\n\t\t};\n\t\tconst buildTrackPoseSignals = (resolveTrack, label, fixedId) => {\n\t\t\tconst resolvePerson = (frame) => {\n\t\t\t\tconst poseRes = self.getPoseResult(frame);\n\t\t\t\tif (poseRes.people.length === 0) return void 0;\n\t\t\t\tconst trk = resolveTrack(frame);\n\t\t\t\tconst targetId = fixedId ?? trk.trackId;\n\t\t\t\tconst byId = poseRes.people.find((p) => p.trackId === targetId);\n\t\t\t\tif (byId) return byId;\n\t\t\t\tif (!trk.active && poseRes.people.length > 1) return void 0;\n\t\t\t\tif (poseRes.people.length === 1) return poseRes.people[0];\n\t\t\t\tlet bestPerson;\n\t\t\t\tlet bestIoU = .1;\n\t\t\t\tfor (const p of poseRes.people) {\n\t\t\t\t\tconst pBox = getPersonBoundingBox(p);\n\t\t\t\t\tconst iou = computeIoU(pBox, pBox.width <= 1.05 && pBox.height <= 1.05 && trk.boundingBox.normalizedWidth > 0 ? {\n\t\t\t\t\t\toriginX: trk.boundingBox.normalizedX,\n\t\t\t\t\t\toriginY: trk.boundingBox.normalizedY,\n\t\t\t\t\t\twidth: trk.boundingBox.normalizedWidth,\n\t\t\t\t\t\theight: trk.boundingBox.normalizedHeight\n\t\t\t\t\t} : trk.boundingBox);\n\t\t\t\t\tif (iou > bestIoU) {\n\t\t\t\t\t\tbestIoU = iou;\n\t\t\t\t\t\tbestPerson = p;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bestPerson;\n\t\t\t};\n\t\t\tconst hasPose = programmaticSignal$1((ctx) => resolvePerson(ctx.frame) ? 1 : 0, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_hasPose`\n\t\t\t});\n\t\t\tconst createCoord = (index, kptName) => {\n\t\t\t\tconst getLm = (frame) => {\n\t\t\t\t\tconst kp = resolvePerson(frame)?.keypoints[index];\n\t\t\t\t\tif (kp && kp.visibility > .05) return {\n\t\t\t\t\t\tx: kp.x,\n\t\t\t\t\t\ty: kp.y,\n\t\t\t\t\t\tz: 0\n\t\t\t\t\t};\n\t\t\t\t\tconst trk = resolveTrack(frame);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tx: trk.normalizedCenterX,\n\t\t\t\t\t\ty: trk.normalizedCenterY,\n\t\t\t\t\t\tz: 0\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tx: programmaticSignal$1((ctx) => getLm(ctx.frame).x, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_x`\n\t\t\t\t\t}),\n\t\t\t\t\ty: programmaticSignal$1((ctx) => getLm(ctx.frame).y, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_y`\n\t\t\t\t\t}),\n\t\t\t\t\tz: programmaticSignal$1((ctx) => getLm(ctx.frame).z ?? 0, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_z`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenX: programmaticSignal$1((ctx) => self._transformer.projectNormalizedLandmark(getLm(ctx.frame)).x, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_screenX`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenY: programmaticSignal$1((ctx) => self._transformer.projectNormalizedLandmark(getLm(ctx.frame)).y, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_${kptName}_screenY`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst coordsCache = /* @__PURE__ */ new Map();\n\t\t\tconst getOrCreateCoord = (idx) => {\n\t\t\t\tlet c = coordsCache.get(idx);\n\t\t\t\tif (!c) {\n\t\t\t\t\tc = createCoord(idx, COCO17_KEYPOINT_NAMES[idx] ?? `kpt_${idx}`);\n\t\t\t\t\tcoordsCache.set(idx, c);\n\t\t\t\t}\n\t\t\t\treturn c;\n\t\t\t};\n\t\t\tconst namedPose = {\n\t\t\t\thasPose,\n\t\t\t\twristSpeed: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst f = ctx.frame;\n\t\t\t\t\tconst curr = resolvePerson(f);\n\t\t\t\t\tif (!curr) return 0;\n\t\t\t\t\tconst prev = resolvePerson(Math.max(0, f - 1));\n\t\t\t\t\tconst currKp = curr.keypoints;\n\t\t\t\t\tconst prevKp = prev?.keypoints;\n\t\t\t\t\tconst rwCurr = currKp[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tconst rwPrev = prevKp?.[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tlet rwSpeed = 0;\n\t\t\t\t\tif (rwCurr && rwPrev && rwCurr.visibility > .1 && rwPrev.visibility > .1) {\n\t\t\t\t\t\tconst dx = (rwCurr.x - rwPrev.x) * this._width;\n\t\t\t\t\t\tconst dy = (rwCurr.y - rwPrev.y) * this._height;\n\t\t\t\t\t\trwSpeed = Math.sqrt(dx * dx + dy * dy) * this._fps;\n\t\t\t\t\t}\n\t\t\t\t\tconst lwCurr = currKp[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tconst lwPrev = prevKp?.[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tlet lwSpeed = 0;\n\t\t\t\t\tif (lwCurr && lwPrev && lwCurr.visibility > .1 && lwPrev.visibility > .1) {\n\t\t\t\t\t\tconst dx = (lwCurr.x - lwPrev.x) * this._width;\n\t\t\t\t\t\tconst dy = (lwCurr.y - lwPrev.y) * this._height;\n\t\t\t\t\t\tlwSpeed = Math.sqrt(dx * dx + dy * dy) * this._fps;\n\t\t\t\t\t}\n\t\t\t\t\treturn Math.max(rwSpeed, lwSpeed);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_wristSpeed`\n\t\t\t\t}),\n\t\t\t\thandRaised: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst p = resolvePerson(ctx.frame);\n\t\t\t\t\tif (!p) return 0;\n\t\t\t\t\tconst k = p.keypoints;\n\t\t\t\t\tconst lw = k[COCO17_KEYPOINTS.LEFT_WRIST];\n\t\t\t\t\tconst ls = k[COCO17_KEYPOINTS.LEFT_SHOULDER];\n\t\t\t\t\tconst rw = k[COCO17_KEYPOINTS.RIGHT_WRIST];\n\t\t\t\t\tconst rs = k[COCO17_KEYPOINTS.RIGHT_SHOULDER];\n\t\t\t\t\tconst lRaised = lw && ls && lw.visibility > .1 && ls.visibility > .1 && lw.y < ls.y;\n\t\t\t\t\tconst rRaised = rw && rs && rw.visibility > .1 && rs.visibility > .1 && rw.y < rs.y;\n\t\t\t\t\treturn lRaised || rRaised ? 1 : 0;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_handRaised`\n\t\t\t\t}),\n\t\t\t\tbodyTiltAngle: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst p = resolvePerson(ctx.frame);\n\t\t\t\t\tif (!p) return 0;\n\t\t\t\t\tconst k = p.keypoints;\n\t\t\t\t\tconst ls = k[COCO17_KEYPOINTS.LEFT_SHOULDER];\n\t\t\t\t\tconst rs = k[COCO17_KEYPOINTS.RIGHT_SHOULDER];\n\t\t\t\t\tconst lh = k[COCO17_KEYPOINTS.LEFT_HIP];\n\t\t\t\t\tconst rh = k[COCO17_KEYPOINTS.RIGHT_HIP];\n\t\t\t\t\tif (!ls || !rs || !lh || !rh) return 0;\n\t\t\t\t\tconst sx = (ls.x + rs.x) / 2 * this._width;\n\t\t\t\t\tconst sy = (ls.y + rs.y) / 2 * this._height;\n\t\t\t\t\tconst hx = (lh.x + rh.x) / 2 * this._width;\n\t\t\t\t\tconst hy = (lh.y + rh.y) / 2 * this._height;\n\t\t\t\t\tconst dx = sx - hx;\n\t\t\t\t\tconst dy = sy - hy;\n\t\t\t\t\tif (dx === 0 && dy === 0) return 0;\n\t\t\t\t\treturn Math.atan2(dx, -dy);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_bodyTiltAngle`\n\t\t\t\t}),\n\t\t\t\tnose: getOrCreateCoord(COCO17_KEYPOINTS.NOSE),\n\t\t\t\tleftEye: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_EYE),\n\t\t\t\trightEye: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_EYE),\n\t\t\t\tleftEar: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_EAR),\n\t\t\t\trightEar: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_EAR),\n\t\t\t\tshoulder: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\t\tleftShoulder: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_SHOULDER),\n\t\t\t\trightShoulder: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_SHOULDER),\n\t\t\t\tleftElbow: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_ELBOW),\n\t\t\t\trightElbow: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_ELBOW),\n\t\t\t\tleftWrist: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_WRIST),\n\t\t\t\trightWrist: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_WRIST),\n\t\t\t\tleftHip: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_HIP),\n\t\t\t\trightHip: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_HIP),\n\t\t\t\tleftKnee: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_KNEE),\n\t\t\t\trightKnee: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_KNEE),\n\t\t\t\tleftAnkle: getOrCreateCoord(COCO17_KEYPOINTS.LEFT_ANKLE),\n\t\t\t\trightAnkle: getOrCreateCoord(COCO17_KEYPOINTS.RIGHT_ANKLE),\n\t\t\t\tget: getOrCreateCoord\n\t\t\t};\n\t\t\treturn new Proxy(namedPose, { get(target, prop, receiver) {\n\t\t\t\tif (typeof prop === \"string\" && /^\\d+$/.test(prop)) return target.get(Number(prop));\n\t\t\t\tif (typeof prop === \"number\") return target.get(prop);\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t} });\n\t\t};\n\t\tconst buildTrackSignals = (resolve$1, label, fixedCategory, fixedId) => {\n\t\t\tconst getBox = (f) => resolve$1(f).boundingBox;\n\t\t\tconst pose = buildTrackPoseSignals(resolve$1, `${label}_pose`, fixedId);\n\t\t\tconst anchor = (name, sx, sy) => createAnchor((f) => ({\n\t\t\t\tsx: sx(getBox(f)),\n\t\t\t\tsy: sy(getBox(f))\n\t\t\t}), `${label}_${name}`);\n\t\t\tconst center = anchor(\"center\", (b) => b.originX + b.width / 2, (b) => b.originY + b.height / 2);\n\t\t\tconst speed = programmaticSignal$1((ctx) => resolve$1(ctx.frame).speed, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: `${label}_speed`\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tget trackId() {\n\t\t\t\t\treturn fixedId ?? resolve$1(0).trackId;\n\t\t\t\t},\n\t\t\t\tget category() {\n\t\t\t\t\treturn fixedCategory ?? resolve$1(0).category;\n\t\t\t\t},\n\t\t\t\tbounds: {\n\t\t\t\t\tx: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedX, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normX`\n\t\t\t\t\t}),\n\t\t\t\t\ty: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedY, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normY`\n\t\t\t\t\t}),\n\t\t\t\t\twidth: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedWidth, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normWidth`\n\t\t\t\t\t}),\n\t\t\t\t\theight: programmaticSignal$1((ctx) => getBox(ctx.frame).normalizedHeight, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_normHeight`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenX: programmaticSignal$1((ctx) => getBox(ctx.frame).originX, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenX`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenY: programmaticSignal$1((ctx) => getBox(ctx.frame).originY, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenY`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenWidth: programmaticSignal$1((ctx) => getBox(ctx.frame).width, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenWidth`\n\t\t\t\t\t}),\n\t\t\t\t\tscreenHeight: programmaticSignal$1((ctx) => getBox(ctx.frame).height, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_screenHeight`\n\t\t\t\t\t}),\n\t\t\t\t\taspectRatio: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst b = getBox(ctx.frame);\n\t\t\t\t\t\treturn b.height > 0 ? b.width / b.height : 1;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_aspectRatio`\n\t\t\t\t\t}),\n\t\t\t\t\tarea: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst b = getBox(ctx.frame);\n\t\t\t\t\t\treturn b.width * b.height;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_area`\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tanchors: {\n\t\t\t\t\ttopLeft: anchor(\"topLeft\", (b) => b.originX, (b) => b.originY),\n\t\t\t\t\ttopCenter: anchor(\"topCenter\", (b) => b.originX + b.width / 2, (b) => b.originY),\n\t\t\t\t\ttopRight: anchor(\"topRight\", (b) => b.originX + b.width, (b) => b.originY),\n\t\t\t\t\tcenterLeft: anchor(\"centerLeft\", (b) => b.originX, (b) => b.originY + b.height / 2),\n\t\t\t\t\tcenter,\n\t\t\t\t\tcenterRight: anchor(\"centerRight\", (b) => b.originX + b.width, (b) => b.originY + b.height / 2),\n\t\t\t\t\tbottomLeft: anchor(\"bottomLeft\", (b) => b.originX, (b) => b.originY + b.height),\n\t\t\t\t\tbottomCenter: anchor(\"bottomCenter\", (b) => b.originX + b.width / 2, (b) => b.originY + b.height),\n\t\t\t\t\tbottomRight: anchor(\"bottomRight\", (b) => b.originX + b.width, (b) => b.originY + b.height)\n\t\t\t\t},\n\t\t\t\tkinematics: {\n\t\t\t\t\tvx: programmaticSignal$1((ctx) => resolve$1(ctx.frame).velocity.vx, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_vx`\n\t\t\t\t\t}),\n\t\t\t\t\tvy: programmaticSignal$1((ctx) => resolve$1(ctx.frame).velocity.vy, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_vy`\n\t\t\t\t\t}),\n\t\t\t\t\tspeed,\n\t\t\t\t\tacceleration: speed.velocity(1),\n\t\t\t\t\theadingRad: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst v = resolve$1(ctx.frame).velocity;\n\t\t\t\t\t\treturn Math.atan2(v.vy, v.vx);\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_headingRad`\n\t\t\t\t\t}),\n\t\t\t\t\theadingDeg: programmaticSignal$1((ctx) => {\n\t\t\t\t\t\tconst v = resolve$1(ctx.frame).velocity;\n\t\t\t\t\t\treturn Math.atan2(v.vy, v.vx) * 180 / Math.PI;\n\t\t\t\t\t}, {\n\t\t\t\t\t\tfps: this._fps,\n\t\t\t\t\t\tlabel: `${label}_headingDeg`\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tconfidence: programmaticSignal$1((ctx) => resolve$1(ctx.frame).score, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_score`\n\t\t\t\t}),\n\t\t\t\tactive: programmaticSignal$1((ctx) => resolve$1(ctx.frame).active ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_active`\n\t\t\t\t}),\n\t\t\t\tisCoasting: programmaticSignal$1((ctx) => resolve$1(ctx.frame).isCoasting ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_isCoasting`\n\t\t\t\t}),\n\t\t\t\tage: programmaticSignal$1((ctx) => resolve$1(ctx.frame).age, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_age`\n\t\t\t\t}),\n\t\t\t\tpose,\n\t\t\t\tcenter,\n\t\t\t\ttopCenter: this[`__pending`],\n\t\t\t\tbottomCenter: center,\n\t\t\t\ttopLeft: center,\n\t\t\t\tbottomLeft: center\n\t\t\t};\n\t\t};\n\t\tconst buildTrack = (resolve$1, label, fixedCategory, fixedId) => {\n\t\t\tconst sig = buildTrackSignals(resolve$1, label, fixedCategory, fixedId);\n\t\t\tconst anchors = sig.anchors;\n\t\t\tObject.assign(sig, {\n\t\t\t\ttopCenter: anchors.topCenter,\n\t\t\t\tbottomCenter: anchors.bottomCenter,\n\t\t\t\ttopLeft: anchors.topLeft,\n\t\t\t\tbottomLeft: anchors.bottomLeft\n\t\t\t});\n\t\t\treturn sig;\n\t\t};\n\t\tconst getTrackById = (trackId) => {\n\t\t\tlet sig = this._trackCache.get(trackId);\n\t\t\tif (!sig) {\n\t\t\t\tsig = buildTrack((frame) => this.getObjectResult(frame).objects.find((o) => o.trackId === trackId) ?? neutralTrack(trackId), `track_${trackId}`, void 0, trackId);\n\t\t\t\tthis._trackCache.set(trackId, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst getTrackByCategory = (category, rank = 0) => {\n\t\t\tconst cacheKey = `${category.toLowerCase()}_${rank}`;\n\t\t\tlet sig = this._categoryCache.get(cacheKey);\n\t\t\tif (!sig) {\n\t\t\t\tsig = buildTrack((frame) => {\n\t\t\t\t\treturn this.getObjectResult(frame).objects.filter((o) => o.category.toLowerCase() === category.toLowerCase() && o.active)[rank] ?? neutralTrack(0, category);\n\t\t\t\t}, `cat_${category}_${rank}`, category);\n\t\t\t\tthis._categoryCache.set(cacheKey, sig);\n\t\t\t}\n\t\t\treturn sig;\n\t\t};\n\t\tconst primaryTrack = buildTrack((frame) => {\n\t\t\tconst res = this.getObjectResult(frame);\n\t\t\tif (res.objects.length === 0) return neutralTrack(0);\n\t\t\tlet best = res.objects[0];\n\t\t\tfor (let i = 1; i < res.objects.length; i++) if (res.objects[i].score > best.score) best = res.objects[i];\n\t\t\treturn best;\n\t\t}, \"primary_object\");\n\t\tconst activeCategories = (frame) => {\n\t\t\tconst set = /* @__PURE__ */ new Set();\n\t\t\tfor (const o of this.getObjectResult(frame).objects) if (o.active) set.add(o.category);\n\t\t\treturn Array.from(set).sort();\n\t\t};\n\t\tconst buildClassSignals = (category) => {\n\t\t\tconst lower = category.toLowerCase();\n\t\t\tlet sig = this._classCache.get(lower);\n\t\t\tif (sig) return sig;\n\t\t\tsig = {\n\t\t\t\tcount: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.filter((o) => o.active && o.category.toLowerCase() === lower).length, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_count`\n\t\t\t\t}),\n\t\t\t\tmaxConfidence: programmaticSignal$1((ctx) => {\n\t\t\t\t\tlet max = 0;\n\t\t\t\t\tfor (const o of this.getObjectResult(ctx.frame).objects) if (o.active && o.category.toLowerCase() === lower && o.score > max) max = o.score;\n\t\t\t\t\treturn max;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_maxConf`\n\t\t\t\t}),\n\t\t\t\tpresent: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.some((o) => o.active && o.category.toLowerCase() === lower) ? 1 : 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `class_${lower}_present`\n\t\t\t\t}),\n\t\t\t\tprimary: getTrackByCategory(category)\n\t\t\t};\n\t\t\tthis._classCache.set(lower, sig);\n\t\t\treturn sig;\n\t\t};\n\t\tthis.classes = {\n\t\t\tget: buildClassSignals,\n\t\t\tget names() {\n\t\t\t\treturn activeCategories(frameSignal.value);\n\t\t\t},\n\t\t\thistogram: {\n\t\t\t\tget: (ctx) => self.getClassHistogramTensor(ctx?.frame ?? frameSignal.value),\n\t\t\t\tget value() {\n\t\t\t\t\treturn self.getClassHistogramTensor(frameSignal.value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.objects = {\n\t\t\tget: getTrackById,\n\t\t\tbyCategory: getTrackByCategory,\n\t\t\tprimary: primaryTrack,\n\t\t\tcount: programmaticSignal$1((ctx) => this.getObjectResult(ctx.frame).objects.filter((o) => o.active).length, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: \"tracked_objects_count\"\n\t\t\t}),\n\t\t\thasCategory: (category) => buildClassSignals(category).present,\n\t\t\tgetActiveTracks: (frame) => this.getObjectResult(frame).objects.filter((o) => o.active),\n\t\t\tget detectedCategories() {\n\t\t\t\treturn activeCategories(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tconst maskForTrack = (frame, trackId) => this.getMaskResult(frame).find((m) => m.trackId === trackId);\n\t\tconst subjectMask = (frame) => selectSubjectMask(this.getMaskResult(frame));\n\t\tconst buildMaskTrackSignals = (resolve$1, label) => {\n\t\t\tconst boxFor = (frame) => {\n\t\t\t\tconst mask = resolve$1(frame);\n\t\t\t\tif (!mask || mask.trackId === void 0) return void 0;\n\t\t\t\treturn this.getObjectResult(frame).objects.find((o) => o.trackId === mask.trackId);\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tget trackId() {\n\t\t\t\t\treturn resolve$1(frameSignal.value)?.trackId ?? 0;\n\t\t\t\t},\n\t\t\t\tget category() {\n\t\t\t\t\treturn resolve$1(frameSignal.value)?.category ?? \"unknown\";\n\t\t\t\t},\n\t\t\t\tarea: programmaticSignal$1((ctx) => resolve$1(ctx.frame)?.area ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_area`\n\t\t\t\t}),\n\t\t\t\tcoverage: programmaticSignal$1((ctx) => resolve$1(ctx.frame)?.coverage ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_coverage`\n\t\t\t\t}),\n\t\t\t\tsolidity: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst mask = resolve$1(ctx.frame);\n\t\t\t\t\tconst box = boxFor(ctx.frame);\n\t\t\t\t\tif (!mask || !box) return 0;\n\t\t\t\t\tconst bboxArea = box.boundingBox.width * box.boundingBox.height;\n\t\t\t\t\treturn bboxArea > 0 ? mask.area / bboxArea : 0;\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_solidity`\n\t\t\t\t}),\n\t\t\t\tbboxFill: programmaticSignal$1((ctx) => {\n\t\t\t\t\tconst mask = resolve$1(ctx.frame);\n\t\t\t\t\tif (!mask || mask.width * mask.height === 0) return 0;\n\t\t\t\t\tconst box = boxFor(ctx.frame);\n\t\t\t\t\tif (!box) return 0;\n\t\t\t\t\treturn box.boundingBox.width * box.boundingBox.height / (mask.width * mask.height);\n\t\t\t\t}, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: `${label}_bboxFill`\n\t\t\t\t})\n\t\t\t};\n\t\t};\n\t\tthis.masks = {\n\t\t\tget: (trackId) => {\n\t\t\t\tlet sig = this._maskTrackCache.get(trackId);\n\t\t\t\tif (!sig) {\n\t\t\t\t\tsig = buildMaskTrackSignals((frame) => maskForTrack(frame, trackId), `mask_${trackId}`);\n\t\t\t\t\tthis._maskTrackCache.set(trackId, sig);\n\t\t\t\t}\n\t\t\t\treturn sig;\n\t\t\t},\n\t\t\tsubject: buildMaskTrackSignals(subjectMask, \"subject\"),\n\t\t\tcount: programmaticSignal$1((ctx) => new Set(this.getMaskResult(ctx.frame).map((m) => m.trackId ?? -1)).size, {\n\t\t\t\tfps: this._fps,\n\t\t\t\tlabel: \"mask_count\"\n\t\t\t})\n\t\t};\n\t\tthis.segmentation = {\n\t\t\thumanSilhouette: this.masks.subject,\n\t\t\tsubject: this.masks.subject,\n\t\t\tinstanceMasks: this.masks,\n\t\t\tmatte: {\n\t\t\t\tcoverage: programmaticSignal$1((ctx) => self.getMatteResult(ctx.frame)?.coverage ?? 0, {\n\t\t\t\t\tfps: this._fps,\n\t\t\t\t\tlabel: \"matte_coverage\"\n\t\t\t\t}),\n\t\t\t\tat: (frame) => self.getMatteResult(frame)\n\t\t\t},\n\t\t\tget stencilTexture() {\n\t\t\t\treturn self._stencilTexture;\n\t\t\t}\n\t\t};\n\t\tthis.poseLandmarksTensor = {\n\t\t\tget: (ctx) => self.getPoseLandmarksTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getPoseLandmarksTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.objectsTensor = {\n\t\t\tget: (ctx) => self.getObjectsTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getObjectsTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.masksTensor = {\n\t\t\tget: (ctx) => self.getMasksTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getMasksTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t\tthis.histogramTensor = {\n\t\t\tget: (ctx) => self.getClassHistogramTensor(ctx?.frame ?? frameSignal.value),\n\t\t\tget value() {\n\t\t\t\treturn self.getClassHistogramTensor(frameSignal.value);\n\t\t\t}\n\t\t};\n\t}\n\tsetStencilTexture(texture) {\n\t\tthis._stencilTexture = texture;\n\t}\n\tget stencilTexture() {\n\t\treturn this._stencilTexture;\n\t}\n\t/**\n\t* Reads the most recent result at or before `frame`. Vision results are written one\n\t* frame behind the plate (the node renderer reads back the previous frame to infer),\n\t* and pinned-signal layout runs before the current frame's inference, so a strict\n\t* per-frame lookup would always miss. Walking back a few frames keeps signals live at\n\t* a stable one-frame lag instead of snapping to neutral defaults.\n\t*/\n\tlatestAtOrBefore(cache, frame, maxBack = 8) {\n\t\tconst start = this.clamp(frame);\n\t\tconst floor = Math.max(0, start - maxBack);\n\t\tfor (let f = start; f >= floor; f--) {\n\t\t\tconst value = cache.get(f);\n\t\t\tif (value !== void 0) return value;\n\t\t}\n\t}\n\tinvalidateSignals() {\n\t\tfor (const sig of this._registeredSignals) sig.invalidate();\n\t}\n\tsetPoseResult(frame, result) {\n\t\tthis._poseCache.set(this.clamp(frame), result);\n\t\tthis.invalidateSignals();\n\t}\n\tgetPoseResult(frame) {\n\t\treturn this.latestAtOrBefore(this._poseCache, frame) ?? createNeutralPoseResult();\n\t}\n\tsetObjectResult(frame, result) {\n\t\tconst normalized = \"objects\" in result ? result : {\n\t\t\tobjects: result,\n\t\t\trawDetections: []\n\t\t};\n\t\tthis._objectCache.set(this.clamp(frame), {\n\t\t\tobjects: normalized.objects,\n\t\t\trawDetections: normalized.rawDetections ?? []\n\t\t});\n\t\tthis.invalidateSignals();\n\t}\n\tgetObjectResult(frame) {\n\t\treturn this.latestAtOrBefore(this._objectCache, frame) ?? createNeutralObjectResult();\n\t}\n\tsetMaskResult(frame, masks) {\n\t\tthis._maskCache.set(this.clamp(frame), masks);\n\t\tthis.invalidateSignals();\n\t}\n\tgetMaskResult(frame) {\n\t\treturn this.latestAtOrBefore(this._maskCache, frame) ?? [];\n\t}\n\tsetMatteResult(frame, matte) {\n\t\tthis._matteCache.set(this.clamp(frame), matte);\n\t\tthis.invalidateSignals();\n\t}\n\tgetMatteResult(frame) {\n\t\treturn this.latestAtOrBefore(this._matteCache, frame);\n\t}\n\t/**\n\t* Serializable snapshot of one frame's object / class / mask signals.\n\t* Synchronous — reads only the per-frame caches, never triggers inference.\n\t*/\n\tsummary(frame = frameSignal.value) {\n\t\tconst f = this.clamp(frame);\n\t\tconst res = this.getObjectResult(f);\n\t\tconst objects = res.objects.map((o) => ({\n\t\t\ttrackId: o.trackId,\n\t\t\tcategory: o.category,\n\t\t\tscore: o.score,\n\t\t\tcenter: [o.centerX, o.centerY],\n\t\t\tspeed: o.speed,\n\t\t\tactive: o.active\n\t\t}));\n\t\tconst classSet = /* @__PURE__ */ new Set();\n\t\tfor (const o of res.objects) if (o.active) classSet.add(o.category);\n\t\tconst masks = {};\n\t\tfor (const m of this.getMaskResult(f)) masks[m.category] = (masks[m.category] ?? 0) + 1;\n\t\treturn {\n\t\t\tframe: f,\n\t\t\tobjects,\n\t\t\tclasses: Array.from(classSet).sort(),\n\t\t\tmasks\n\t\t};\n\t}\n\t/** Primary person's 17 keypoints as a [17, 3] float32 tensor. */\n\tgetPoseLandmarksTensor(frame) {\n\t\tconst kpts = this.getPoseResult(frame).people[0]?.keypoints ?? [];\n\t\tconst data = new Float32Array(51);\n\t\tfor (let i = 0; i < 17; i++) {\n\t\t\tdata[i * 3] = kpts[i]?.x ?? .5;\n\t\t\tdata[i * 3 + 1] = kpts[i]?.y ?? .5;\n\t\t\tdata[i * 3 + 2] = kpts[i]?.visibility ?? 0;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [17, 3],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Up to 16 active tracks as [16, 8]: [active, categoryHash, x, y, w, h, vx, vy]. */\n\tgetObjectsTensor(frame, maxObjects = 16) {\n\t\tconst res = this.getObjectResult(frame);\n\t\tconst data = new Float32Array(maxObjects * 8);\n\t\tconst count = Math.min(maxObjects, res.objects.length);\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst obj = res.objects[i];\n\t\t\tconst off = i * 8;\n\t\t\tlet catHash = 0;\n\t\t\tfor (let c = 0; c < obj.category.length; c++) catHash = catHash * 31 + obj.category.charCodeAt(c) & 65535;\n\t\t\tdata[off] = obj.active ? 1 : 0;\n\t\t\tdata[off + 1] = catHash;\n\t\t\tdata[off + 2] = obj.centerX;\n\t\t\tdata[off + 3] = obj.centerY;\n\t\t\tdata[off + 4] = obj.boundingBox.width;\n\t\t\tdata[off + 5] = obj.boundingBox.height;\n\t\t\tdata[off + 6] = obj.velocity.vx;\n\t\t\tdata[off + 7] = obj.velocity.vy;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [maxObjects, 8],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Per-mask coverage + solidity as [16, 2]. */\n\tgetMasksTensor(frame, maxMasks = 16) {\n\t\tconst masks = this.getMaskResult(frame);\n\t\tconst data = new Float32Array(maxMasks * 2);\n\t\tconst count = Math.min(maxMasks, masks.length);\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst m = masks[i];\n\t\t\tdata[i * 2] = m.coverage;\n\t\t\tconst box = this.getObjectResult(frame).objects.find((o) => o.trackId === m.trackId);\n\t\t\tconst bboxArea = box ? box.boundingBox.width * box.boundingBox.height : 0;\n\t\t\tdata[i * 2 + 1] = bboxArea > 0 ? m.area / bboxArea : 0;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [maxMasks, 2],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\t/** Per-class detection histogram for the frame as [nc] float32 (COCO 80 by default). */\n\tgetClassHistogramTensor(frame, nc = 80) {\n\t\tconst data = new Float32Array(nc);\n\t\tfor (const o of this.getObjectResult(frame).objects) if (o.active) {\n\t\t\tconst idx = COCO_CLASS_INDEX_BY_NAME.get(o.category.toLowerCase());\n\t\t\tif (idx !== void 0) data[idx] += 1;\n\t\t}\n\t\treturn {\n\t\t\tdata,\n\t\t\tshape: [nc],\n\t\t\tdtype: \"float32\"\n\t\t};\n\t}\n\tclamp(frame) {\n\t\treturn Math.max(0, Math.min(this._totalFrames - 1, Math.round(frame)));\n\t}\n};\nfunction createVisionBundle(options) {\n\treturn new VisionBundle(options);\n}\nconst COCO_CLASS_INDEX_BY_NAME = new Map(COCO_CLASSES.map((name, index) => [name, index]));\n\n//#endregion\n//#region src/spatial/spatial-pin.ts\nfunction pinNodeToLandmark(node, target, options = {}) {\n\tconst offX = options.offsetX ?? 0;\n\tconst offY = options.offsetY ?? 0;\n\tconst offZ = options.offsetZ ?? 0;\n\tif (!target || typeof target !== \"object\") return node;\n\tif (\"screenX\" in target && target.screenX && typeof target.screenX === \"object\") {\n\t\tconst signals = target;\n\t\tnode.x = offX !== 0 ? signals.screenX.add(offX) : signals.screenX;\n\t\tnode.y = offY !== 0 ? signals.screenY.add(offY) : signals.screenY;\n\t\tnode.z = offZ !== 0 ? signals.z.add(offZ) : signals.z;\n\t} else if (\"x\" in target && typeof target.x === \"object\" && target.x !== null) {\n\t\tconst signals = target;\n\t\tnode.x = offX !== 0 ? signals.x.add(offX) : signals.x;\n\t\tnode.y = offY !== 0 ? signals.y.add(offY) : signals.y;\n\t\tnode.z = offZ !== 0 ? signals.z.add(offZ) : signals.z;\n\t} else {\n\t\tconst staticCoord = target;\n\t\tnode.x = (staticCoord.screenX ?? staticCoord.x) + offX;\n\t\tnode.y = (staticCoord.screenY ?? staticCoord.y) + offY;\n\t\tnode.z = (staticCoord.z ?? 0) + offZ;\n\t}\n\treturn node;\n}\nfunction pinNodeToObject(node, target, options = {}) {\n\tif (!target || typeof target !== \"object\") return node;\n\tif (\"anchors\" in target && target.anchors) {\n\t\tconst track = target;\n\t\tconst anchorName = options.anchor ?? (options.matchWidth || options.matchHeight ? \"topLeft\" : \"center\");\n\t\tconst rawAnchor = track.anchors[anchorName] ?? track.center;\n\t\tlet resolvedAnchor = rawAnchor;\n\t\tif (options.smoothFrames && options.smoothFrames > 1) resolvedAnchor = {\n\t\t\tx: rawAnchor.x.smooth(options.smoothFrames),\n\t\t\ty: rawAnchor.y.smooth(options.smoothFrames),\n\t\t\tz: rawAnchor.z,\n\t\t\tscreenX: rawAnchor.screenX.smooth(options.smoothFrames),\n\t\t\tscreenY: rawAnchor.screenY.smooth(options.smoothFrames)\n\t\t};\n\t\tif (options.matchWidth) node.width = options.smoothFrames && options.smoothFrames > 1 ? track.bounds.screenWidth.smooth(options.smoothFrames) : track.bounds.screenWidth;\n\t\tif (options.matchHeight) node.height = options.smoothFrames && options.smoothFrames > 1 ? track.bounds.screenHeight.smooth(options.smoothFrames) : track.bounds.screenHeight;\n\t\tif (options.hideWhenLost) node.opacity = track.active;\n\t\treturn pinNodeToLandmark(node, resolvedAnchor, options);\n\t}\n\treturn pinNodeToLandmark(node, target, options);\n}\n\n//#endregion\n//#region src/vision-node.ts\n/** Tasks a config turns on; detection is the default when nothing is enabled explicitly. */\nfunction enabledTasks(config) {\n\tconst tasks = [];\n\tif (config.enableDetection === true) tasks.push(\"detect\");\n\tif (config.enableSegmentation === true) tasks.push(\"segment\");\n\tif (config.enablePose === true) tasks.push(\"pose\");\n\tif (config.enableMatte === true) tasks.push(\"matte\");\n\treturn tasks.length > 0 ? tasks : [\"detect\"];\n}\n/**\n* Vision node.\n*\n* LAZY BY CONSTRUCTION: creating a VisionNode performs ZERO I/O — no model downloads, no\n* sessions, no file probes. The first inference call (or an explicit `await vision.ready()`)\n* downloads the required models.\n*/\nvar VisionNode = class VisionNode {\n\tid;\n\tkind = \"vision\";\n\tsource;\n\tconfig;\n\tvision;\n\t_runner;\n\t/** Runner construction options (modelsDir, provider, store, …) — injectable for tests/agents. */\n\t_runnerOptions;\n\tconstructor(source, config = {}, bundleOptions = {}, runnerOptions = {}) {\n\t\tthis.id = `vision-${Math.random().toString(36).slice(2, 9)}`;\n\t\tthis.source = source;\n\t\tthis.config = config;\n\t\tthis._runnerOptions = runnerOptions;\n\t\tthis.vision = new VisionBundle({\n\t\t\t...bundleOptions,\n\t\t\tconfig\n\t\t});\n\t}\n\t/** Lazily-created runner; downloads happen on its first inference. */\n\trunner() {\n\t\tif (!this._runner) {\n\t\t\tconst { variant, confidence, classes, modelsDir, baseUrl, maskThreshold, featherRadius } = this.config;\n\t\t\tthis._runner = VisionRunner.create({\n\t\t\t\t...this._runnerOptions,\n\t\t\t\t...variant !== void 0 ? { variant } : {},\n\t\t\t\t...confidence !== void 0 ? { confidence } : {},\n\t\t\t\t...classes !== void 0 ? { classes } : {},\n\t\t\t\t...modelsDir !== void 0 ? { modelsDir } : {},\n\t\t\t\t...baseUrl !== void 0 ? { baseUrl } : {},\n\t\t\t\t...maskThreshold !== void 0 ? { maskThreshold } : {},\n\t\t\t\t...featherRadius !== void 0 ? { featherRadius } : {}\n\t\t\t});\n\t\t}\n\t\treturn this._runner;\n\t}\n\t/** Explicit warm-up — downloads the models for the enabled tasks, ahead of first inference. */\n\tasync ready() {\n\t\tconst runner = this.runner();\n\t\tawait runner.preload(enabledTasks(this.config));\n\t\treturn runner;\n\t}\n\tclose() {\n\t\tthis._runner?.close();\n\t\tthis._runner = void 0;\n\t}\n\tstatic attach(source, config = {}, bundleOptions = {}) {\n\t\tconst node = new VisionNode(source, config, bundleOptions);\n\t\tconst vision = node.vision;\n\t\tObject.defineProperties(vision, {\n\t\t\tnode: {\n\t\t\t\tvalue: node.toNode(),\n\t\t\t\tenumerable: true\n\t\t\t},\n\t\t\tready: { value: () => node.ready() },\n\t\t\trunner: { value: () => node.runner() },\n\t\t\tclose: { value: () => node.close() }\n\t\t});\n\t\treturn vision;\n\t}\n\ttoNode() {\n\t\treturn {\n\t\t\tid: this.id,\n\t\t\tkind: \"vision\",\n\t\t\tsource: this.source,\n\t\t\tconfig: this.config\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/index.ts\nvar src_exports = /* @__PURE__ */ __exportAll({\n\tAutoSessionProvider: () => AutoSessionProvider,\n\tCOCO17_BONES: () => COCO17_BONES,\n\tCOCO17_KEYPOINTS: () => COCO17_KEYPOINTS,\n\tCOCO17_KEYPOINT_COUNT: () => COCO17_KEYPOINT_COUNT,\n\tCOCO17_KEYPOINT_NAMES: () => COCO17_KEYPOINT_NAMES,\n\tCOCO_CLASSES: () => COCO_CLASSES,\n\tNodeSessionProvider: () => NodeSessionProvider,\n\tNodeWebGPUProvider: () => NodeWebGPUProvider,\n\tPREPROCESS_BY_FAMILY: () => PREPROCESS_BY_FAMILY,\n\tPoseSkeletonRenderer: () => PoseSkeletonRenderer,\n\tSegmentationTexturePool: () => SegmentationTexturePool,\n\tSpatialLandmarkTransformer: () => SpatialLandmarkTransformer,\n\tTemporalObjectTracker: () => TemporalObjectTracker,\n\tVISION_MODELS: () => VISION_MODELS,\n\tVISION_TASKS: () => VISION_TASKS,\n\tVISION_VARIANTS: () => VISION_VARIANTS,\n\tVisionBundle: () => VisionBundle,\n\tVisionModelStore: () => VisionModelStore,\n\tVisionNode: () => VisionNode,\n\tVisionRunner: () => VisionRunner,\n\tanalyzeSequence: () => analyzeSequence,\n\tcomputeInputTransform: () => computeInputTransform,\n\tcomputeIoU: () => computeIoU,\n\tcreateDefaultSessionProvider: () => createDefaultSessionProvider,\n\tcreateNeutralLandmarks: () => createNeutralLandmarks,\n\tcreateNeutralObjectResult: () => createNeutralObjectResult,\n\tcreateNeutralPoseResult: () => createNeutralPoseResult,\n\tcreateNodeWebGPUProvider: () => createNodeWebGPUProvider,\n\tcreateVisionBundle: () => createVisionBundle,\n\tdecodeRtmdetIns: () => decodeRtmdetIns,\n\tdecodeRtmo: () => decodeRtmo,\n\tdecodeSelfie: () => decodeSelfie,\n\tensureNodeWebGPU: () => ensureNodeWebGPU,\n\tgetDefaultModelsDir: () => getDefaultModelsDir,\n\tgetPersonBoundingBox: () => getPersonBoundingBox,\n\timageToTensor: () => imageToTensor,\n\tmaskBounds: () => maskBounds,\n\tmatchPoseToTracks: () => matchPoseToTracks,\n\tmergeSubjectMask: () => mergeSubjectMask,\n\tmodelKeyFor: () => modelKeyFor,\n\tpinNodeToLandmark: () => pinNodeToLandmark,\n\tpinNodeToObject: () => pinNodeToObject,\n\tpreprocessSpec: () => preprocessSpec,\n\tprobabilityToAlpha: () => probabilityToAlpha,\n\tselectSubjectMask: () => selectSubjectMask,\n\tsetDefaultSessionProvider: () => setDefaultSessionProvider,\n\ttoSourcePoint: () => toSourcePoint\n});\n\n//#endregion\nexport { PoseSkeletonRenderer as A, computeInputTransform as B, hasWebGPU as C, VisionModelStore as D, createNeutralPoseResult as E, COCO17_KEYPOINT_COUNT as F, TemporalObjectTracker as G, preprocessSpec as H, decodeRtmo as I, computeIoU as K, decodeRtmdetIns as L, COCO17_KEYPOINTS as M, COCO17_KEYPOINT_NAMES as N, getDefaultModelsDir as O, decodeSelfie as P, probabilityToAlpha as R, createWebGPUProvider as S, createNeutralObjectResult as T, toSourcePoint as U, imageToTensor as V, analyzeSequence as W, setDefaultSessionProvider as _, VisionBundle as a, ensureNodeWebGPU as b, matchPoseToTracks as c, mergeSubjectMask as d, selectSubjectMask as f, createDefaultSessionProvider as g, NodeSessionProvider as h, pinNodeToObject as i, COCO17_BONES as j, SegmentationTexturePool as k, SpatialLandmarkTransformer as l, AutoSessionProvider as m, VisionNode as n, createVisionBundle as o, VisionRunner as p, pinNodeToLandmark as r, getPersonBoundingBox as s, src_exports as t, maskBounds as u, NodeWebGPUProvider as v, createNeutralLandmarks as w, WebGPUProvider as x, createNodeWebGPUProvider as y, PREPROCESS_BY_FAMILY as z };\n//# sourceMappingURL=src-C2sA_wDT.mjs.map","import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { PoseSkeletonRenderer, TemporalObjectTracker, VisionRunner, maskBounds, matchPoseToTracks, mergeSubjectMask } from \"@framefields/vision\";\n\n//#region src/renderers/frame-cache.ts\nlet scratchValues = new Uint8Array(0);\nlet scratchLengths = new Uint32Array(0);\nfunction encodeMask(mask, width, height) {\n\tif (scratchValues.length < mask.length) {\n\t\tscratchValues = new Uint8Array(mask.length);\n\t\tscratchLengths = new Uint32Array(mask.length);\n\t}\n\tconst values = scratchValues;\n\tconst lengths = scratchLengths;\n\tlet runs = 0;\n\tlet start = 0;\n\tfor (let i = 1; i <= mask.length; i++) if (i === mask.length || mask[i] !== mask[start]) {\n\t\tvalues[runs] = mask[start];\n\t\tlengths[runs] = i - start;\n\t\truns++;\n\t\tstart = i;\n\t}\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tvalues: values.slice(0, runs),\n\t\tlengths: lengths.slice(0, runs)\n\t};\n}\nfunction decodeMask(rle) {\n\tconst out = new Uint8Array(rle.width * rle.height);\n\tlet at = 0;\n\tfor (let r = 0; r < rle.values.length; r++) {\n\t\tconst end = at + rle.lengths[r];\n\t\tif (rle.values[r] !== 0) out.fill(rle.values[r], at, end);\n\t\tat = end;\n\t}\n\treturn out;\n}\nfunction rleBytes(rle) {\n\treturn rle.values.byteLength + rle.lengths.byteLength;\n}\nfunction toCachedMask(mask) {\n\tconst { mask: data, ...rest } = mask;\n\treturn {\n\t\t...rest,\n\t\trle: encodeMask(data, mask.width, mask.height)\n\t};\n}\nfunction fromCachedMask(mask) {\n\tconst { rle, ...rest } = mask;\n\treturn {\n\t\t...rest,\n\t\tmask: decodeMask(rle)\n\t};\n}\nfunction resultBytes(result) {\n\tlet bytes = 512 + result.detections.length * 128 + result.objects.length * 256;\n\tfor (const m of result.masks ?? []) bytes += rleBytes(m.rle);\n\tif (result.subject) bytes += rleBytes(result.subject.mask.rle);\n\treturn bytes;\n}\n/** Results by source (node + inference settings) and frame, least recently used out first. */\nvar VisionFrameCache = class {\n\tentries = /* @__PURE__ */ new Map();\n\tbytes = 0;\n\tconstructor(maxBytes = 256 * 1024 * 1024) {\n\t\tthis.maxBytes = maxBytes;\n\t}\n\tget(source, frame) {\n\t\tconst key = `${source}#${frame}`;\n\t\tconst hit = this.entries.get(key);\n\t\tif (hit) {\n\t\t\tthis.entries.delete(key);\n\t\t\tthis.entries.set(key, hit);\n\t\t}\n\t\treturn hit;\n\t}\n\tset(source, frame, result) {\n\t\tconst key = `${source}#${frame}`;\n\t\tconst old = this.entries.get(key);\n\t\tif (old) {\n\t\t\tthis.bytes -= resultBytes(old);\n\t\t\tthis.entries.delete(key);\n\t\t}\n\t\tthis.entries.set(key, result);\n\t\tthis.bytes += resultBytes(result);\n\t\tfor (const [k, v] of this.entries) {\n\t\t\tif (this.bytes <= this.maxBytes) break;\n\t\t\tthis.entries.delete(k);\n\t\t\tthis.bytes -= resultBytes(v);\n\t\t}\n\t}\n\tclear() {\n\t\tthis.entries.clear();\n\t\tthis.bytes = 0;\n\t}\n\tget size() {\n\t\treturn this.entries.size;\n\t}\n};\n\n//#endregion\n//#region src/renderers/matte-compositor.ts\n/**\n* GPU composite for the mask-family modes: the picture times the subject mask,\n* in one full-screen pass. Replaces building the RGBA result on the CPU and\n* uploading it; only the 8-bit mask goes to the GPU.\n*\n* - matte: picture × mask (premultiplied, so the background is transparent)\n* - mask: white silhouette (rgb = mask, a = 1)\n* - crop: matte, with the subject's bounding box stretched to the frame\n*/\nconst WGSL = `\nstruct Params {\n\tmode: u32, // 0 matte, 1 mask, 2 crop\n\t_pad: u32,\n\tcropMin: vec2<f32>, // uv of the subject bounds (crop)\n\tcropMax: vec2<f32>,\n\t_pad2: vec2<f32>,\n};\n\n@group(0) @binding(0) var<uniform> params: Params;\n@group(0) @binding(1) var picture: texture_2d<f32>;\n@group(0) @binding(2) var mask: texture_2d<f32>;\n@group(0) @binding(3) var samp: sampler;\n\nstruct VSOut {\n\t@builtin(position) pos: vec4<f32>,\n\t@location(0) uv: vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) i: u32) -> VSOut {\n\tvar p = array<vec2<f32>, 3>(vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0));\n\tvar out: VSOut;\n\tout.pos = vec4(p[i], 0.0, 1.0);\n\tout.uv = vec2(p[i].x * 0.5 + 0.5, 0.5 - p[i].y * 0.5);\n\treturn out;\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n\tvar uv = in.uv;\n\tif (params.mode == 2u) {\n\t\tuv = mix(params.cropMin, params.cropMax, uv);\n\t}\n\tlet m = textureSampleLevel(mask, samp, uv, 0.0).r;\n\tif (params.mode == 1u) {\n\t\treturn vec4(m, m, m, 1.0);\n\t}\n\treturn textureSampleLevel(picture, samp, uv, 0.0) * m;\n}\n`;\nvar MatteCompositor = class {\n\tpipeline;\n\tsampler;\n\tuniforms = [];\n\tuniformIndex = 0;\n\t/** One 8-bit mask texture per node, rewritten each frame. */\n\tmasks = /* @__PURE__ */ new Map();\n\tconstructor(device, format) {\n\t\tthis.device = device;\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tcode: WGSL\n\t\t});\n\t\tthis.pipeline = device.createRenderPipeline({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tlayout: \"auto\",\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-list\" }\n\t\t});\n\t\tthis.sampler = device.createSampler({\n\t\t\tmagFilter: \"linear\",\n\t\t\tminFilter: \"linear\"\n\t\t});\n\t}\n\t/** Uploads a frame-sized 0..255 mask for `key` and returns its texture. */\n\tuploadMask(key, mask, width, height) {\n\t\tlet tex = this.masks.get(key);\n\t\tif (!tex || tex.width !== width || tex.height !== height) {\n\t\t\ttex?.destroy();\n\t\t\ttex = this.device.createTexture({\n\t\t\t\tlabel: `vision_mask_${key}`,\n\t\t\t\tsize: [width, height],\n\t\t\t\tformat: \"r8unorm\",\n\t\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST\n\t\t\t});\n\t\t\tthis.masks.set(key, tex);\n\t\t}\n\t\tconst aligned = Math.ceil(width / 256) * 256;\n\t\tlet bytes = mask;\n\t\tif (aligned !== width) {\n\t\t\tbytes = new Uint8Array(aligned * height);\n\t\t\tfor (let y = 0; y < height; y++) bytes.set(mask.subarray(y * width, (y + 1) * width), y * aligned);\n\t\t}\n\t\tthis.device.queue.writeTexture({ texture: tex }, bytes.buffer, {\n\t\t\toffset: bytes.byteOffset,\n\t\t\tbytesPerRow: aligned,\n\t\t\trowsPerImage: height\n\t\t}, {\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t\treturn tex;\n\t}\n\t/** Clears `target` and draws `picture` through `mask` into it. */\n\tdraw(encoder, target, picture, mask, mode, bounds) {\n\t\tconst w = mask.width;\n\t\tconst h = mask.height;\n\t\tconst data = new Float32Array(8);\n\t\tconst view = new Uint32Array(data.buffer);\n\t\tview[0] = mode === \"matte\" ? 0 : mode === \"mask\" ? 1 : 2;\n\t\tif (mode === \"crop\" && bounds) {\n\t\t\tdata[2] = bounds.x0 / w;\n\t\t\tdata[3] = bounds.y0 / h;\n\t\t\tdata[4] = (bounds.x1 + 1) / w;\n\t\t\tdata[5] = (bounds.y1 + 1) / h;\n\t\t} else {\n\t\t\tdata[2] = 0;\n\t\t\tdata[3] = 0;\n\t\t\tdata[4] = 1;\n\t\t\tdata[5] = 1;\n\t\t\tif (mode === \"crop\") view[0] = 0;\n\t\t}\n\t\tif (this.uniformIndex >= this.uniforms.length) this.uniforms.push(this.device.createBuffer({\n\t\t\tsize: data.byteLength,\n\t\t\tusage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n\t\t}));\n\t\tconst uniform = this.uniforms[this.uniformIndex];\n\t\tthis.uniformIndex = (this.uniformIndex + 1) % 16;\n\t\tthis.device.queue.writeBuffer(uniform, 0, data);\n\t\tconst bindGroup = this.device.createBindGroup({\n\t\t\tlayout: this.pipeline.getBindGroupLayout(0),\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: { buffer: uniform }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: picture.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: mask.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: this.sampler\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\t\tconst pass = encoder.beginRenderPass({\n\t\t\tlabel: \"vision_matte_composite\",\n\t\t\tcolorAttachments: [{\n\t\t\t\tview: target,\n\t\t\t\tloadOp: \"clear\",\n\t\t\t\tstoreOp: \"store\",\n\t\t\t\tclearValue: {\n\t\t\t\t\tr: 0,\n\t\t\t\t\tg: 0,\n\t\t\t\t\tb: 0,\n\t\t\t\t\ta: 0\n\t\t\t\t}\n\t\t\t}]\n\t\t});\n\t\tpass.setPipeline(this.pipeline);\n\t\tpass.setBindGroup(0, bindGroup);\n\t\tpass.draw(3);\n\t\tpass.end();\n\t}\n};\n\n//#endregion\n//#region src/renderers/webgpu-renderer.ts\nlet sharedRunner = null;\nlet sharedSkeletonRenderer = null;\nlet sharedCompositor = null;\nlet sharedCompositorFormat = null;\n/** Analysed frames, shared by every vision node in the process. */\nconst frameCache = new VisionFrameCache();\n/** The frame each node's child texture holds (drawn on its last call). */\nconst heldFrameByNode = /* @__PURE__ */ new Map();\n/** Per node: a copy of the held frame, and the composited matte. */\nconst heldTextures = /* @__PURE__ */ new Map();\nconst matteTextures = /* @__PURE__ */ new Map();\n/** One tracker per vision node — track ids must not mix across nodes/sources. */\nconst objectTrackers = /* @__PURE__ */ new Map();\n/**\n* Persistent per-node child textures. The shared frame encoder is submitted at\n* the END of the frame, so a node renderer cannot read back the child it just\n* drew. We keep the texture around and read back the PREVIOUS frame's pixels at\n* the start of the next call — a stable one-frame delay instead of the\n* unpredictable multi-frame lag you get from pooled textures.\n*\n* Keyed on the stable Vision `Effect` instance (render ids change every frame),\n* with a size-keyed fallback for raw operation nodes.\n*/\nconst childTexturesByEffect = /* @__PURE__ */ new WeakMap();\nconst childTexturesByKey = /* @__PURE__ */ new Map();\n/**\n* Last successful subject mask, reused for a few frames when the model misses —\n* a transient miss then holds the silhouette instead of flashing the raw plate.\n* Keyed per node/effect so multiple vision nodes do not collide.\n*/\nconst lastSubjectByNode = /* @__PURE__ */ new Map();\nconst SUBJECT_HOLD_FRAMES = 3;\n/** A per-node texture shaped like `like`, recreated when the size changes. */\nfunction nodeTexture(textures, device, key, like, usage, label) {\n\tlet tex = textures.get(key);\n\tif (!tex || tex.width !== like.width || tex.height !== like.height || tex.format !== like.format) {\n\t\ttex?.destroy();\n\t\ttex = device.createTexture({\n\t\t\tsize: [like.width, like.height],\n\t\t\tformat: like.format,\n\t\t\tusage,\n\t\t\tlabel\n\t\t});\n\t\ttextures.set(key, tex);\n\t}\n\treturn tex;\n}\nconst heldTexture = (device, key, like) => nodeTexture(heldTextures, device, key, like, GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING, \"vision_held_frame\");\nconst matteTexture = (device, key, like) => nodeTexture(matteTextures, device, key, like, GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC, \"vision_matte\");\n/** Everything that decides a frame's results besides the frame itself. */\nfunction cacheSource(nodeKey, child, op, width, height) {\n\tconst c = child;\n\treturn JSON.stringify([\n\t\tnodeKey,\n\t\tc?.operation?.id ?? c?.id ?? null,\n\t\twidth,\n\t\theight,\n\t\top.mode ?? \"passthrough\",\n\t\top.variant,\n\t\top.confidence,\n\t\top.classes,\n\t\top.maskThreshold,\n\t\top.featherRadius,\n\t\top.matteSource,\n\t\top.keyBackground === true,\n\t\top.maxMissedFrames\n\t]);\n}\n/** The background-key threshold at `frame` (it may be animated). */\nfunction backgroundKeyThreshold(op, frame, fps) {\n\tconst raw = op.backgroundKeyThreshold;\n\tif (typeof raw === \"number\") return raw;\n\tif (typeof raw?.get === \"function\") return Number(raw.get({\n\t\tframe,\n\t\tfps\n\t}));\n\tif (typeof raw?._value === \"number\") return Number(raw._value);\n\treturn 70;\n}\n/**\n* The model's subject, or the last one through brief misses: a transient miss\n* then holds the silhouette instead of flashing the raw plate.\n*/\nfunction selectSubject(selected, nodeKey, frame) {\n\tif (selected) {\n\t\tlastSubjectByNode.set(nodeKey, {\n\t\t\tmask: selected,\n\t\t\tframe\n\t\t});\n\t\treturn selected;\n\t}\n\tconst last = lastSubjectByNode.get(nodeKey);\n\tif (last && frame - last.frame <= SUBJECT_HOLD_FRAMES) return last.mask;\n}\n/**\n* Lazy shared runner — `create()` is a pure constructor (zero I/O); the first frame that\n* requests a task triggers that task's model download at inference time (never at init).\n* Recreated only when an option that changes inference changes.\n*/\nfunction getSharedRunner(op) {\n\tconst options = {\n\t\tvariant: op.variant,\n\t\tconfidence: op.confidence,\n\t\tclasses: op.classes,\n\t\tmaskThreshold: op.maskThreshold,\n\t\tfeatherRadius: op.featherRadius,\n\t\tmodelsDir: op.modelsDir,\n\t\tbaseUrl: op.baseUrl\n\t};\n\tconst key = JSON.stringify(options);\n\tif (sharedRunner?.key !== key) {\n\t\tsharedRunner?.runner.close();\n\t\tsharedRunner = {\n\t\t\tkey,\n\t\t\trunner: VisionRunner.create(options)\n\t\t};\n\t}\n\treturn sharedRunner.runner;\n}\nfunction getObjectTracker(nodeKey, op) {\n\tlet tracker = objectTrackers.get(nodeKey);\n\tif (!tracker) {\n\t\ttracker = new TemporalObjectTracker({ maxMissedFrames: op.maxMissedFrames ?? 15 });\n\t\tobjectTrackers.set(nodeKey, tracker);\n\t}\n\treturn tracker;\n}\n/**\n* Normalizes the runner's pose keypoints (plate pixel space) to [0, 1] landmarks, which is\n* the contract the signal bundle and the skeleton pipeline expect.\n*/\nfunction normalizePoseKeypoints(result, width, height) {\n\tif (width <= 0 || height <= 0) return result;\n\treturn { people: result.people.map((person) => ({\n\t\t...person,\n\t\tkeypoints: person.keypoints.map((k) => ({\n\t\t\tx: k.x / width,\n\t\t\ty: k.y / height,\n\t\t\tvisibility: k.visibility\n\t\t}))\n\t})) };\n}\n/** Assigns each decoded instance mask to the temporal track whose box center is nearest the mask's centroid. */\nfunction assignMasksToTracks(masks, tracked) {\n\treturn masks.map((mask) => {\n\t\tconst { cx, cy } = maskCentroid(mask);\n\t\tlet best = null;\n\t\tfor (const obj of tracked) {\n\t\t\tconst dx = obj.centerX - cx;\n\t\t\tconst dy = obj.centerY - cy;\n\t\t\tconst distance = dx * dx + dy * dy;\n\t\t\tif (!best || distance < best.distance) best = {\n\t\t\t\ttrackId: obj.trackId,\n\t\t\t\tdistance\n\t\t\t};\n\t\t}\n\t\treturn best ? {\n\t\t\t...mask,\n\t\t\ttrackId: best.trackId\n\t\t} : mask;\n\t});\n}\n/**\n* Grows a subject mask into connected foreground pixels — seeding a flood fill\n* from the subject through pixels that differ from the sampled backdrop recovers\n* thin or fast-moving edges (hair, fabric) without adding a near-uniform studio\n* wall or its soft grey shadow.\n*/\nfunction fillInternalHoles(mask, width, height) {\n\tconst n = width * height;\n\tconst exterior = new Uint8Array(n);\n\tconst queue = new Int32Array(n);\n\tlet tail = 0;\n\tconst seed = (i) => {\n\t\tif (exterior[i] || mask[i] > 0) return;\n\t\texterior[i] = 1;\n\t\tqueue[tail++] = i;\n\t};\n\tfor (let x = 0; x < width; x++) {\n\t\tseed(x);\n\t\tseed((height - 1) * width + x);\n\t}\n\tfor (let y = 0; y < height; y++) {\n\t\tseed(y * width);\n\t\tseed(y * width + width - 1);\n\t}\n\tlet head = 0;\n\twhile (head < tail) {\n\t\tconst i = queue[head++];\n\t\tconst x = i % width;\n\t\tlet j = i + 1;\n\t\tif (x + 1 < width && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - 1;\n\t\tif (x > 0 && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i + width;\n\t\tif (j < n && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - width;\n\t\tif (j >= 0 && !exterior[j] && mask[j] === 0) {\n\t\t\texterior[j] = 1;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t}\n\tfor (let i = 0; i < n; i++) if (mask[i] === 0 && exterior[i] === 0) mask[i] = 255;\n}\nfunction smoothMaskBoundary(mask, width, height, radius = 2) {\n\tif (radius <= 0) return mask;\n\tconst temp = new Uint8Array(width * height);\n\tconst out = new Uint8Array(width * height);\n\tconst div = 2 * radius + 1;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tlet sum = 0;\n\t\tfor (let k = -radius; k <= radius; k++) {\n\t\t\tconst x = Math.max(0, Math.min(width - 1, k));\n\t\t\tsum += mask[row + x];\n\t\t}\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\ttemp[row + x] = Math.round(sum / div);\n\t\t\tconst xOut = Math.max(0, x - radius);\n\t\t\tconst xIn = Math.min(width - 1, x + radius + 1);\n\t\t\tsum += mask[row + xIn] - mask[row + xOut];\n\t\t}\n\t}\n\tconst sums = new Float64Array(width);\n\tfor (let k = -radius; k <= radius; k++) {\n\t\tconst row = Math.max(0, Math.min(height - 1, k)) * width;\n\t\tfor (let x = 0; x < width; x++) sums[x] += temp[row + x];\n\t}\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tconst rowOut = Math.max(0, y - radius) * width;\n\t\tconst rowIn = Math.min(height - 1, y + radius + 1) * width;\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tout[row + x] = Math.round(sums[x] / div);\n\t\t\tsums[x] += temp[rowIn + x] - temp[rowOut + x];\n\t\t}\n\t}\n\treturn out;\n}\nfunction growMaskIntoForeground(mask, width, height, pixels, threshold, featherRadius) {\n\tlet br = 0;\n\tlet bg = 0;\n\tlet bb = 0;\n\tlet count = 0;\n\tconst sample = (x, y) => {\n\t\tconst i = y * width + x;\n\t\tif (mask[i]) return;\n\t\tconst p = i * 4;\n\t\tbr += pixels[p];\n\t\tbg += pixels[p + 1];\n\t\tbb += pixels[p + 2];\n\t\tcount++;\n\t};\n\tfor (let x = 0; x < width; x += 4) {\n\t\tsample(x, 0);\n\t\tsample(x, height - 1);\n\t}\n\tfor (let y = 0; y < height; y += 4) {\n\t\tsample(0, y);\n\t\tsample(width - 1, y);\n\t}\n\tif (count === 0) return mask;\n\tbr /= count;\n\tbg /= count;\n\tbb /= count;\n\tconst n = width * height;\n\tconst fg = new Uint8Array(n);\n\tfor (let i = 0, p = 0; i < n; i++, p += 4) fg[i] = Math.max(Math.abs(pixels[p] - br), Math.abs(pixels[p + 1] - bg), Math.abs(pixels[p + 2] - bb)) > threshold ? 1 : 0;\n\tconst queue = new Int32Array(n);\n\tlet tail = 0;\n\tfor (let i = 0; i < n; i++) if (mask[i] > 0) {\n\t\tif (fg[i]) mask[i] = 255;\n\t\tqueue[tail++] = i;\n\t}\n\tlet head = 0;\n\twhile (head < tail) {\n\t\tconst i = queue[head++];\n\t\tconst x = i % width;\n\t\tlet j = i + 1;\n\t\tif (x + 1 < width && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - 1;\n\t\tif (x > 0 && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i + width;\n\t\tif (j < n && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t\tj = i - width;\n\t\tif (j >= 0 && mask[j] !== 255 && fg[j]) {\n\t\t\tmask[j] = 255;\n\t\t\tqueue[tail++] = j;\n\t\t}\n\t}\n\tfillInternalHoles(mask, width, height);\n\treturn smoothMaskBoundary(mask, width, height, featherRadius !== void 0 && featherRadius > 0 ? Math.max(1, Math.min(8, Math.round(featherRadius * 50))) : 2);\n}\nfunction maskCentroid(mask) {\n\tconst { mask: data, width, height } = mask;\n\tlet sumX = 0;\n\tlet sumY = 0;\n\tlet count = 0;\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tfor (let x = 0; x < width; x++) if (data[row + x] > 0) {\n\t\t\tsumX += x;\n\t\t\tsumY += y;\n\t\t\tcount++;\n\t\t}\n\t}\n\tif (count === 0) return {\n\t\tcx: 0,\n\t\tcy: 0\n\t};\n\treturn {\n\t\tcx: sumX / count,\n\t\tcy: sumY / count\n\t};\n}\nconst VisionWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetView, targetWidth, targetHeight, props, drawChild } = args;\n\tconst { virtualMedia } = props;\n\tconst rawOp = virtualMedia?.operation;\n\tif (rawOp?.op !== \"Vision\") return;\n\tconst op = rawOp;\n\tpass.end();\n\tconst childMedia = virtualMedia?.children?.[0];\n\tif (!childMedia) return;\n\tconst effectKey = op.effect;\n\tconst hasEffectKey = effectKey !== void 0 && effectKey !== null;\n\tconst nodeKeyStr = virtualMedia?.id ?? rawOp?.id ?? `${targetWidth}x${targetHeight}_${op.mode}_${op.variant}_${op.keyBackground}_${op.backgroundKeyThreshold}`;\n\tconst fallbackKey = `vision-${nodeKeyStr}`;\n\tlet childTex = hasEffectKey ? childTexturesByEffect.get(effectKey) : childTexturesByKey.get(fallbackKey);\n\tif (childTex && (childTex.width !== targetWidth || childTex.height !== targetHeight)) {\n\t\tchildTex.destroy();\n\t\tchildTex = void 0;\n\t\tif (hasEffectKey) childTexturesByEffect.delete(effectKey);\n\t\telse childTexturesByKey.delete(fallbackKey);\n\t}\n\tconst hasPreviousFrame = childTex !== void 0;\n\tif (!childTex) {\n\t\tchildTex = ctx.device.createTexture({\n\t\t\tsize: [targetWidth, targetHeight],\n\t\t\tformat: ctx.renderer.format,\n\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC,\n\t\t\tlabel: \"vision_child_persistent\"\n\t\t});\n\t\tif (hasEffectKey) childTexturesByEffect.set(effectKey, childTex);\n\t\telse childTexturesByKey.set(fallbackKey, childTex);\n\t\tif (childTexturesByKey.size > 4) {\n\t\t\tconst oldest = childTexturesByKey.keys().next().value;\n\t\t\tif (oldest && oldest !== fallbackKey) {\n\t\t\t\tchildTexturesByKey.get(oldest)?.destroy();\n\t\t\t\tchildTexturesByKey.delete(oldest);\n\t\t\t}\n\t\t}\n\t}\n\tconst frameIdx = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frameIdx;\n\tconst fps = props.fps ?? 24;\n\tconst mode = op.mode ?? \"passthrough\";\n\tconst isMatteMode = mode === \"mask\" || mode === \"matte\" || mode === \"crop\";\n\tconst visionBundle = op.visionBundle ?? virtualMedia.visionBundle;\n\tconst wantsDetection = op.enableDetection !== false || mode === \"boxes\" || mode === \"tracking\";\n\tconst wantsSegmentation = op.enableSegmentation === true || isMatteMode && op.matteSource !== \"selfie\";\n\tconst wantsSelfie = op.enableMatte === true || isMatteMode && op.matteSource === \"selfie\";\n\tconst wantsPose = op.enablePose === true || mode === \"skeleton\";\n\tconst cacheable = !wantsSelfie && !wantsPose && (wantsDetection || wantsSegmentation);\n\tconst source = cacheable ? cacheSource(nodeKeyStr, childMedia, op, targetWidth, targetHeight) : \"\";\n\tconst keyThresholdAt = (frame) => op.keyBackground === true ? backgroundKeyThreshold(op, compositionFrame - (frameIdx - frame), fps) : void 0;\n\tconst lookup = (frame) => {\n\t\tif (!cacheable || frame === void 0) return void 0;\n\t\tconst hit = frameCache.get(source, frame);\n\t\tif (!hit || hit.keyThreshold !== keyThresholdAt(frame)) return void 0;\n\t\tif (wantsSegmentation && visionBundle && !hit.masks) return void 0;\n\t\treturn hit;\n\t};\n\tconst heldFrame = hasPreviousFrame ? heldFrameByNode.get(nodeKeyStr) : void 0;\n\tlet cached = lookup(frameIdx);\n\tconst exact = cached !== void 0;\n\tif (!cached) cached = lookup(heldFrame);\n\tlet heldTex;\n\tif (isMatteMode && hasPreviousFrame && !exact) {\n\t\theldTex = heldTexture(ctx.device, nodeKeyStr, childTex);\n\t\tencoder.copyTextureToTexture({ texture: childTex }, { texture: heldTex }, [\n\t\t\ttargetWidth,\n\t\t\ttargetHeight,\n\t\t\t1\n\t\t]);\n\t}\n\tlet framePixels = null;\n\tif (hasPreviousFrame && !cached) {\n\t\tconst unalignedBytesPerRow = targetWidth * 4;\n\t\tconst bytesPerRow = Math.ceil(unalignedBytesPerRow / 256) * 256;\n\t\tconst bufferSize = bytesPerRow * targetHeight;\n\t\tconst stagingBuffer = ctx.device.createBuffer({\n\t\t\tsize: bufferSize,\n\t\t\tusage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n\t\t\tlabel: \"vision_frame_staging\"\n\t\t});\n\t\tconst readbackEncoder = ctx.device.createCommandEncoder({ label: \"vision_readback_encoder\" });\n\t\treadbackEncoder.copyTextureToBuffer({ texture: childTex }, {\n\t\t\tbuffer: stagingBuffer,\n\t\t\tbytesPerRow,\n\t\t\trowsPerImage: targetHeight\n\t\t}, [\n\t\t\ttargetWidth,\n\t\t\ttargetHeight,\n\t\t\t1\n\t\t]);\n\t\tctx.device.queue.submit([readbackEncoder.finish()]);\n\t\tawait stagingBuffer.mapAsync(GPUMapMode.READ);\n\t\tconst mappedBytes = new Uint8Array(stagingBuffer.getMappedRange());\n\t\tframePixels = new Uint8ClampedArray(targetWidth * targetHeight * 4);\n\t\tif (bytesPerRow === unalignedBytesPerRow) framePixels.set(mappedBytes.subarray(0, framePixels.length));\n\t\telse for (let y = 0; y < targetHeight; y++) framePixels.set(mappedBytes.subarray(y * bytesPerRow, y * bytesPerRow + unalignedBytesPerRow), y * unalignedBytesPerRow);\n\t\tstagingBuffer.unmap();\n\t\tstagingBuffer.destroy();\n\t}\n\tconst childView = childTex.createView();\n\tctx.renderer.beginFrame(encoder, childView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"clear\").end();\n\tawait drawChild(childMedia, { ...props }, childView, childTex, targetWidth, targetHeight);\n\theldFrameByNode.set(nodeKeyStr, frameIdx);\n\tlet frameObjects = [];\n\tlet frameMasks = [];\n\tlet personMatte;\n\tlet currentPoseRes;\n\tlet subject;\n\tif (cached) {\n\t\tframeObjects = cached.objects;\n\t\tif (wantsDetection) visionBundle?.setObjectResult(frameIdx, {\n\t\t\tobjects: cached.objects,\n\t\t\trawDetections: cached.detections\n\t\t});\n\t\tif (wantsSegmentation && visionBundle && cached.masks) {\n\t\t\tframeMasks = cached.masks.map(fromCachedMask);\n\t\t\tvisionBundle.setMaskResult(frameIdx, frameMasks);\n\t\t}\n\t\tif (cached.subject) {\n\t\t\tsubject = fromCachedMask(cached.subject.mask);\n\t\t\tlastSubjectByNode.set(nodeKeyStr, {\n\t\t\t\tmask: subject,\n\t\t\t\tframe: frameIdx\n\t\t\t});\n\t\t}\n\t} else if (framePixels) {\n\t\tconst runner = getSharedRunner(op);\n\t\tconst image = {\n\t\t\tdata: framePixels,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t};\n\t\tlet detections = [];\n\t\tif (wantsDetection) {\n\t\t\tdetections = await runner.detect(image);\n\t\t\tconst tracker = getObjectTracker(nodeKeyStr, op);\n\t\t\tif (frameIdx === 0) tracker.reset();\n\t\t\tframeObjects = tracker.update(detections, frameIdx, fps);\n\t\t\tvisionBundle?.setObjectResult(frameIdx, {\n\t\t\t\tobjects: frameObjects,\n\t\t\t\trawDetections: detections\n\t\t\t});\n\t\t}\n\t\tif (wantsSegmentation) {\n\t\t\tframeMasks = assignMasksToTracks((await runner.segment(image)).masks, frameObjects);\n\t\t\tvisionBundle?.setMaskResult(frameIdx, frameMasks);\n\t\t}\n\t\tif (wantsSelfie) {\n\t\t\tpersonMatte = await runner.matte(image);\n\t\t\tvisionBundle?.setMatteResult(frameIdx, personMatte);\n\t\t}\n\t\tif (wantsPose) {\n\t\t\tcurrentPoseRes = { people: matchPoseToTracks(normalizePoseKeypoints(await runner.pose(image), image.width, image.height).people, frameObjects) };\n\t\t\tvisionBundle?.setPoseResult(frameIdx, currentPoseRes);\n\t\t}\n\t\tif (isMatteMode) {\n\t\t\tsubject = selectSubject(op.matteSource === \"selfie\" ? personMatteAsMask(personMatte) : mergeSubjectMask(frameMasks.length > 0 ? frameMasks : visionBundle?.getMaskResult(frameIdx) ?? []), nodeKeyStr, frameIdx);\n\t\t\tconst threshold = keyThresholdAt(heldFrame ?? frameIdx);\n\t\t\tif (subject && threshold !== void 0) subject = {\n\t\t\t\t...subject,\n\t\t\t\tmask: growMaskIntoForeground(subject.mask, subject.width, subject.height, framePixels, threshold, op.featherRadius)\n\t\t\t};\n\t\t}\n\t\tif (cacheable && heldFrame !== void 0) frameCache.set(source, heldFrame, {\n\t\t\tdetections,\n\t\t\tobjects: frameObjects,\n\t\t\tmasks: visionBundle ? frameMasks.map(toCachedMask) : null,\n\t\t\tsubject: subject ? { mask: toCachedMask(subject) } : null,\n\t\t\tkeyThreshold: keyThresholdAt(heldFrame)\n\t\t});\n\t}\n\tif (isMatteMode) {\n\t\tconst picture = exact ? childTex : heldTex;\n\t\tif (!subject || !picture) {\n\t\t\tctx.renderer.beginFrame(encoder, targetView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, targetWidth, targetHeight, \"clear\").end();\n\t\t\treturn;\n\t\t}\n\t\tif (!sharedCompositor || sharedCompositorFormat !== ctx.renderer.format) {\n\t\t\tsharedCompositor = new MatteCompositor(ctx.device, ctx.renderer.format);\n\t\t\tsharedCompositorFormat = ctx.renderer.format;\n\t\t}\n\t\tconst maskTex = sharedCompositor.uploadMask(nodeKeyStr, subject.mask, subject.width, subject.height);\n\t\tconst matteTex = matteTexture(ctx.device, nodeKeyStr, childTex);\n\t\tsharedCompositor.draw(encoder, matteTex.createView(), picture, maskTex, mode, mode === \"crop\" ? maskBounds(subject) ?? void 0 : void 0);\n\t\tvisionBundle?.setStencilTexture(matteTex);\n\t\tconst outPass$1 = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\");\n\t\tctx.renderer.drawTexture(outPass$1, matteTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t});\n\t\toutPass$1.end();\n\t\treturn;\n\t}\n\tif (mode === \"skeleton\") {\n\t\tif (!sharedSkeletonRenderer) sharedSkeletonRenderer = new PoseSkeletonRenderer(ctx.device);\n\t\tconst person = (visionBundle?.getPoseResult(frameIdx) ?? currentPoseRes)?.people[0];\n\t\tif (person && person.keypoints.length > 0) {\n\t\t\tconst skelTex = sharedSkeletonRenderer.renderToTexture(person.keypoints, {\n\t\t\t\twidth: targetWidth,\n\t\t\t\theight: targetHeight\n\t\t\t});\n\t\t\tconst skelPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\t\tr: 0,\n\t\t\t\tg: 0,\n\t\t\t\tb: 0,\n\t\t\t\ta: 0\n\t\t\t}, targetWidth, targetHeight, \"clear\");\n\t\t\tctx.renderer.drawTexture(skelPass, skelTex, {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: targetWidth,\n\t\t\t\theight: targetHeight\n\t\t\t});\n\t\t\tskelPass.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif (mode === \"boxes\" || mode === \"tracking\") {\n\t\tconst outPass$1 = ctx.renderer.beginFrame(encoder, targetView, {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}, targetWidth, targetHeight, \"clear\");\n\t\tctx.renderer.drawTexture(outPass$1, childTex, {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight\n\t\t});\n\t\tconst objects = frameObjects.length > 0 ? frameObjects : visionBundle?.getObjectResult(frameIdx).objects ?? [];\n\t\tif (objects.length > 0) {\n\t\t\tconst boxColor = \"#38bdf8\";\n\t\t\tconst stroke = 2;\n\t\t\tfor (const obj of objects) {\n\t\t\t\tif (!obj.active) continue;\n\t\t\t\tconst b = obj.boundingBox;\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: b.width,\n\t\t\t\t\theight: stroke\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY + b.height - stroke,\n\t\t\t\t\twidth: b.width,\n\t\t\t\t\theight: stroke\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke,\n\t\t\t\t\theight: b.height\n\t\t\t\t}, boxColor);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX + b.width - stroke,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke,\n\t\t\t\t\theight: b.height\n\t\t\t\t}, boxColor);\n\t\t\t\tconst cornerLen = Math.min(16, b.width / 4, b.height / 4);\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: cornerLen,\n\t\t\t\t\theight: stroke * 2\n\t\t\t\t}, \"#ffffff\");\n\t\t\t\tctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: b.originX,\n\t\t\t\t\ty: b.originY,\n\t\t\t\t\twidth: stroke * 2,\n\t\t\t\t\theight: cornerLen\n\t\t\t\t}, \"#ffffff\");\n\t\t\t\tif (mode === \"tracking\") ctx.renderer.drawRect(outPass$1, {\n\t\t\t\t\tx: obj.centerX - 3,\n\t\t\t\t\ty: obj.centerY - 3,\n\t\t\t\t\twidth: 6,\n\t\t\t\t\theight: 6\n\t\t\t\t}, \"#ef4444\", 3);\n\t\t\t}\n\t\t}\n\t\toutPass$1.end();\n\t\treturn;\n\t}\n\tconst outPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"clear\");\n\tctx.renderer.drawTexture(outPass, childTex, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: targetWidth,\n\t\theight: targetHeight\n\t});\n\toutPass.end();\n};\n/** Adapts a Selfie Segmenter matte to the instance-mask shape the composite path takes. */\nfunction personMatteAsMask(matte) {\n\tif (!matte || matte.coverage <= 0) return void 0;\n\tconst area = Math.round(matte.coverage * matte.width * matte.height);\n\treturn {\n\t\tcategory: \"person\",\n\t\tmask: matte.mask,\n\t\twidth: matte.width,\n\t\theight: matte.height,\n\t\tarea,\n\t\tcoverage: matte.coverage,\n\t\tdetectionIndex: -1\n\t};\n}\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: VisionWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-ClCaeCNB.mjs.map"],"mappings":"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AO;EACN;EACA,OAAO;EACP,QAAQ;EACR,UAAU,KAAK,KAAK,IAAI,OAAO,MAAM,KAAK,MAAM;EAChD;;;AAMF,MAAM,mBAAmB;CACxB,MAAM;CACN,UAAU;CACV,WAAW;CACX,UAAU;CACV,WAAW;CACX,eAAe;CACf,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,YAAY;CACZ,aAAa;CACb,UAAU;CACV,WAAW;CACX,WAAW;CACX,YAAY;CACZ,YAAY;CACZ,aAAa;CACb;AACD,MAAM,wBAAwB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED,MAAM,eAAe;CACpB;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GACA;GACA;EACD;CACD;EACC,MAAM,iBAAiB;EACvB,IAAI,iBAAiB;EACrB,OAAO;GACN;GACA;GACA;GAC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"}