framefields 2.13.1 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/NOTICE.md +5 -1
  2. package/dist/audio/index.d.mts +5 -5
  3. package/dist/audio/index.mjs +10 -10
  4. package/dist/{audio-DIvi6hTD.mjs → audio-6TfPlfl4.mjs} +3 -3
  5. package/dist/{audio-DIvi6hTD.mjs.map → audio-6TfPlfl4.mjs.map} +1 -1
  6. package/dist/{audio-C4B9p_yq.d.mts → audio-7oqTUi4G.d.mts} +3 -3
  7. package/dist/{audio-C4B9p_yq.d.mts.map → audio-7oqTUi4G.d.mts.map} +1 -1
  8. package/dist/cli/check-worker.mjs +44 -44
  9. package/dist/cli.mjs +1 -1
  10. package/dist/cloud/index.d.mts.map +1 -1
  11. package/dist/cloud/index.mjs +1 -1
  12. package/dist/{cloud-Cj1TIme8.mjs → cloud-jnk1hPYf.mjs} +2 -2
  13. package/dist/{cloud-Cj1TIme8.mjs.map → cloud-jnk1hPYf.mjs.map} +1 -1
  14. package/dist/components/index.d.mts +13 -13
  15. package/dist/components/index.mjs +43 -43
  16. package/dist/{dist-Kbf-JTry.mjs → dist-BtI6ukB5.mjs} +2 -2
  17. package/dist/{dist-Kbf-JTry.mjs.map → dist-BtI6ukB5.mjs.map} +1 -1
  18. package/dist/{dist-CCrYOkcc.mjs → dist-COOpgG9G.mjs} +4 -3
  19. package/dist/{dist-CCrYOkcc.mjs.map → dist-COOpgG9G.mjs.map} +1 -1
  20. package/dist/{dist-DtPPPsZV.mjs → dist-XqlFM2a8.mjs} +14063 -5308
  21. package/dist/dist-XqlFM2a8.mjs.map +1 -0
  22. package/dist/{dist-CiTgmfUw.mjs → dist-f1zkl69f.mjs} +4 -4
  23. package/dist/dist-f1zkl69f.mjs.map +1 -0
  24. package/dist/{dist-B_rSWeOz.mjs → dist-umQOWz0a.mjs} +1 -1
  25. package/dist/effects/index.d.mts +5 -5
  26. package/dist/effects/index.mjs +35 -35
  27. package/dist/{effects-B-L3rLs6.mjs → effects-DlRMovU5.mjs} +2 -2
  28. package/dist/{effects-B-L3rLs6.mjs.map → effects-DlRMovU5.mjs.map} +1 -1
  29. package/dist/fonts/index.d.mts +1 -1
  30. package/dist/fonts/index.mjs +2 -2
  31. package/dist/{fonts-k5ll8NTE.mjs → fonts-BWYcXjyK.mjs} +3 -3
  32. package/dist/fonts-BWYcXjyK.mjs.map +1 -0
  33. package/dist/{gpu-D2HT3KcE.mjs → gpu-CH1PdM4T.mjs} +2 -2
  34. package/dist/{gpu-D2HT3KcE.mjs.map → gpu-CH1PdM4T.mjs.map} +1 -1
  35. package/dist/{index-rtCXNxGO.d.mts → index-BHTycml5.d.mts} +2 -2
  36. package/dist/{index-rtCXNxGO.d.mts.map → index-BHTycml5.d.mts.map} +1 -1
  37. package/dist/{index-BFTtXosj.d.mts → index-BVd6nXd5.d.mts} +2 -2
  38. package/dist/{index-BFTtXosj.d.mts.map → index-BVd6nXd5.d.mts.map} +1 -1
  39. package/dist/{index-ByhlTwxh.d.mts → index-BcxxxwhV.d.mts} +5 -5
  40. package/dist/{index-ByhlTwxh.d.mts.map → index-BcxxxwhV.d.mts.map} +1 -1
  41. package/dist/{index-CnZhBlob.d.mts → index-BnB_Ou2y.d.mts} +2 -2
  42. package/dist/index-BnB_Ou2y.d.mts.map +1 -0
  43. package/dist/{index-a6JrbAK0.d.mts → index-C-V6CAhP.d.mts} +32 -2
  44. package/dist/index-C-V6CAhP.d.mts.map +1 -0
  45. package/dist/{index-DBh3WphX.d.mts → index-CMhkkc56.d.mts} +44 -12
  46. package/dist/index-CMhkkc56.d.mts.map +1 -0
  47. package/dist/{index-BGlaws7-.d.mts → index-CYVpYGM-.d.mts} +3 -3
  48. package/dist/{index-BGlaws7-.d.mts.map → index-CYVpYGM-.d.mts.map} +1 -1
  49. package/dist/{index-DQ1U3HC3.d.mts → index-DhL7ckvs.d.mts} +7 -7
  50. package/dist/index-DhL7ckvs.d.mts.map +1 -0
  51. package/dist/{index-CtKUQ2VG.d.mts → index-DkAjKnhW.d.mts} +1487 -533
  52. package/dist/index-DkAjKnhW.d.mts.map +1 -0
  53. package/dist/{index-B08eSpaI.d.mts → index-RILu3ULT.d.mts} +2 -2
  54. package/dist/{index-B08eSpaI.d.mts.map → index-RILu3ULT.d.mts.map} +1 -1
  55. package/dist/{index-C5sgRLlG.d.mts → index-TCtdSXd7.d.mts} +3 -1
  56. package/dist/index-TCtdSXd7.d.mts.map +1 -0
  57. package/dist/{index-C2yaponf.d.mts → index-s2qQ8ifZ.d.mts} +911 -57
  58. package/dist/index-s2qQ8ifZ.d.mts.map +1 -0
  59. package/dist/index.d.mts +15 -15
  60. package/dist/index.mjs +52 -52
  61. package/dist/preview/index.d.mts +5 -5
  62. package/dist/preview/index.mjs +10 -10
  63. package/dist/preview-BeGF1Bb1.mjs +1002 -0
  64. package/dist/preview-BeGF1Bb1.mjs.map +1 -0
  65. package/dist/preview-engine/audio.mjs +1 -1
  66. package/dist/preview-engine/{chunk-64L4GUOF.mjs → chunk-4F3DG6YB.mjs} +2 -2
  67. package/dist/preview-engine/chunk-A2OTOW3B.mjs +4694 -0
  68. package/dist/preview-engine/chunk-BR56TQBP.mjs +5 -0
  69. package/dist/preview-engine/{chunk-ADLIF544.mjs → chunk-H2XKXXAU.mjs} +1 -1
  70. package/dist/preview-engine/chunk-NDUODAY2.mjs +3 -0
  71. package/dist/preview-engine/{chunk-FZ4RD7HV.mjs → chunk-QAQJSWUT.mjs} +1 -1
  72. package/dist/preview-engine/chunk-SWRGQTVC.mjs +138 -0
  73. package/dist/preview-engine/{chunk-52X7SURQ.mjs → chunk-TEA3GVBJ.mjs} +1 -1
  74. package/dist/preview-engine/chunk-VM2ZBPLM.mjs +644 -0
  75. package/dist/preview-engine/{chunk-UBY2UYEL.mjs → chunk-XSHNQJ7L.mjs} +1 -1
  76. package/dist/preview-engine/components.mjs +1 -1
  77. package/dist/preview-engine/effects.mjs +1 -1
  78. package/dist/preview-engine/fonts.mjs +1 -1
  79. package/dist/preview-engine/framefields.mjs +1 -1
  80. package/dist/preview-engine/player.mjs +2 -2
  81. package/dist/preview-engine/{renderers-DU7KPFVV.mjs → renderers-6C7NWWDX.mjs} +1 -1
  82. package/dist/preview-engine/renderers-HHVGNMSJ.mjs +206 -0
  83. package/dist/preview-engine/{src-YXNX4MLK.mjs → src-RCNEKIRP.mjs} +1 -1
  84. package/dist/preview-page/index.html +19 -0
  85. package/dist/preview-page/main.css +1 -0
  86. package/dist/preview-page/main.js +327 -0
  87. package/dist/{program-BfiB9ttP.mjs → program-CMigyfso.mjs} +919 -58
  88. package/dist/program-CMigyfso.mjs.map +1 -0
  89. package/dist/renderer/index.d.mts +4 -4
  90. package/dist/renderer/index.mjs +2 -2
  91. package/dist/{renderer-CoC64eam.mjs → renderer-0GMEL_Zi.mjs} +3 -3
  92. package/dist/{renderer-CoC64eam.mjs.map → renderer-0GMEL_Zi.mjs.map} +1 -1
  93. package/dist/{renderer-CSu_vYPn.mjs → renderer-3Wv2ZBJG.mjs} +3 -3
  94. package/dist/{renderer-CSu_vYPn.mjs.map → renderer-3Wv2ZBJG.mjs.map} +1 -1
  95. package/dist/{renderer-Dv_iRIyx.mjs → renderer-4nXkaAWu.mjs} +1280 -285
  96. package/dist/renderer-4nXkaAWu.mjs.map +1 -0
  97. package/dist/{renderer-TfeohPxt.mjs → renderer-6SnfLXeg.mjs} +3 -3
  98. package/dist/{renderer-TfeohPxt.mjs.map → renderer-6SnfLXeg.mjs.map} +1 -1
  99. package/dist/{renderer-D0xM67cK.mjs → renderer-8gHw3O0P.mjs} +2 -2
  100. package/dist/{renderer-D0xM67cK.mjs.map → renderer-8gHw3O0P.mjs.map} +1 -1
  101. package/dist/{renderer-C64_B8It.mjs → renderer-AOBglZHC.mjs} +2 -2
  102. package/dist/{renderer-B10HDC13.mjs → renderer-B0bSARK3.mjs} +3 -3
  103. package/dist/{renderer-B10HDC13.mjs.map → renderer-B0bSARK3.mjs.map} +1 -1
  104. package/dist/{renderer-DWYmJSrl.mjs → renderer-B2_tuRfl.mjs} +2 -2
  105. package/dist/{renderer-DWYmJSrl.mjs.map → renderer-B2_tuRfl.mjs.map} +1 -1
  106. package/dist/{renderer-mDBoz0zT.mjs → renderer-B82FhkEr.mjs} +3 -3
  107. package/dist/{renderer-mDBoz0zT.mjs.map → renderer-B82FhkEr.mjs.map} +1 -1
  108. package/dist/{renderer-DYeNNc_G.mjs → renderer-B9lzA0PY.mjs} +3 -3
  109. package/dist/{renderer-DYeNNc_G.mjs.map → renderer-B9lzA0PY.mjs.map} +1 -1
  110. package/dist/{renderer-BGchUBW_.mjs → renderer-BBSIWSry.mjs} +2 -2
  111. package/dist/{renderer-BGchUBW_.mjs.map → renderer-BBSIWSry.mjs.map} +1 -1
  112. package/dist/{renderer-GIlQ9lZq.mjs → renderer-BEKDMxbi.mjs} +2 -2
  113. package/dist/{renderer-GIlQ9lZq.mjs.map → renderer-BEKDMxbi.mjs.map} +1 -1
  114. package/dist/renderer-BERGAxqA.mjs +5 -0
  115. package/dist/{renderer-Bw0O--gW.mjs → renderer-BF960HY8.mjs} +3 -3
  116. package/dist/{renderer-Bw0O--gW.mjs.map → renderer-BF960HY8.mjs.map} +1 -1
  117. package/dist/{renderer-BhcTYhaP.mjs → renderer-BFwyVxCu.mjs} +3 -3
  118. package/dist/{renderer-BhcTYhaP.mjs.map → renderer-BFwyVxCu.mjs.map} +1 -1
  119. package/dist/{renderer-DYlx7VHo.mjs → renderer-BNiwcI3-.mjs} +2 -2
  120. package/dist/{renderer-DYlx7VHo.mjs.map → renderer-BNiwcI3-.mjs.map} +1 -1
  121. package/dist/{renderer-B3_GddgJ.mjs → renderer-BPbVb2Q4.mjs} +2 -2
  122. package/dist/{renderer-B3_GddgJ.mjs.map → renderer-BPbVb2Q4.mjs.map} +1 -1
  123. package/dist/renderer-BQ_YkBMt.mjs +6 -0
  124. package/dist/{renderer-Y1kjtOto.mjs → renderer-BUWxlA8T.mjs} +3 -3
  125. package/dist/{renderer-Y1kjtOto.mjs.map → renderer-BUWxlA8T.mjs.map} +1 -1
  126. package/dist/renderer-BW0Tjsv9.mjs +5 -0
  127. package/dist/{renderer-DtFZbE1j.mjs → renderer-BX8liu-e.mjs} +2 -2
  128. package/dist/{renderer-BOlHW3Mi.mjs → renderer-BXIwDAr_.mjs} +2 -2
  129. package/dist/{renderer-BOlHW3Mi.mjs.map → renderer-BXIwDAr_.mjs.map} +1 -1
  130. package/dist/{renderer-DzON3wDZ.mjs → renderer-B_Hy1W-g.mjs} +3 -3
  131. package/dist/{renderer-DzON3wDZ.mjs.map → renderer-B_Hy1W-g.mjs.map} +1 -1
  132. package/dist/{renderer-BM19iK8v.mjs → renderer-Bb6cvSgh.mjs} +2 -2
  133. package/dist/{renderer-BM19iK8v.mjs.map → renderer-Bb6cvSgh.mjs.map} +1 -1
  134. package/dist/{renderer-D0h1hTOo.mjs → renderer-BdppwWC9.mjs} +2 -2
  135. package/dist/{renderer-D0h1hTOo.mjs.map → renderer-BdppwWC9.mjs.map} +1 -1
  136. package/dist/{renderer-BTwuM9u-.mjs → renderer-Bhc24HVe.mjs} +3 -3
  137. package/dist/{renderer-BTwuM9u-.mjs.map → renderer-Bhc24HVe.mjs.map} +1 -1
  138. package/dist/{renderer-BZX932Lj.mjs → renderer-BiNA2wF0.mjs} +2 -2
  139. package/dist/{renderer-BZX932Lj.mjs.map → renderer-BiNA2wF0.mjs.map} +1 -1
  140. package/dist/{renderer-CkTehyRX.mjs → renderer-BmoBgTp5.mjs} +3 -3
  141. package/dist/{renderer-CkTehyRX.mjs.map → renderer-BmoBgTp5.mjs.map} +1 -1
  142. package/dist/{renderer-B3un4Pdi.mjs → renderer-BmqFmCWS.mjs} +3 -3
  143. package/dist/{renderer-B3un4Pdi.mjs.map → renderer-BmqFmCWS.mjs.map} +1 -1
  144. package/dist/{renderer-CHCRcCKw.mjs → renderer-BnVwAObV.mjs} +2 -2
  145. package/dist/{renderer-CHCRcCKw.mjs.map → renderer-BnVwAObV.mjs.map} +1 -1
  146. package/dist/{renderer-Cv9CKKWG.mjs → renderer-BxttZHme.mjs} +2 -2
  147. package/dist/{renderer-Cv9CKKWG.mjs.map → renderer-BxttZHme.mjs.map} +1 -1
  148. package/dist/renderer-BzyPdUD1.mjs +5 -0
  149. package/dist/renderer-C0hM-mtY.mjs +5 -0
  150. package/dist/renderer-C6cyUTvk.mjs +5 -0
  151. package/dist/{renderer-B6bK9rXm.mjs → renderer-C8E4XsSg.mjs} +2 -2
  152. package/dist/{renderer-B6bK9rXm.mjs.map → renderer-C8E4XsSg.mjs.map} +1 -1
  153. package/dist/renderer-C8zY3pzk.mjs +5 -0
  154. package/dist/{renderer-4nsuReW2.mjs → renderer-C9U-LY50.mjs} +3 -3
  155. package/dist/{renderer-4nsuReW2.mjs.map → renderer-C9U-LY50.mjs.map} +1 -1
  156. package/dist/{renderer-BvBqTAtk.mjs → renderer-CB2JVu5x.mjs} +3 -3
  157. package/dist/{renderer-BvBqTAtk.mjs.map → renderer-CB2JVu5x.mjs.map} +1 -1
  158. package/dist/{renderer-CQ4h8n7p.mjs → renderer-CC4YBJ8Z.mjs} +3 -3
  159. package/dist/{renderer-CQ4h8n7p.mjs.map → renderer-CC4YBJ8Z.mjs.map} +1 -1
  160. package/dist/renderer-CEkSOyKu.mjs +5 -0
  161. package/dist/{renderer-zLi2qFGT.mjs → renderer-CIycc5O-.mjs} +2 -2
  162. package/dist/{renderer-zLi2qFGT.mjs.map → renderer-CIycc5O-.mjs.map} +1 -1
  163. package/dist/renderer-CJYtfa4x.mjs +5 -0
  164. package/dist/{renderer-yNWYqvvq.mjs → renderer-CJraQlV-.mjs} +2 -2
  165. package/dist/{renderer-yNWYqvvq.mjs.map → renderer-CJraQlV-.mjs.map} +1 -1
  166. package/dist/renderer-CKMtHGZh.mjs +5 -0
  167. package/dist/renderer-CLzicoiy.mjs +5 -0
  168. package/dist/renderer-CM2A4BHd.mjs +5 -0
  169. package/dist/{renderer-BrEeUw7T.mjs → renderer-COWGWtob.mjs} +2 -2
  170. package/dist/{renderer-BrEeUw7T.mjs.map → renderer-COWGWtob.mjs.map} +1 -1
  171. package/dist/{renderer-uER8kn7f.mjs → renderer-COxG2XGf.mjs} +2 -2
  172. package/dist/{renderer-uER8kn7f.mjs.map → renderer-COxG2XGf.mjs.map} +1 -1
  173. package/dist/{renderer-C4hd6Cqi.mjs → renderer-CQDCIsQm.mjs} +2 -2
  174. package/dist/{renderer-C4hd6Cqi.mjs.map → renderer-CQDCIsQm.mjs.map} +1 -1
  175. package/dist/{renderer-Cfx_FCSf.mjs → renderer-CRUeag8i.mjs} +3 -3
  176. package/dist/{renderer-Cfx_FCSf.mjs.map → renderer-CRUeag8i.mjs.map} +1 -1
  177. package/dist/{renderer-CXrnzihz.mjs → renderer-CWVput06.mjs} +3 -3
  178. package/dist/{renderer-CXrnzihz.mjs.map → renderer-CWVput06.mjs.map} +1 -1
  179. package/dist/renderer-CZlHjcxr.mjs +5 -0
  180. package/dist/{renderer-BmyFfvVA.mjs → renderer-CbbnBLOB.mjs} +3 -3
  181. package/dist/{renderer-BmyFfvVA.mjs.map → renderer-CbbnBLOB.mjs.map} +1 -1
  182. package/dist/renderer-CbimvSU8.mjs +5 -0
  183. package/dist/renderer-Ccvc63yd.mjs +5 -0
  184. package/dist/renderer-Cdp-SGfq.mjs +5 -0
  185. package/dist/renderer-CeTcSs3e.mjs +5 -0
  186. package/dist/{renderer-_J9JcCMR.mjs → renderer-CfLZein2.mjs} +3 -3
  187. package/dist/{renderer-_J9JcCMR.mjs.map → renderer-CfLZein2.mjs.map} +1 -1
  188. package/dist/{renderer-D-mX1EVA.mjs → renderer-Ch-q1O-q.mjs} +3 -3
  189. package/dist/{renderer-D-mX1EVA.mjs.map → renderer-Ch-q1O-q.mjs.map} +1 -1
  190. package/dist/{renderer-uzU6dsdR.mjs → renderer-Ch5JvJWl.mjs} +2 -2
  191. package/dist/{renderer-uzU6dsdR.mjs.map → renderer-Ch5JvJWl.mjs.map} +1 -1
  192. package/dist/{renderer-BZMh2io2.mjs → renderer-ChtEzq-R.mjs} +2 -2
  193. package/dist/{renderer-BZMh2io2.mjs.map → renderer-ChtEzq-R.mjs.map} +1 -1
  194. package/dist/{renderer-B2IUPjhw.mjs → renderer-Cj9nTC5l.mjs} +3 -3
  195. package/dist/{renderer-B2IUPjhw.mjs.map → renderer-Cj9nTC5l.mjs.map} +1 -1
  196. package/dist/{renderer-CdXBRdFf.mjs → renderer-CqT8HsSS.mjs} +2 -2
  197. package/dist/{renderer-CdXBRdFf.mjs.map → renderer-CqT8HsSS.mjs.map} +1 -1
  198. package/dist/{renderer-CldjJmRR.mjs → renderer-CuQjMhdV.mjs} +2 -2
  199. package/dist/renderer-CvNuu52U.mjs +5 -0
  200. package/dist/renderer-CwciC0oI.mjs +5 -0
  201. package/dist/renderer-CysLUbIr.mjs +5 -0
  202. package/dist/{renderer-BsrKj6Td.mjs → renderer-Cz30EVws.mjs} +2 -2
  203. package/dist/{renderer-BsrKj6Td.mjs.map → renderer-Cz30EVws.mjs.map} +1 -1
  204. package/dist/renderer-D3A22Vxb.mjs +5 -0
  205. package/dist/renderer-D5SY9EmA.mjs +5 -0
  206. package/dist/renderer-D8h3ZvaE.mjs +5 -0
  207. package/dist/renderer-DE-B6N9n.mjs +5 -0
  208. package/dist/renderer-DETZTI7t.mjs +5 -0
  209. package/dist/{renderer-CC22Djgi.mjs → renderer-DHoX-5U_.mjs} +3 -3
  210. package/dist/{renderer-CC22Djgi.mjs.map → renderer-DHoX-5U_.mjs.map} +1 -1
  211. package/dist/{renderer-HKv5cBdp.mjs → renderer-DOkm0Ycd.mjs} +2 -2
  212. package/dist/{renderer-HKv5cBdp.mjs.map → renderer-DOkm0Ycd.mjs.map} +1 -1
  213. package/dist/{renderer-fG8Jy8Rx.d.mts → renderer-DU3f6ZrS.d.mts} +2 -2
  214. package/dist/{renderer-fG8Jy8Rx.d.mts.map → renderer-DU3f6ZrS.d.mts.map} +1 -1
  215. package/dist/{renderer-C98XwEIr.mjs → renderer-DUzv-shq.mjs} +2 -2
  216. package/dist/{renderer-C98XwEIr.mjs.map → renderer-DUzv-shq.mjs.map} +1 -1
  217. package/dist/renderer-DWnDj0IM.mjs +5 -0
  218. package/dist/renderer-DcGUIbQF.mjs +5 -0
  219. package/dist/renderer-Dfq6FoNO.mjs +5 -0
  220. package/dist/renderer-DhasXW6S.mjs +3 -0
  221. package/dist/{renderer-BEuXJY-C.mjs → renderer-DhnOWnEA.mjs} +3 -3
  222. package/dist/{renderer-BEuXJY-C.mjs.map → renderer-DhnOWnEA.mjs.map} +1 -1
  223. package/dist/{renderer-BIKkxw_Z.mjs → renderer-Dhy1XHzz.mjs} +3 -3
  224. package/dist/{renderer-BIKkxw_Z.mjs.map → renderer-Dhy1XHzz.mjs.map} +1 -1
  225. package/dist/renderer-DjCvpsV_.mjs +5 -0
  226. package/dist/{renderer-pn52dzZz.mjs → renderer-DjJshz9Y.mjs} +2 -2
  227. package/dist/{renderer-pn52dzZz.mjs.map → renderer-DjJshz9Y.mjs.map} +1 -1
  228. package/dist/{renderer-DhGZ41hQ.mjs → renderer-DmTUIdus.mjs} +3 -3
  229. package/dist/{renderer-DhGZ41hQ.mjs.map → renderer-DmTUIdus.mjs.map} +1 -1
  230. package/dist/{renderer-D_m6Qbsi.mjs → renderer-Dq7AioJa.mjs} +2 -2
  231. package/dist/{renderer-D_m6Qbsi.mjs.map → renderer-Dq7AioJa.mjs.map} +1 -1
  232. package/dist/renderer-DrAaM6JD.mjs +5 -0
  233. package/dist/{renderer-D-GWBoVT.mjs → renderer-Dt4sqNEu.mjs} +2 -2
  234. package/dist/{renderer-D-GWBoVT.mjs.map → renderer-Dt4sqNEu.mjs.map} +1 -1
  235. package/dist/{renderer-DCrKEVjb.mjs → renderer-Dtcs4idV.mjs} +3 -3
  236. package/dist/{renderer-DCrKEVjb.mjs.map → renderer-Dtcs4idV.mjs.map} +1 -1
  237. package/dist/renderer-Dxlv8LYm.mjs +5 -0
  238. package/dist/{renderer-CO9vE3sd.mjs → renderer-Gj8SrE2W.mjs} +2 -2
  239. package/dist/{renderer-CO9vE3sd.mjs.map → renderer-Gj8SrE2W.mjs.map} +1 -1
  240. package/dist/{renderer-DvHi_wXE.mjs → renderer-KfnXDJS0.mjs} +3 -3
  241. package/dist/{renderer-DvHi_wXE.mjs.map → renderer-KfnXDJS0.mjs.map} +1 -1
  242. package/dist/{renderer-7xQmXXMH.mjs → renderer-MXVlg4p5.mjs} +3 -3
  243. package/dist/{renderer-7xQmXXMH.mjs.map → renderer-MXVlg4p5.mjs.map} +1 -1
  244. package/dist/{renderer-YONlI6W-.mjs → renderer-N2b6QZ1E.mjs} +3 -3
  245. package/dist/{renderer-YONlI6W-.mjs.map → renderer-N2b6QZ1E.mjs.map} +1 -1
  246. package/dist/renderer-Pb43OO2t.mjs +5 -0
  247. package/dist/{renderer-DNynPM6X.mjs → renderer-Q7gDzm8c.mjs} +2 -2
  248. package/dist/{renderer-DNynPM6X.mjs.map → renderer-Q7gDzm8c.mjs.map} +1 -1
  249. package/dist/{renderer-BEhZiOT4.mjs → renderer-RCiANtRV.mjs} +2 -2
  250. package/dist/{renderer-BEhZiOT4.mjs.map → renderer-RCiANtRV.mjs.map} +1 -1
  251. package/dist/{renderer-Dm57W73p.mjs → renderer-Sig9nZcI.mjs} +2 -2
  252. package/dist/renderer-VQbm-cGr.mjs +5 -0
  253. package/dist/{renderer-DiZkZ0Pr.mjs → renderer-fabBgwQX.mjs} +3 -3
  254. package/dist/{renderer-DiZkZ0Pr.mjs.map → renderer-fabBgwQX.mjs.map} +1 -1
  255. package/dist/{renderer-Bw-_GZVw.mjs → renderer-g-0PCNoo.mjs} +3 -3
  256. package/dist/{renderer-Bw-_GZVw.mjs.map → renderer-g-0PCNoo.mjs.map} +1 -1
  257. package/dist/{renderer-QbSrnPZU.mjs → renderer-gmHKIbKI.mjs} +3 -3
  258. package/dist/{renderer-QbSrnPZU.mjs.map → renderer-gmHKIbKI.mjs.map} +1 -1
  259. package/dist/{renderer-CU6WT5jW.mjs → renderer-kVZwiRoK.mjs} +3 -3
  260. package/dist/{renderer-CU6WT5jW.mjs.map → renderer-kVZwiRoK.mjs.map} +1 -1
  261. package/dist/renderer-oPMypDM1.mjs +5 -0
  262. package/dist/{renderer-CRhEGqW4.mjs → renderer-p7tgxP-A.mjs} +3 -3
  263. package/dist/{renderer-CRhEGqW4.mjs.map → renderer-p7tgxP-A.mjs.map} +1 -1
  264. package/dist/{renderer-CO4NGvAh.mjs → renderer-tvYj306A.mjs} +81 -78
  265. package/dist/renderer-tvYj306A.mjs.map +1 -0
  266. package/dist/renderer-xvWGpVyp.mjs +5 -0
  267. package/dist/renderer-zafZbD6Q.mjs +5 -0
  268. package/dist/{renderers-CP8CFWDs-BufiCyn7.mjs → renderers-CP8CFWDs-DLjtjrwx.mjs} +2 -2
  269. package/dist/{renderers-CP8CFWDs-BufiCyn7.mjs.map → renderers-CP8CFWDs-DLjtjrwx.mjs.map} +1 -1
  270. package/dist/sam/index.d.mts +3 -3
  271. package/dist/sam/index.mjs +1 -1
  272. package/dist/signals/index.d.mts +5 -5
  273. package/dist/signals/index.mjs +4 -4
  274. package/dist/{src-BU6vm9sP-DdTHmCr4.mjs → src-B23p_eh7-Cj6-lvV6.mjs} +293 -6
  275. package/dist/src-B23p_eh7-Cj6-lvV6.mjs.map +1 -0
  276. package/dist/{src-DrP7fGJX.mjs → src-CoHAjviq.mjs} +1355 -178
  277. package/dist/src-CoHAjviq.mjs.map +1 -0
  278. package/dist/storage/index.mjs +1 -1
  279. package/package.json +63 -60
  280. package/dist/dist-CiTgmfUw.mjs.map +0 -1
  281. package/dist/dist-DtPPPsZV.mjs.map +0 -1
  282. package/dist/fonts-k5ll8NTE.mjs.map +0 -1
  283. package/dist/index-C2yaponf.d.mts.map +0 -1
  284. package/dist/index-C5sgRLlG.d.mts.map +0 -1
  285. package/dist/index-CnZhBlob.d.mts.map +0 -1
  286. package/dist/index-CtKUQ2VG.d.mts.map +0 -1
  287. package/dist/index-DBh3WphX.d.mts.map +0 -1
  288. package/dist/index-DQ1U3HC3.d.mts.map +0 -1
  289. package/dist/index-a6JrbAK0.d.mts.map +0 -1
  290. package/dist/preview-engine/chunk-5ZS46EFB.mjs +0 -5
  291. package/dist/preview-engine/chunk-N3XTDAL6.mjs +0 -2227
  292. package/dist/preview-engine/chunk-NCQHOGZK.mjs +0 -3
  293. package/dist/preview-engine/chunk-PH3UUX6A.mjs +0 -138
  294. package/dist/preview-engine/chunk-XCPRRMMW.mjs +0 -2462
  295. package/dist/preview-engine/renderers-ZMMQ7S2A.mjs +0 -228
  296. package/dist/preview-lHH8Tv4j.mjs +0 -2446
  297. package/dist/preview-lHH8Tv4j.mjs.map +0 -1
  298. package/dist/program-BfiB9ttP.mjs.map +0 -1
  299. package/dist/renderer-0rLmztAv.mjs +0 -5
  300. package/dist/renderer-B0pjOXFY.mjs +0 -5
  301. package/dist/renderer-B7J13reL.mjs +0 -5
  302. package/dist/renderer-BPGIKGgl.mjs +0 -5
  303. package/dist/renderer-Bv-Artj1.mjs +0 -5
  304. package/dist/renderer-BvLjbhcL.mjs +0 -5
  305. package/dist/renderer-By6awWaf.mjs +0 -5
  306. package/dist/renderer-C0rvsz7m.mjs +0 -5
  307. package/dist/renderer-CDgud_HB.mjs +0 -5
  308. package/dist/renderer-CDiRF3bG.mjs +0 -6
  309. package/dist/renderer-CIIEQd4B.mjs +0 -5
  310. package/dist/renderer-CJblwOA9.mjs +0 -5
  311. package/dist/renderer-CNMOXtXE.mjs +0 -5
  312. package/dist/renderer-CO4NGvAh.mjs.map +0 -1
  313. package/dist/renderer-COeSeNGg.mjs +0 -5
  314. package/dist/renderer-CUfElmtZ.mjs +0 -5
  315. package/dist/renderer-CYh2lFoJ.mjs +0 -5
  316. package/dist/renderer-CYtVZYMH.mjs +0 -5
  317. package/dist/renderer-CjxZlkjb.mjs +0 -5
  318. package/dist/renderer-Cpd6TvTC.mjs +0 -5
  319. package/dist/renderer-D3ziOPhX.mjs +0 -5
  320. package/dist/renderer-D5yp74NL.mjs +0 -3
  321. package/dist/renderer-DL-phtL5.mjs +0 -5
  322. package/dist/renderer-DSnmYnHg.mjs +0 -5
  323. package/dist/renderer-DUGfsT-E.mjs +0 -5
  324. package/dist/renderer-DW5af9x1.mjs +0 -5
  325. package/dist/renderer-DYMrol1t.mjs +0 -5
  326. package/dist/renderer-DekeUHaz.mjs +0 -5
  327. package/dist/renderer-Dt5uyJdZ.mjs +0 -5
  328. package/dist/renderer-Dv_iRIyx.mjs.map +0 -1
  329. package/dist/renderer-DwLQAnaK.mjs +0 -5
  330. package/dist/renderer-IXQP2CWM.mjs +0 -5
  331. package/dist/renderer-K-Pkw63O.mjs +0 -5
  332. package/dist/renderer-MPw2KH9P.mjs +0 -5
  333. package/dist/renderer-RPu8RMav.mjs +0 -5
  334. package/dist/renderer-dCqxd5N2.mjs +0 -5
  335. package/dist/renderer-lhjmE-Fp.mjs +0 -5
  336. package/dist/renderer-u9cmBuvM.mjs +0 -5
  337. package/dist/renderer-vH12jcpz.mjs +0 -5
  338. package/dist/src-BU6vm9sP-DdTHmCr4.mjs.map +0 -1
  339. package/dist/src-DrP7fGJX.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-B23p_eh7-Cj6-lvV6.mjs","names":["path","FrameTensorPipeline","os","path","VisionRunner","VisionNode"],"sources":["../../vision/dist/registry-DJ-XmFZF.mjs","../../vision/dist/src-B23p_eh7.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 DEPTH_SOURCE = \"Depth Anything V2 Small (TikTok / HKU, Apache-2.0), ONNX export\";\nconst VITMATTE_SOURCE = \"ViTMatte Small, Distinctions-646 (HUST Vision Lab, code MIT, weights Apache-2.0), ONNX export\";\nconst 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\t\"depth-anything-v2-s\": {\n\t\tkey: \"depth-anything-v2-s\",\n\t\tfamily: \"depth-anything\",\n\t\tfilename: \"depth-anything-v2-s.onnx\",\n\t\turl: hf(\"onnx-community/depth-anything-v2-small\", \"4472b7362082ad9968fee890ca0f1e5aca36b93d\", \"onnx/model.onnx\"),\n\t\tbytes: 99060839,\n\t\tsha256: \"afb6a5c28f3b6bf1618c6e43f02073ef9dfdc70e937502d51603e57b0a1df10c\",\n\t\tinput: [518, 518],\n\t\tsource: DEPTH_SOURCE\n\t},\n\t\"vitmatte-s\": {\n\t\tkey: \"vitmatte-s\",\n\t\tfamily: \"vitmatte\",\n\t\tfilename: \"vitmatte-s.onnx\",\n\t\turl: hf(\"Xenova/vitmatte-small-distinctions-646\", \"358d428c452e5e0cd52955011a8b51944731d28e\", \"onnx/model.onnx\"),\n\t\tbytes: 103885865,\n\t\tsha256: \"a1cf48234c369faa3ea1711981d961fe1ec71f51e593f9d6553aa5a0e7d557e3\",\n\t\tinput: [1024, 1024],\n\t\tsource: VITMATTE_SOURCE\n\t}\n};\nconst VISION_MODELS = models;\n/** Adds a pinned model from a separately licensed package to the registry. */\nfunction registerVisionModel(descriptor) {\n\tmodels[descriptor.key] = descriptor;\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, registerVisionModel as o, VISION_TASKS as r, COCO_CLASSES as t };\n//# sourceMappingURL=registry-DJ-XmFZF.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, o as registerVisionModel, r as VISION_TASKS, t as COCO_CLASSES } from \"./registry-DJ-XmFZF.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$1 = computeIoU(trk.box, det.boundingBox);\n\t\t\t\tif (iou$1 >= this._iouThreshold) candidateMatches.push({\n\t\t\t\t\ttrackIdx: t,\n\t\t\t\t\tdetIdx: d,\n\t\t\t\t\tiou: iou$1\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/depth.ts\n/** Model input size for a frame: the short side at `short`, the other kept to the frame's aspect, both multiples of the 14 px ViT patch. */\nfunction depthInputSize(width, height, short) {\n\tconst snap = (v) => Math.max(14, Math.round(v / 14) * 14);\n\treturn width >= height ? [snap(short * width / height), snap(short)] : [snap(short), snap(short * height / width)];\n}\n/** Share of samples clipped at each end, so a stray hot pixel does not set the range. */\nconst TAIL = .01;\n/**\n* Depth Anything decode: `predicted_depth [1, h, w]` relative inverse depth →\n* 0 (farthest) … 1 (nearest), at the model's resolution. The range is the\n* frame's 1st…99th percentile, so it is relative to the frame, not metric.\n*/\nfunction decodeDepth(predicted, width, height) {\n\tconst n = width * height;\n\tconst step = Math.max(1, Math.floor(n / 4096));\n\tconst samples = [];\n\tfor (let i = 0; i < n; i += step) samples.push(predicted[i]);\n\tsamples.sort((a, b) => a - b);\n\tconst lo = samples[Math.floor((samples.length - 1) * TAIL)];\n\tconst hi = samples[Math.ceil((samples.length - 1) * (1 - TAIL))];\n\tconst scale = hi > lo ? 1 / (hi - lo) : 0;\n\tconst data = new Float32Array(n);\n\tfor (let i = 0; i < n; i++) data[i] = Math.min(1, Math.max(0, (predicted[i] - lo) * scale));\n\treturn {\n\t\tdata,\n\t\twidth,\n\t\theight\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\t\"depth-anything\": {\n\t\tfit: \"stretch\",\n\t\tchannels: \"rgb\",\n\t\tmean: [\n\t\t\t123.675,\n\t\t\t116.28,\n\t\t\t103.53\n\t\t],\n\t\tstd: [\n\t\t\t58.395,\n\t\t\t57.12,\n\t\t\t57.375\n\t\t],\n\t\tpadValue: 0\n\t}\n};\n/** True for the families `VisionRunner` can preprocess and decode itself. */\nfunction isPreprocessFamily(family) {\n\treturn Object.hasOwn(PREPROCESS_BY_FAMILY, family);\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 && !out.maskPlane) return {\n\t\tdetections,\n\t\tmasks\n\t};\n\tconst threshold = opts.maskThreshold ?? .5;\n\tconst feather = opts.featherRadius ?? .05;\n\tconst alphaOf = out.maskLogits ? logitToAlpha(threshold, feather) : probabilityToAlpha(threshold, feather);\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 data = out.maskPlane ? out.maskPlane(index) : out.masks;\n\t\tconst base = out.maskPlane ? 0 : 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(data[base + my0 * mw + mx0] * (1 - fx) * (1 - fy) + data[base + my0 * mw + mx1] * fx * (1 - fy) + data[base + my1 * mw + mx0] * (1 - fx) * fy + data[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}\n/**\n* Logit → 0..255 alpha: `probabilityToAlpha` after a sigmoid, which is only\n* evaluated inside the feather band.\n*/\nfunction logitToAlpha(threshold, feather) {\n\tconst toAlpha = probabilityToAlpha(threshold, feather);\n\tconst logit = (p) => p <= 0 ? -Infinity : p >= 1 ? Infinity : Math.log(p / (1 - p));\n\tif (feather <= 0) {\n\t\tconst edge = logit(threshold);\n\t\treturn (l) => l > edge ? 255 : 0;\n\t}\n\tconst lo = logit(threshold - feather);\n\tconst hi = logit(threshold + feather);\n\treturn (l) => l <= lo ? 0 : l >= hi ? 255 : toAlpha(1 / (1 + Math.exp(-l)));\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$1 = opts.iouThreshold ?? .6;\n\tconst kept = [];\n\tfor (const p of people) if (!kept.some((k) => isDuplicate(k, p, iou$1))) 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$1) {\n\tif (computeIoU(a.boundingBox, b.boundingBox) > iou$1) 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/gpu/frame-tensor.ts\n/**\n* Frame preprocessing on the GPU: a texture becomes a model's NCHW float input\n* in a storage buffer, so a frame drawn by the renderer reaches the model\n* without a round trip through the CPU. The math is `imageToTensor`'s\n* (pixel-centre bilinear sampling, letterbox padding, channel order,\n* normalisation); see decode/preprocess.ts for the per-model contracts.\n*\n* Also: a content hash of a texture (two order-independent 32-bit sums, read\n* back as 8 bytes), so layers showing the same pixels can share a pass, and a\n* plain RGBA readback for paths that need pixels on the CPU.\n*/\nconst TENSOR_WGSL = `\nstruct Params {\n\tsrc: vec2u,\n\tdst: vec2u,\n\tscale: vec2f,\n\toffset: vec2f,\n\tlo: vec2i,\n\thi: vec2i,\n\tmean: vec4f,\n\tinvStd: vec4f,\n\tpad: vec4f,\n\torder: vec4u,\n};\n\n@group(0) @binding(0) var<uniform> p: Params;\n@group(0) @binding(1) var src: texture_2d<f32>;\n@group(0) @binding(2) var<storage, read_write> dst: array<f32>;\n\n@compute @workgroup_size(16, 16)\nfn main(@builtin(global_invocation_id) id: vec3u) {\n\tif (id.x >= p.dst.x || id.y >= p.dst.y) { return; }\n\tlet x = i32(id.x);\n\tlet y = i32(id.y);\n\tlet plane = p.dst.x * p.dst.y;\n\tlet o = id.y * p.dst.x + id.x;\n\tvar v = p.pad.xyz;\n\tif (x >= p.lo.x && x <= p.hi.x && y >= p.lo.y && y <= p.hi.y) {\n\t\tlet maxX = i32(p.src.x) - 1;\n\t\tlet maxY = i32(p.src.y) - 1;\n\t\tlet sy = max(0.0, (f32(y) + 0.5 - p.offset.y) / p.scale.y - 0.5);\n\t\tlet iy0 = min(maxY, i32(floor(sy)));\n\t\tlet iy1 = min(maxY, iy0 + 1);\n\t\tlet fy = sy - f32(iy0);\n\t\tlet sx = max(0.0, (f32(x) + 0.5 - p.offset.x) / p.scale.x - 0.5);\n\t\tlet ix0 = min(maxX, i32(floor(sx)));\n\t\tlet ix1 = min(maxX, ix0 + 1);\n\t\tlet fx = sx - f32(ix0);\n\t\tvar rgba =\n\t\t\ttextureLoad(src, vec2i(ix0, iy0), 0) * ((1.0 - fx) * (1.0 - fy)) +\n\t\t\ttextureLoad(src, vec2i(ix1, iy0), 0) * (fx * (1.0 - fy)) +\n\t\t\ttextureLoad(src, vec2i(ix0, iy1), 0) * ((1.0 - fx) * fy) +\n\t\t\ttextureLoad(src, vec2i(ix1, iy1), 0) * (fx * fy);\n\t\trgba = rgba * 255.0;\n\t\tlet s = vec3f(rgba[p.order.x], rgba[p.order.y], rgba[p.order.z]);\n\t\tv = (s - p.mean.xyz) * p.invStd.xyz;\n\t}\n\tdst[o] = v.x;\n\tdst[plane + o] = v.y;\n\tdst[2u * plane + o] = v.z;\n}\n`;\nconst HASH_WGSL = `\n@group(0) @binding(0) var src: texture_2d<f32>;\n@group(0) @binding(1) var<storage, read_write> acc: array<atomic<u32>, 2>;\n\nvar<workgroup> local: array<atomic<u32>, 2>;\n\n@compute @workgroup_size(16, 16)\nfn main(\n\t@builtin(global_invocation_id) id: vec3u,\n\t@builtin(local_invocation_index) li: u32,\n) {\n\tlet dim = textureDimensions(src);\n\tif (id.x < dim.x && id.y < dim.y) {\n\t\tlet c = pack4x8unorm(textureLoad(src, vec2i(id.xy), 0));\n\t\tlet i = id.y * dim.x + id.x;\n\t\tlet a = (c ^ (i * 0x9e3779b9u)) * 0x85ebca6bu;\n\t\tlet b = (c + i * 0xc2b2ae35u) * 0x27d4eb2fu;\n\t\tatomicAdd(&local[0], a ^ (a >> 15u));\n\t\tatomicAdd(&local[1], b ^ (b >> 13u));\n\t}\n\tworkgroupBarrier();\n\tif (li == 0u) {\n\t\tatomicAdd(&acc[0], atomicLoad(&local[0]));\n\t\tatomicAdd(&acc[1], atomicLoad(&local[1]));\n\t}\n}\n`;\nconst PARAMS_BYTES = 112;\nconst pipelines = /* @__PURE__ */ new WeakMap();\nvar FrameTensorPipeline = class FrameTensorPipeline {\n\ttensorPipeline;\n\thashPipeline;\n\tparams;\n\t/** One per device. */\n\tstatic for(device) {\n\t\tlet pipeline = pipelines.get(device);\n\t\tif (!pipeline) {\n\t\t\tpipeline = new FrameTensorPipeline(device);\n\t\t\tpipelines.set(device, pipeline);\n\t\t}\n\t\treturn pipeline;\n\t}\n\tconstructor(device) {\n\t\tthis.device = device;\n\t\tthis.tensorPipeline = device.createComputePipeline({\n\t\t\tlabel: \"vision_frame_tensor\",\n\t\t\tlayout: \"auto\",\n\t\t\tcompute: {\n\t\t\t\tmodule: device.createShaderModule({ code: TENSOR_WGSL }),\n\t\t\t\tentryPoint: \"main\"\n\t\t\t}\n\t\t});\n\t\tthis.hashPipeline = device.createComputePipeline({\n\t\t\tlabel: \"vision_frame_hash\",\n\t\t\tlayout: \"auto\",\n\t\t\tcompute: {\n\t\t\t\tmodule: device.createShaderModule({ code: HASH_WGSL }),\n\t\t\t\tentryPoint: \"main\"\n\t\t\t}\n\t\t});\n\t\tthis.params = device.createBuffer({\n\t\t\tlabel: \"vision_frame_tensor_params\",\n\t\t\tsize: PARAMS_BYTES,\n\t\t\tusage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n\t\t});\n\t}\n\t/** Bytes of the NCHW float tensor for `spec`. */\n\tstatic tensorBytes(spec) {\n\t\treturn 3 * spec.width * spec.height * 4;\n\t}\n\t/**\n\t* Writes `image` as the model input described by `spec` into `out` (at least\n\t* `tensorBytes(spec)`, STORAGE usage). Submits its own command buffer, so it\n\t* runs before anything submitted later (e.g. the inference reading `out`).\n\t*/\n\ttoTensor(image, spec, out) {\n\t\tconst transform = computeInputTransform(image.width, image.height, spec);\n\t\tconst { scaleX, scaleY, offsetX, offsetY } = transform;\n\t\tconst params = new ArrayBuffer(PARAMS_BYTES);\n\t\tconst u32 = new Uint32Array(params);\n\t\tconst f32 = new Float32Array(params);\n\t\tconst i32 = new Int32Array(params);\n\t\tu32.set([\n\t\t\timage.width,\n\t\t\timage.height,\n\t\t\tspec.width,\n\t\t\tspec.height\n\t\t], 0);\n\t\tf32.set([\n\t\t\tscaleX,\n\t\t\tscaleY,\n\t\t\toffsetX,\n\t\t\toffsetY\n\t\t], 4);\n\t\ti32.set([\n\t\t\tMath.ceil(offsetX),\n\t\t\tMath.ceil(offsetY),\n\t\t\tMath.min(spec.width, Math.floor(offsetX + image.width * scaleX)) - 1,\n\t\t\tMath.min(spec.height, Math.floor(offsetY + image.height * scaleY)) - 1\n\t\t], 8);\n\t\tconst inv = spec.std.map((s) => 1 / s);\n\t\tf32.set([...spec.mean, 0], 12);\n\t\tf32.set([...inv, 0], 16);\n\t\tf32.set([\n\t\t\t0,\n\t\t\t1,\n\t\t\t2\n\t\t].map((c) => (spec.padValue - spec.mean[c]) * inv[c]), 20);\n\t\tu32.set(spec.channels === \"bgr\" ? [\n\t\t\t2,\n\t\t\t1,\n\t\t\t0,\n\t\t\t3\n\t\t] : [\n\t\t\t0,\n\t\t\t1,\n\t\t\t2,\n\t\t\t3\n\t\t], 24);\n\t\tthis.device.queue.writeBuffer(this.params, 0, params);\n\t\tconst encoder$1 = this.device.createCommandEncoder({ label: \"vision_frame_tensor\" });\n\t\tconst pass = encoder$1.beginComputePass();\n\t\tpass.setPipeline(this.tensorPipeline);\n\t\tpass.setBindGroup(0, this.device.createBindGroup({\n\t\t\tlayout: this.tensorPipeline.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: this.params }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: image.texture.createView()\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: { buffer: out }\n\t\t\t\t}\n\t\t\t]\n\t\t}));\n\t\tpass.dispatchWorkgroups(Math.ceil(spec.width / 16), Math.ceil(spec.height / 16));\n\t\tpass.end();\n\t\tthis.device.queue.submit([encoder$1.finish()]);\n\t\treturn transform;\n\t}\n\t/** A key that is equal for textures with equal size and pixels. */\n\tasync contentKey(image) {\n\t\tconst acc = this.device.createBuffer({\n\t\t\tsize: 8,\n\t\t\tusage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC\n\t\t});\n\t\tconst staging = this.device.createBuffer({\n\t\t\tsize: 8,\n\t\t\tusage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST\n\t\t});\n\t\tconst encoder$1 = this.device.createCommandEncoder({ label: \"vision_frame_hash\" });\n\t\tconst pass = encoder$1.beginComputePass();\n\t\tpass.setPipeline(this.hashPipeline);\n\t\tpass.setBindGroup(0, this.device.createBindGroup({\n\t\t\tlayout: this.hashPipeline.getBindGroupLayout(0),\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: image.texture.createView()\n\t\t\t}, {\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: { buffer: acc }\n\t\t\t}]\n\t\t}));\n\t\tpass.dispatchWorkgroups(Math.ceil(image.width / 16), Math.ceil(image.height / 16));\n\t\tpass.end();\n\t\tencoder$1.copyBufferToBuffer(acc, 0, staging, 0, 8);\n\t\tthis.device.queue.submit([encoder$1.finish()]);\n\t\tawait staging.mapAsync(GPUMapMode.READ);\n\t\tconst [a, b] = new Uint32Array(staging.getMappedRange().slice(0));\n\t\tstaging.unmap();\n\t\tstaging.destroy();\n\t\tacc.destroy();\n\t\treturn `${image.width}x${image.height}:gpu:${a.toString(36)}:${b.toString(36)}`;\n\t}\n};\n/** Reads an 8-bit RGBA/BGRA texture back as RGBA pixels. */\nasync function readTexturePixels(image) {\n\tconst { device, texture, width, height } = image;\n\tconst unaligned = width * 4;\n\tconst bytesPerRow = Math.ceil(unaligned / 256) * 256;\n\tconst staging = device.createBuffer({\n\t\tsize: bytesPerRow * height,\n\t\tusage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,\n\t\tlabel: \"vision_frame_readback\"\n\t});\n\tconst encoder$1 = device.createCommandEncoder({ label: \"vision_frame_readback\" });\n\tencoder$1.copyTextureToBuffer({ texture }, {\n\t\tbuffer: staging,\n\t\tbytesPerRow,\n\t\trowsPerImage: height\n\t}, [\n\t\twidth,\n\t\theight,\n\t\t1\n\t]);\n\tdevice.queue.submit([encoder$1.finish()]);\n\tawait staging.mapAsync(GPUMapMode.READ);\n\tconst mapped = new Uint8Array(staging.getMappedRange());\n\tconst data = new Uint8ClampedArray(width * height * 4);\n\tfor (let y = 0; y < height; y++) data.set(mapped.subarray(y * bytesPerRow, y * bytesPerRow + unaligned), y * unaligned);\n\tstaging.unmap();\n\tstaging.destroy();\n\tif (texture.format.startsWith(\"bgra\")) for (let i = 0; i < data.length; i += 4) {\n\t\tconst b = data[i];\n\t\tdata[i] = data[i + 2];\n\t\tdata[i + 2] = b;\n\t}\n\treturn {\n\t\tdata,\n\t\twidth,\n\t\theight\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/matting/trimap.ts\n/**\n* Trimaps from hard masks, for alpha matting: pixels well inside the mask are\n* foreground, pixels well outside are background, and a band of `band` pixels\n* either side of the edge is unknown, for the matting model to resolve.\n*/\n/** Trimap values, as ViTMatte reads them (0, 0.5, 1 on its 0..1 scale). */\nconst TRIMAP_BACKGROUND = 0;\nconst TRIMAP_UNKNOWN = 128;\nconst TRIMAP_FOREGROUND = 255;\nconst FAR = 0x56bc75e2d63100000;\n/**\n* Squared Euclidean distance from every pixel to the nearest pixel where\n* `inside(i)` holds, with that pixel's index (−1 when there is none).\n* Felzenszwalb and Huttenlocher's two-pass lower envelope, O(width × height).\n*/\nfunction distanceTransform(width, height, inside) {\n\tconst n = width * height;\n\tconst columns = new Float32Array(n);\n\tconst columnFrom = new Int32Array(n);\n\tconst scratch = envelopeScratch(Math.max(width, height));\n\tfor (let x = 0; x < width; x++) {\n\t\tfor (let y = 0; y < height; y++) scratch.f[y] = inside(y * width + x) ? 0 : FAR;\n\t\tenvelope(scratch, height);\n\t\tfor (let y = 0; y < height; y++) {\n\t\t\tcolumns[y * width + x] = scratch.d[y];\n\t\t\tcolumnFrom[y * width + x] = scratch.from[y];\n\t\t}\n\t}\n\tconst distance = new Float32Array(n);\n\tconst nearest = new Int32Array(n);\n\tfor (let y = 0; y < height; y++) {\n\t\tconst row = y * width;\n\t\tfor (let x = 0; x < width; x++) scratch.f[x] = columns[row + x];\n\t\tenvelope(scratch, width);\n\t\tfor (let x = 0; x < width; x++) {\n\t\t\tconst d = scratch.d[x];\n\t\t\tconst fromX = scratch.from[x];\n\t\t\tdistance[row + x] = d;\n\t\t\tnearest[row + x] = d >= FAR ? -1 : columnFrom[row + fromX] * width + fromX;\n\t\t}\n\t}\n\treturn {\n\t\tdistance,\n\t\tnearest\n\t};\n}\nfunction envelopeScratch(length) {\n\treturn {\n\t\tf: new Float64Array(length),\n\t\td: new Float64Array(length),\n\t\tfrom: new Int32Array(length),\n\t\tv: new Int32Array(length),\n\t\tz: new Float64Array(length + 1)\n\t};\n}\n/** One dimension: d[q] = min over p of (q − p)² + f[p]. */\nfunction envelope(s, length) {\n\tconst { f, d, from, v, z } = s;\n\tlet k = -1;\n\tfor (let q = 0; q < length; q++) {\n\t\tconst fq = f[q];\n\t\tif (fq >= FAR) continue;\n\t\tlet cut = Number.NEGATIVE_INFINITY;\n\t\twhile (k >= 0) {\n\t\t\tconst p = v[k];\n\t\t\tcut = (fq + q * q - (f[p] + p * p)) / (2 * (q - p));\n\t\t\tif (cut > z[k]) break;\n\t\t\tk--;\n\t\t}\n\t\tk++;\n\t\tv[k] = q;\n\t\tz[k] = k === 0 ? Number.NEGATIVE_INFINITY : cut;\n\t\tz[k + 1] = Number.POSITIVE_INFINITY;\n\t}\n\tif (k < 0) {\n\t\td.fill(FAR, 0, length);\n\t\tfrom.fill(0, 0, length);\n\t\treturn;\n\t}\n\tlet j = 0;\n\tfor (let q = 0; q < length; q++) {\n\t\twhile (z[j + 1] < q) j++;\n\t\tconst p = v[j];\n\t\td[q] = (q - p) * (q - p) + f[p];\n\t\tfrom[q] = p;\n\t}\n}\n/**\n* The trimap of a mask (`mask[i] >= 128` is inside): an unknown band of\n* `band` px either side of the edge, foreground inside it, background outside.\n*/\nfunction trimapFromMask(mask, width, height, band) {\n\tconst outside = distanceTransform(width, height, (i) => mask[i] >= 128);\n\tconst inside = distanceTransform(width, height, (i) => mask[i] < 128);\n\tconst r2 = band * band;\n\tconst data = new Uint8Array(width * height);\n\tlet x0 = width;\n\tlet y0 = height;\n\tlet x1 = 0;\n\tlet y1 = 0;\n\tfor (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {\n\t\tconst i = y * width + x;\n\t\tconst isIn = mask[i] >= 128;\n\t\tif ((isIn ? inside.distance[i] : outside.distance[i]) > r2) {\n\t\t\tdata[i] = isIn ? TRIMAP_FOREGROUND : TRIMAP_BACKGROUND;\n\t\t\tcontinue;\n\t\t}\n\t\tdata[i] = TRIMAP_UNKNOWN;\n\t\tif (x < x0) x0 = x;\n\t\tif (y < y0) y0 = y;\n\t\tif (x >= x1) x1 = x + 1;\n\t\tif (y >= y1) y1 = y + 1;\n\t}\n\treturn {\n\t\tdata,\n\t\twidth,\n\t\theight,\n\t\tunknown: x1 > x0 ? [\n\t\t\tx0,\n\t\t\ty0,\n\t\t\tx1,\n\t\t\ty1\n\t\t] : null,\n\t\tnearest: outside.nearest\n\t};\n}\n/** Default band for a frame: about 1.2% of its short side, 3…40 px (13 px at 1080p). */\nfunction defaultMatteBand(width, height) {\n\treturn Math.min(40, Math.max(3, Math.round(Math.min(width, height) * .012)));\n}\n\n//#endregion\n//#region src/matting/vitmatte.ts\n/** ViTMatte's patch grid: both input sides pad to a multiple of 32 (as its image processor does). */\nconst DIVISOR = 32;\n/**\n* The window around a trimap's unknown band, grown by `context` px so the\n* model sees what is on either side, and scaled down when its long side\n* exceeds `resolution`. Null when there is nothing to resolve.\n*/\nfunction matteWindow(trimap, context, resolution) {\n\tif (!trimap.unknown) return null;\n\tconst [ux0, uy0, ux1, uy1] = trimap.unknown;\n\tconst x0 = Math.max(0, ux0 - context);\n\tconst y0 = Math.max(0, uy0 - context);\n\tconst x1 = Math.min(trimap.width, ux1 + context);\n\tconst y1 = Math.min(trimap.height, uy1 + context);\n\tconst scale = Math.min(1, resolution / Math.max(x1 - x0, y1 - y0));\n\tconst contentWidth = Math.max(1, Math.round((x1 - x0) * scale));\n\tconst contentHeight = Math.max(1, Math.round((y1 - y0) * scale));\n\treturn {\n\t\tx0,\n\t\ty0,\n\t\tx1,\n\t\ty1,\n\t\tscale,\n\t\tcontentWidth,\n\t\tcontentHeight,\n\t\tinputWidth: Math.ceil(contentWidth / DIVISOR) * DIVISOR,\n\t\tinputHeight: Math.ceil(contentHeight / DIVISOR) * DIVISOR\n\t};\n}\n/**\n* The model input `[1, 4, H, W]`: RGB as (v / 255 − 0.5) / 0.5, then the\n* trimap on 0…1. The image is sampled bilinearly, the trimap nearest so its\n* three levels stay exact; padding is zero in every channel.\n*/\nfunction vitmatteInput(image, trimap, window, out) {\n\tconst { inputWidth: w, inputHeight: h } = window;\n\tconst plane = w * h;\n\tconst tensor = out && out.length >= 4 * plane ? out.subarray(0, 4 * plane) : new Float32Array(4 * plane);\n\ttensor.fill(0);\n\tconst { data, width: sw, height: sh } = image;\n\tconst inv = 1 / window.scale;\n\tfor (let y = 0; y < window.contentHeight; y++) {\n\t\tconst sy = Math.min(sh - 1, Math.max(0, window.y0 + (y + .5) * inv - .5));\n\t\tconst y0 = Math.floor(sy);\n\t\tconst y1 = Math.min(sh - 1, y0 + 1);\n\t\tconst fy = sy - y0;\n\t\tconst ty = Math.min(window.y1 - 1, Math.floor(window.y0 + (y + .5) * inv));\n\t\tfor (let x = 0; x < window.contentWidth; x++) {\n\t\t\tconst sx = Math.min(sw - 1, Math.max(0, window.x0 + (x + .5) * inv - .5));\n\t\t\tconst x0 = Math.floor(sx);\n\t\t\tconst x1 = Math.min(sw - 1, x0 + 1);\n\t\t\tconst fx = sx - x0;\n\t\t\tconst o = y * w + x;\n\t\t\tfor (let c = 0; c < 3; c++) {\n\t\t\t\tconst a = data[(y0 * sw + x0) * 4 + c];\n\t\t\t\tconst b = data[(y0 * sw + x1) * 4 + c];\n\t\t\t\tconst d = data[(y1 * sw + x0) * 4 + c];\n\t\t\t\tconst e = data[(y1 * sw + x1) * 4 + c];\n\t\t\t\tconst top = a + (b - a) * fx;\n\t\t\t\tconst v = top + (d + (e - d) * fx - top) * fy;\n\t\t\t\ttensor[c * plane + o] = v / 127.5 - 1;\n\t\t\t}\n\t\t\tconst tx = Math.min(window.x1 - 1, Math.floor(window.x0 + (x + .5) * inv));\n\t\t\ttensor[3 * plane + o] = trimap.data[ty * trimap.width + tx] / 255;\n\t\t}\n\t}\n\treturn tensor;\n}\n/**\n* The frame's alpha: the trimap's foreground and background as they are,\n* and the model's alpha (sampled back to source px) across the unknown band.\n*/\nfunction composeMatte(trimap, window, alphas) {\n\tconst { width } = trimap;\n\tconst out = Uint8Array.from(trimap.data, (v) => v === TRIMAP_UNKNOWN ? 0 : v);\n\tif (!window) return out;\n\tconst w = window.inputWidth;\n\tconst maxX = window.contentWidth - 1;\n\tconst maxY = window.contentHeight - 1;\n\tfor (let y = window.y0; y < window.y1; y++) {\n\t\tconst my = Math.min(maxY, Math.max(0, (y - window.y0 + .5) * window.scale - .5));\n\t\tconst my0 = Math.floor(my);\n\t\tconst my1 = Math.min(maxY, my0 + 1);\n\t\tconst fy = my - my0;\n\t\tfor (let x = window.x0; x < window.x1; x++) {\n\t\t\tconst i = y * width + x;\n\t\t\tif (trimap.data[i] !== TRIMAP_UNKNOWN) continue;\n\t\t\tconst mx = Math.min(maxX, Math.max(0, (x - window.x0 + .5) * window.scale - .5));\n\t\t\tconst mx0 = Math.floor(mx);\n\t\t\tconst mx1 = Math.min(maxX, mx0 + 1);\n\t\t\tconst fx = mx - mx0;\n\t\t\tconst a = alphas[my0 * w + mx0];\n\t\t\tconst b = alphas[my0 * w + mx1];\n\t\t\tconst c = alphas[my1 * w + mx0];\n\t\t\tconst d = alphas[my1 * w + mx1];\n\t\t\tconst top = a + (b - a) * fx;\n\t\t\tconst v = top + (c + (d - c) * fx - top) * fy;\n\t\t\tout[i] = Math.round(Math.min(1, Math.max(0, v)) * 255);\n\t\t}\n\t}\n\treturn out;\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_acceptLicense;\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\tthis._acceptLicense = options.acceptLicense === true;\n\t}\n\tget modelsDir() {\n\t\treturn this._modelsDir;\n\t}\n\tpathFor(key) {\n\t\treturn join(this._modelsDir, this.descriptor(key).filename);\n\t}\n\tdescriptor(key) {\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (!desc) throw new Error(`Vision model '${key}' is not registered in the model store.`);\n\t\treturn desc;\n\t}\n\t/** The URL `ensure(key)` downloads from (mirror when `baseUrl` is set). */\n\turlFor(key) {\n\t\tconst desc = this.descriptor(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 desc = VISION_MODELS[key];\n\t\tif (!desc) return false;\n\t\tconst targetPath = join(this._modelsDir, desc.filename);\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 === desc.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 desc = this.descriptor(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\tif (desc.license && desc.license !== \"Apache-2.0\") {\n\t\t\tif (!this._acceptLicense && process.env.FRAMEFIELDS_ACCEPT_SAM_LICENSE !== \"1\") throw new Error(`License agreement required for model \"${key}\":\\nThis model is licensed under \"${desc.license}\".\\nTo download and use this model, you must accept its license terms by passing 'acceptLicense: true' or setting FRAMEFIELDS_ACCEPT_SAM_LICENSE=1.`);\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/model/onnx-proto.ts\n/**\n* Minimal ONNX protobuf wire-format helpers: split a message into fields,\n* read strings, write length-delimited fields. Only what the graph editors\n* (onnx-subgraph.ts, onnx-float16.ts) need; unknown fields are copied as raw\n* bytes, so nothing else in a model is touched.\n*/\nconst MODEL_GRAPH$1 = 7;\nconst GRAPH_NODE$1 = 1;\nconst GRAPH_INITIALIZER = 5;\nconst GRAPH_INPUT$1 = 11;\nconst GRAPH_OUTPUT$1 = 12;\nconst GRAPH_VALUE_INFO = 13;\nconst NODE_INPUT$1 = 1;\nconst NODE_OUTPUT$2 = 2;\nconst VALUE_INFO_NAME = 1;\nconst TENSOR_NAME = 8;\nconst WIRE_VARINT = 0;\nconst WIRE_I64 = 1;\nconst WIRE_LEN = 2;\nconst WIRE_I32 = 5;\nfunction readVarint(buf, pos) {\n\tlet value = 0;\n\tlet scale = 1;\n\tfor (;;) {\n\t\tif (pos >= buf.length) throw new Error(\"ONNX model: truncated varint\");\n\t\tconst byte = buf[pos++];\n\t\tvalue += (byte & 127) * scale;\n\t\tif (byte < 128) return [value, pos];\n\t\tscale *= 128;\n\t}\n}\nfunction fields(buf) {\n\tconst out = [];\n\tlet pos = 0;\n\twhile (pos < buf.length) {\n\t\tconst start = pos;\n\t\tconst [tag, afterTag] = readVarint(buf, pos);\n\t\tpos = afterTag;\n\t\tconst number$1 = Math.floor(tag / 8);\n\t\tconst wire = tag & 7;\n\t\tlet body = buf.subarray(pos, pos);\n\t\tif (wire === WIRE_VARINT) pos = readVarint(buf, pos)[1];\n\t\telse if (wire === WIRE_I64) pos += 8;\n\t\telse if (wire === WIRE_I32) pos += 4;\n\t\telse if (wire === WIRE_LEN) {\n\t\t\tconst [length, afterLength] = readVarint(buf, pos);\n\t\t\tbody = buf.subarray(afterLength, afterLength + length);\n\t\t\tpos = afterLength + length;\n\t\t} else throw new Error(`ONNX model: unsupported wire type ${wire}`);\n\t\tif (pos > buf.length) throw new Error(\"ONNX model: truncated field\");\n\t\tout.push({\n\t\t\tnumber: number$1,\n\t\t\twire,\n\t\t\traw: buf.subarray(start, pos),\n\t\t\tbody\n\t\t});\n\t}\n\treturn out;\n}\nconst decoder = new TextDecoder();\nconst encoder = new TextEncoder();\nfunction strings(buf, number$1) {\n\treturn fields(buf).filter((f) => f.number === number$1 && f.wire === WIRE_LEN).map((f) => decoder.decode(f.body));\n}\nfunction firstString(buf, number$1) {\n\treturn strings(buf, number$1)[0];\n}\nfunction varint(value) {\n\tconst bytes = [];\n\twhile (value >= 128) {\n\t\tbytes.push(value % 128 | 128);\n\t\tvalue = Math.floor(value / 128);\n\t}\n\tbytes.push(value);\n\treturn bytes;\n}\nfunction lengthDelimited(number$1, payload) {\n\tconst head = [...varint(number$1 * 8 + WIRE_LEN), ...varint(payload.length)];\n\tconst out = new Uint8Array(head.length + payload.length);\n\tout.set(head, 0);\n\tout.set(payload, head.length);\n\treturn out;\n}\nfunction concat(parts) {\n\tconst out = new Uint8Array(parts.reduce((n, p) => n + p.length, 0));\n\tlet offset = 0;\n\tfor (const part of parts) {\n\t\tout.set(part, offset);\n\t\toffset += part.length;\n\t}\n\treturn out;\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/decode/rtmdet-ins-head.ts\n/**\n* RTMDet-Ins post-processing, done here instead of inside the ONNX graph.\n*\n* The mmdeploy end2end export runs top-k, per-class NMS and mask assembly in\n* the graph and returns a full input-sized mask for each of up to 100\n* detections (40 on a typical frame: ~65 MB of floats). The runner instead\n* cuts the graph before its first data-dependent op (see `RTMDET_INS_HEAD`)\n* and reproduces the tail exactly:\n*\n* 1. top 5000 anchors by their best class score;\n* 2. ONNX NonMaxSuppression per class (IoU > 0.6 suppresses, scores > 0.05,\n* at most 200 per class);\n* 3. the 100 best (class, box) pairs;\n* 4. masks on demand: a 3-layer dynamic 1×1 conv over the 8 mask features\n* plus each pixel's offset from the anchor, at 1/8 of the input size.\n* The logits are upsampled (bilinear) and squashed by the decoder.\n*\n* Constants and layer layout match the export's graph; `models.e2e.test.ts`\n* checks the result against the end2end outputs.\n*/\n/** Head tensors of the mmdeploy RTMDet-Ins exports (all variants). */\nconst RTMDET_INS_HEAD = {\n\tscores: \"/Sigmoid_output_0\",\n\tboxes: \"/Concat_7_output_0\",\n\tkernels: \"/Concat_5_output_0\",\n\tmaskFeatures: \"/bbox_head/mask_head/projection/Conv_output_0\"\n};\nconst PRE_NMS = 5e3;\nconst IOU_THRESHOLD = Math.fround(.6);\nconst SCORE_FLOOR = Math.fround(.05);\nconst MAX_PER_CLASS = 200;\nconst MAX_DETECTIONS = 100;\nconst STRIDES = [\n\t8,\n\t16,\n\t32\n];\n/** Mask features are at stride 8; relative offsets are divided by stride × 8. */\nconst MASK_STRIDE = 8;\nconst MASK_CHANNELS = 8;\nconst KERNEL_SIZE = 169;\n/** Steps 1–3: the detections the end2end graph would return, best first. */\nfunction selectInstances(head) {\n\tconst { scores, boxes, anchors, classes } = head;\n\tconst best = new Float32Array(anchors);\n\tfor (let a = 0; a < anchors; a++) {\n\t\tlet max = 0;\n\t\tconst row = a * classes;\n\t\tfor (let c = 0; c < classes; c++) {\n\t\t\tconst s = scores[row + c];\n\t\t\tif (s > max) max = s;\n\t\t}\n\t\tbest[a] = max;\n\t}\n\tconst order = [];\n\tfor (let a = 0; a < anchors; a++) if (best[a] > SCORE_FLOOR) order.push(a);\n\torder.sort((x, y) => best[y] - best[x] || x - y);\n\tif (order.length > PRE_NMS) order.length = PRE_NMS;\n\tconst picked = [];\n\tconst candidates = [];\n\tconst kept = [];\n\tfor (let c = 0; c < classes; c++) {\n\t\tcandidates.length = 0;\n\t\tfor (const a of order) if (scores[a * classes + c] > SCORE_FLOOR) candidates.push(a);\n\t\tif (candidates.length === 0) continue;\n\t\tcandidates.sort((x, y) => scores[y * classes + c] - scores[x * classes + c] || x - y);\n\t\tkept.length = 0;\n\t\tfor (const a of candidates) {\n\t\t\tif (kept.length >= MAX_PER_CLASS) break;\n\t\t\tlet suppressed = false;\n\t\t\tfor (const k of kept) if (iou(boxes, a, k) > IOU_THRESHOLD) {\n\t\t\t\tsuppressed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!suppressed) {\n\t\t\t\tkept.push(a);\n\t\t\t\tpicked.push({\n\t\t\t\t\tanchor: a,\n\t\t\t\t\tclassIndex: c,\n\t\t\t\t\tscore: scores[a * classes + c]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\tpicked.sort((x, y) => y.score - x.score);\n\tif (picked.length > MAX_DETECTIONS) picked.length = MAX_DETECTIONS;\n\treturn picked;\n}\nfunction iou(boxes, a, b) {\n\tconst a0 = boxes[a * 4];\n\tconst a1 = boxes[a * 4 + 1];\n\tconst a2 = boxes[a * 4 + 2];\n\tconst a3 = boxes[a * 4 + 3];\n\tconst b0 = boxes[b * 4];\n\tconst b1 = boxes[b * 4 + 1];\n\tconst b2 = boxes[b * 4 + 2];\n\tconst b3 = boxes[b * 4 + 3];\n\tconst w = Math.min(a2, b2) - Math.max(a0, b0);\n\tconst h = Math.min(a3, b3) - Math.max(a1, b1);\n\tif (w <= 0 || h <= 0) return 0;\n\tconst inter = w * h;\n\tconst union = (a2 - a0) * (a3 - a1) + (b2 - b0) * (b3 - b1) - inter;\n\treturn union > 0 ? inter / union : 0;\n}\n/** Anchor position and stride, in input pixels (mmdet point priors, offset 0). */\nfunction anchorPrior(anchor, inputWidth, inputHeight) {\n\tlet base = 0;\n\tfor (const stride of STRIDES) {\n\t\tconst cols = Math.ceil(inputWidth / stride);\n\t\tconst count = cols * Math.ceil(inputHeight / stride);\n\t\tif (anchor < base + count) {\n\t\t\tconst i = anchor - base;\n\t\t\treturn {\n\t\t\t\tx: i % cols * stride,\n\t\t\t\ty: Math.floor(i / cols) * stride,\n\t\t\t\tstride\n\t\t\t};\n\t\t}\n\t\tbase += count;\n\t}\n\tthrow new RangeError(`anchor ${anchor} is out of range`);\n}\n/**\n* Step 4: mask logits for one anchor, `maskHeight × maskWidth`, row-major.\n* Writes into `out` when it is large enough.\n*/\nfunction maskLogits(head, anchor, out) {\n\tconst { kernels, maskFeatures, maskWidth: mw, maskHeight: mh } = head;\n\tconst plane = mw * mh;\n\tconst logits = out && out.length >= plane ? out : new Float32Array(plane);\n\tconst prior = anchorPrior(anchor, head.inputWidth, head.inputHeight);\n\tconst k = kernels.subarray(anchor * KERNEL_SIZE, (anchor + 1) * KERNEL_SIZE);\n\tconst w1 = 0;\n\tconst w2 = 80;\n\tconst w3 = 144;\n\tconst b1 = 152;\n\tconst b2 = 160;\n\tconst b3 = 168;\n\tconst scale = 1 / (prior.stride * MASK_STRIDE);\n\tconst input = new Float32Array(2 + MASK_CHANNELS);\n\tconst hidden1 = new Float32Array(8);\n\tconst hidden2 = new Float32Array(8);\n\tfor (let y = 0; y < mh; y++) {\n\t\tconst relY = (prior.y - y * MASK_STRIDE) * scale;\n\t\tfor (let x = 0; x < mw; x++) {\n\t\t\tconst p = y * mw + x;\n\t\t\tinput[0] = (prior.x - x * MASK_STRIDE) * scale;\n\t\t\tinput[1] = relY;\n\t\t\tfor (let c = 0; c < MASK_CHANNELS; c++) input[2 + c] = maskFeatures[c * plane + p];\n\t\t\tfor (let o = 0; o < 8; o++) {\n\t\t\t\tlet sum$1 = k[b1 + o];\n\t\t\t\tconst row = w1 + o * 10;\n\t\t\t\tfor (let i = 0; i < 10; i++) sum$1 += k[row + i] * input[i];\n\t\t\t\thidden1[o] = sum$1 > 0 ? sum$1 : 0;\n\t\t\t}\n\t\t\tfor (let o = 0; o < 8; o++) {\n\t\t\t\tlet sum$1 = k[b2 + o];\n\t\t\t\tconst row = w2 + o * 8;\n\t\t\t\tfor (let i = 0; i < 8; i++) sum$1 += k[row + i] * hidden1[i];\n\t\t\t\thidden2[o] = sum$1 > 0 ? sum$1 : 0;\n\t\t\t}\n\t\t\tlet sum = k[b3];\n\t\t\tfor (let i = 0; i < 8; i++) sum += k[w3 + i] * hidden2[i];\n\t\t\tlogits[p] = sum;\n\t\t}\n\t}\n\treturn logits;\n}\n\n//#endregion\n//#region src/model/onnx-subgraph.ts\n/**\n* Cuts an ONNX model down to the nodes that compute a chosen set of tensors,\n* which become the graph's outputs. Works on the protobuf wire format directly\n* (only the fields it needs are decoded; everything else is copied byte for\n* byte), so it needs no protobuf library and keeps the weights untouched.\n*\n* Used to run a detector's fixed-shape body on the GPU and do its\n* data-dependent tail (top-k, NMS, mask assembly) ourselves.\n*/\n/** ValueInfoProto for a float tensor of unknown shape. */\nfunction floatOutput(name) {\n\tconst typeProto = lengthDelimited(1, new Uint8Array([8, 1]));\n\treturn concat([lengthDelimited(VALUE_INFO_NAME, encoder.encode(name)), lengthDelimited(2, typeProto)]);\n}\n/**\n* Returns a model whose outputs are `outputs` (tensors of the original graph),\n* keeping only the nodes, initializers and inputs needed to compute them.\n* Output types come from the graph's value_info when present; otherwise they\n* are declared as float tensors.\n*/\nfunction extractSubgraph(model, outputs) {\n\tconst modelFields = fields(model);\n\tconst graphField = modelFields.find((f) => f.number === MODEL_GRAPH$1 && f.wire === WIRE_LEN);\n\tif (!graphField) throw new Error(\"ONNX model has no graph\");\n\tconst graphFields = fields(graphField.body);\n\tconst nodes = graphFields.filter((f) => f.number === GRAPH_NODE$1).map((f) => ({\n\t\tfield: f,\n\t\tinputs: strings(f.body, NODE_INPUT$1),\n\t\toutputs: strings(f.body, NODE_OUTPUT$2)\n\t}));\n\tconst producer = /* @__PURE__ */ new Map();\n\tnodes.forEach((node, index) => {\n\t\tfor (const name of node.outputs) producer.set(name, index);\n\t});\n\tconst keepNode = /* @__PURE__ */ new Set();\n\tconst needed = /* @__PURE__ */ new Set();\n\tconst stack = [...outputs];\n\tfor (const name of outputs) if (!producer.has(name)) throw new Error(`ONNX model has no tensor '${name}'`);\n\twhile (stack.length > 0) {\n\t\tconst name = stack.pop();\n\t\tif (needed.has(name)) continue;\n\t\tneeded.add(name);\n\t\tconst index = producer.get(name);\n\t\tif (index === void 0 || keepNode.has(index)) continue;\n\t\tkeepNode.add(index);\n\t\tfor (const input of nodes[index].inputs) if (input) stack.push(input);\n\t}\n\tconst valueInfo = /* @__PURE__ */ new Map();\n\tfor (const f of graphFields) {\n\t\tif (f.number !== GRAPH_VALUE_INFO) continue;\n\t\tconst name = firstString(f.body, VALUE_INFO_NAME);\n\t\tif (name !== void 0) valueInfo.set(name, f.body);\n\t}\n\tconst parts = [];\n\tlet nodeIndex = 0;\n\tfor (const f of graphFields) switch (f.number) {\n\t\tcase GRAPH_NODE$1:\n\t\t\tif (keepNode.has(nodeIndex)) parts.push(f.raw);\n\t\t\tnodeIndex++;\n\t\t\tbreak;\n\t\tcase GRAPH_INITIALIZER: {\n\t\t\tconst name = firstString(f.body, TENSOR_NAME);\n\t\t\tif (name !== void 0 && needed.has(name)) parts.push(f.raw);\n\t\t\tbreak;\n\t\t}\n\t\tcase GRAPH_INPUT$1:\n\t\tcase GRAPH_VALUE_INFO: {\n\t\t\tconst name = firstString(f.body, VALUE_INFO_NAME);\n\t\t\tif (name !== void 0 && needed.has(name)) parts.push(f.raw);\n\t\t\tbreak;\n\t\t}\n\t\tcase GRAPH_OUTPUT$1: break;\n\t\tdefault: parts.push(f.raw);\n\t}\n\tfor (const name of outputs) parts.push(lengthDelimited(GRAPH_OUTPUT$1, valueInfo.get(name) ?? floatOutput(name)));\n\tconst graph = concat(parts);\n\treturn concat(modelFields.map((f) => f === graphField ? lengthDelimited(MODEL_GRAPH$1, graph) : f.raw));\n}\n\n//#endregion\n//#region src/model/probe-model.ts\nconst MODEL_IR_VERSION = 1;\nconst MODEL_OPSET_IMPORT = 8;\nconst MODEL_GRAPH = 7;\nconst OPSET_VERSION = 2;\nconst GRAPH_NODE = 1;\nconst GRAPH_NAME = 2;\nconst GRAPH_INPUT = 11;\nconst GRAPH_OUTPUT = 12;\nconst NODE_INPUT = 1;\nconst NODE_OUTPUT$1 = 2;\nconst NODE_OP_TYPE$1 = 4;\nconst VALUE_NAME = 1;\nconst VALUE_TYPE = 2;\nconst TYPE_TENSOR = 1;\nconst TENSOR_ELEM_TYPE = 1;\nconst TENSOR_SHAPE = 2;\nconst SHAPE_DIM = 1;\nconst DIM_VALUE = 1;\nconst FLOAT = 1;\nconst text = (field, value) => lengthDelimited(field, encoder.encode(value));\nconst number = (field, value) => new Uint8Array([...varint(field * 8), ...varint(value)]);\nfunction floatVector(name) {\n\tconst dim = lengthDelimited(SHAPE_DIM, number(DIM_VALUE, 1));\n\tconst tensor = concat([number(TENSOR_ELEM_TYPE, FLOAT), lengthDelimited(TENSOR_SHAPE, dim)]);\n\treturn concat([text(VALUE_NAME, name), lengthDelimited(VALUE_TYPE, lengthDelimited(TYPE_TENSOR, tensor))]);\n}\nlet probe;\n/**\n* A one-node ONNX model (`y = Identity(x)`, float[1]). Creating a session from it tells\n* whether an execution provider works here before any real model is downloaded.\n*/\nfunction probeModel() {\n\tprobe ??= concat([\n\t\tnumber(MODEL_IR_VERSION, 8),\n\t\tlengthDelimited(MODEL_OPSET_IMPORT, number(OPSET_VERSION, 13)),\n\t\tlengthDelimited(MODEL_GRAPH, concat([\n\t\t\tlengthDelimited(GRAPH_NODE, concat([\n\t\t\t\ttext(NODE_INPUT, \"x\"),\n\t\t\t\ttext(NODE_OUTPUT$1, \"y\"),\n\t\t\t\ttext(NODE_OP_TYPE$1, \"Identity\")\n\t\t\t])),\n\t\t\ttext(GRAPH_NAME, \"probe\"),\n\t\t\tlengthDelimited(GRAPH_INPUT, floatVector(\"x\")),\n\t\t\tlengthDelimited(GRAPH_OUTPUT, floatVector(\"y\"))\n\t\t]))\n\t]);\n\treturn probe;\n}\n\n//#endregion\n//#region src/model/conv-layout.ts\n/**\n* onnxruntime-web 1.30's WebGPU EP computes grouped convolutions wrong in its\n* default NHWC layout when a group has more than one channel and the count\n* isn't a multiple of 4 (RTMO's head: 18 per group → duplicate skeletons).\n* NCHW is correct but ~30% slower, so only models with such a convolution get\n* it. Depthwise convolutions (one channel per group: RTMDet-Ins, Selfie) are\n* fine in NHWC.\n*/\nconst NODE_OP_TYPE = 4;\nconst NODE_ATTRIBUTE = 5;\nconst NODE_OUTPUT = 2;\nconst ATTR_NAME = 1;\nconst ATTR_I = 3;\nconst ATTR_T = 5;\nconst TENSOR_DIMS = 1;\nfunction varintValues(field) {\n\tconst values = [];\n\tif (field.wire === WIRE_LEN) {\n\t\tlet pos = 0;\n\t\twhile (pos < field.body.length) {\n\t\t\tconst [value, next] = readVarint(field.body, pos);\n\t\t\tvalues.push(value);\n\t\t\tpos = next;\n\t\t}\n\t} else if (field.wire === WIRE_VARINT) {\n\t\tlet pos = 0;\n\t\tpos = readVarint(field.raw, pos)[1];\n\t\tvalues.push(readVarint(field.raw, pos)[0]);\n\t}\n\treturn values;\n}\nfunction tensorDims(tensor) {\n\treturn fields(tensor).filter((f) => f.number === TENSOR_DIMS).flatMap(varintValues);\n}\n/**\n* True when the model has a grouped convolution the NHWC kernels get wrong,\n* and when it can't be read (NCHW is always correct).\n*/\nfunction needsNchwLayout(model) {\n\tlet graph;\n\ttry {\n\t\tgraph = fields(model).find((f) => f.number === MODEL_GRAPH$1 && f.wire === WIRE_LEN);\n\t} catch {\n\t\treturn true;\n\t}\n\tif (!graph) return true;\n\tconst dims = /* @__PURE__ */ new Map();\n\tconst convs = [];\n\tfor (const f of fields(graph.body)) if (f.number === GRAPH_INITIALIZER) {\n\t\tconst name = firstString(f.body, TENSOR_NAME);\n\t\tif (name !== void 0) dims.set(name, tensorDims(f.body));\n\t} else if (f.number === GRAPH_NODE$1) {\n\t\tconst op = firstString(f.body, NODE_OP_TYPE);\n\t\tif (op !== \"Conv\" && op !== \"Constant\") continue;\n\t\tconst attributes = fields(f.body).filter((a) => a.number === NODE_ATTRIBUTE).map((a) => a.body);\n\t\tif (op === \"Constant\") {\n\t\t\tconst value = attributes.find((a) => firstString(a, ATTR_NAME) === \"value\");\n\t\t\tconst tensor = value && fields(value).find((a) => a.number === ATTR_T);\n\t\t\tconst output$1 = strings(f.body, NODE_OUTPUT)[0];\n\t\t\tif (tensor && output$1) dims.set(output$1, tensorDims(tensor.body));\n\t\t\tcontinue;\n\t\t}\n\t\tconst groupAttr = attributes.find((a) => firstString(a, ATTR_NAME) === \"group\");\n\t\tconst groupField = groupAttr && fields(groupAttr).find((a) => a.number === ATTR_I);\n\t\tconst group = groupField ? varintValues(groupField)[0] ?? 1 : 1;\n\t\tconst weight = strings(f.body, NODE_INPUT$1)[1];\n\t\tif (group > 1 && weight) convs.push({\n\t\t\tweight,\n\t\t\tgroup\n\t\t});\n\t}\n\treturn convs.some(({ weight }) => {\n\t\tconst perGroup = dims.get(weight)?.[1];\n\t\treturn perGroup !== void 0 && perGroup > 1 && perGroup % 4 !== 0;\n\t});\n}\n\n//#endregion\n//#region src/runtime/webgpu-provider.ts\n/**\n* Browser / WebGPU session provider .\n*\n* Mirrors `NodeSessionProvider` but uses `onnxruntime-web` with the WebGPU execution provider\n* and a WASM fallback. The ORT module is imported lazily behind an injectable loader, so:\n* - the Node core entry never pulls browser code, and\n* - unit tests can run fully offline with a fake module.\n*\n* `onnxruntime-web` is an OPTIONAL peer dependency — consumers of `@framefields/vision/web`\n* provide it; the main `@framefields/vision` entry never touches it.\n*/\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\tdevice;\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\tthis.device = options.device;\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 createOrtSession(ort, modelBytes, options) {\n\t\ttry {\n\t\t\tconst device = this.device;\n\t\t\tconst layout = needsNchwLayout(modelBytes) ? \"NCHW\" : \"NHWC\";\n\t\t\treturn await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: this._providers.map((name) => withProviderOptions(name, device, layout)),\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\texternalData: options?.externalData?.map(({ path, data }) => ({\n\t\t\t\t\tpath,\n\t\t\t\t\tdata\n\t\t\t\t})),\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\treturn await ort.InferenceSession.create(modelBytes, {\n\t\t\t\texecutionProviders: [\"wasm\"],\n\t\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t\texternalData: options?.externalData?.map(({ path, data }) => ({\n\t\t\t\t\tpath,\n\t\t\t\t\tdata\n\t\t\t\t})),\n\t\t\t\tlogSeverityLevel: 3\n\t\t\t});\n\t\t}\n\t}\n\tasync createSession(modelBytes, options) {\n\t\tconst ort = await this.ort();\n\t\tconst session = await exclusive(ort, () => this.createOrtSession(ort, modelBytes, options));\n\t\tconst runMany = async (inputs) => {\n\t\t\tconst feeds = {};\n\t\t\tfor (const input of inputs) {\n\t\t\t\tconst name = inputs.length === 1 && !session.inputNames.includes(input.name) ? session.inputNames[0] ?? input.name : input.name;\n\t\t\t\tif (input.gpuBuffer && !(input.data instanceof Float32Array)) throw new Error(\"GPU-buffer vision inputs must be float32.\");\n\t\t\t\tfeeds[name] = input.gpuBuffer && ort.Tensor.fromGpuBuffer ? ort.Tensor.fromGpuBuffer(input.gpuBuffer, {\n\t\t\t\t\tdataType: \"float32\",\n\t\t\t\t\tdims: [...input.dims]\n\t\t\t\t}) : new ort.Tensor(input.data instanceof Uint8Array ? \"bool\" : input.data instanceof BigInt64Array ? \"int64\" : input.data instanceof Int32Array ? \"int32\" : \"float32\", input.data, [...input.dims]);\n\t\t\t}\n\t\t\tconst results = await exclusive(ort, () => session.run(feeds));\n\t\t\tconst outputs = {};\n\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\tdata: tensor.data,\n\t\t\t\tdims: [...tensor.dims]\n\t\t\t};\n\t\t\treturn outputs;\n\t\t};\n\t\treturn {\n\t\t\trun: (input) => runMany([input]),\n\t\t\trunMany,\n\t\t\trelease: () => {\n\t\t\t\texclusive(ort, () => session.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* The WebGPU EP runs in NCHW. Its default NHWC layout computes grouped convolutions wrong\n* when the channels per group aren't a multiple of 4 (onnxruntime-web 1.30) — RTMO's head\n* has group=8 convs over 104 channels (13 per group), which turned one dancer into several\n* skeletons. NCHW matches the CPU EP on every pinned model.\n*/\nfunction withProviderOptions(name, device, preferredLayout) {\n\tif (name !== \"webgpu\") return name;\n\treturn device ? {\n\t\tname,\n\t\tpreferredLayout,\n\t\tdevice\n\t} : {\n\t\tname,\n\t\tpreferredLayout\n\t};\n}\n/**\n* ORT Web's WebGPU build takes one call at a time per runtime: a concurrent session create\n* throws, and a run entered while another awaits the GPU corrupts its wasm heap. Every\n* create, run and release on one module therefore queues here.\n*/\nconst queues = /* @__PURE__ */ new WeakMap();\nfunction exclusive(ort, call) {\n\tconst result = (queues.get(ort) ?? Promise.resolve()).then(call, call);\n\tqueues.set(ort, result.catch(() => void 0));\n\treturn result;\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/** CPU rasterizers (lavapipe, llvmpipe, SwiftShader): slower than the CPU EP. */\nconst SOFTWARE_ADAPTER = /llvmpipe|lavapipe|swiftshader|software/i;\n/**\n* Ensure `globalThis.navigator.gpu` exists and has a hardware adapter that\n* onnxruntime-web's WebGPU EP can use. In the renderer this is already the Dawn\n* device; otherwise imports the `webgpu` (Dawn) package and installs its\n* globals. Rejects when the only adapter is a software rasterizer.\n*/\nfunction ensureNodeWebGPU() {\n\tif (!nodeWebGPUReady) {\n\t\tnodeWebGPUReady = (async () => {\n\t\t\tconst g = globalThis;\n\t\t\tif (!g.navigator?.gpu) {\n\t\t\t\tconst { create, globals } = await import(\n\t\t\t\t\t/* @vite-ignore */\n\t\t\t\t\tWEBGPU_SPECIFIER\n);\n\t\t\t\tObject.assign(globalThis, globals);\n\t\t\t\tg.navigator ??= {};\n\t\t\t\tObject.defineProperty(g.navigator, \"gpu\", {\n\t\t\t\t\tvalue: create([]),\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst adapter = await (g.navigator?.gpu).requestAdapter({ powerPreference: \"high-performance\" });\n\t\t\tif (!adapter) throw new Error(\"No WebGPU adapter.\");\n\t\t\tconst info = adapter.info ?? {};\n\t\t\tconst name = [\n\t\t\t\tinfo.vendor,\n\t\t\t\tinfo.architecture,\n\t\t\t\tinfo.device,\n\t\t\t\tinfo.description\n\t\t\t].filter(Boolean).join(\" \");\n\t\t\tif (adapter.isFallbackAdapter === true || info.isFallbackAdapter === true || SOFTWARE_ADAPTER.test(name)) throw new Error(`WebGPU adapter is a software rasterizer (${name}).`);\n\t\t\tpatchSupportedFeatures(adapter.features);\n\t\t})();\n\t\tnodeWebGPUReady.catch(() => {\n\t\t\tnodeWebGPUReady = void 0;\n\t\t});\n\t}\n\treturn nodeWebGPUReady;\n}\n/**\n* Dawn's Node `GPUSupportedFeatures` has `has`/`keys`/`size` but no `forEach`,\n* which onnxruntime-web's WebGPU build calls on adapter and device features\n* (they share the class). Adds the missing set-like methods once.\n*/\nfunction patchSupportedFeatures(features) {\n\tconst proto = Object.getPrototypeOf(features);\n\tif (!proto || typeof proto.keys !== \"function\") return;\n\tif (typeof proto.forEach !== \"function\") Object.defineProperty(proto, \"forEach\", {\n\t\tvalue(callback, thisArg) {\n\t\t\tfor (const key of this.keys()) callback.call(thisArg, key, key, this);\n\t\t},\n\t\tconfigurable: true,\n\t\twritable: true\n\t});\n\tif (typeof proto.values !== \"function\") Object.defineProperty(proto, \"values\", {\n\t\tvalue() {\n\t\t\treturn this.keys();\n\t\t},\n\t\tconfigurable: true,\n\t\twritable: true\n\t});\n\tif (typeof proto.entries !== \"function\") Object.defineProperty(proto, \"entries\", {\n\t\t*value() {\n\t\t\tfor (const key of this.keys()) yield [key, key];\n\t\t},\n\t\tconfigurable: true,\n\t\twritable: true\n\t});\n}\nvar NodeWebGPUProvider = class {\n\tkind = \"webgpu\";\n\tdevice;\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\tif (mod.env?.webgpu) mod.env.webgpu.powerPreference = \"high-performance\";\n\t\t\treturn mod;\n\t\t});\n\t\tthis.device = options.device;\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, options) {\n\t\treturn this._inner.createSession(modelBytes, options);\n\t}\n};\nfunction createNodeWebGPUProvider(options) {\n\treturn new NodeWebGPUProvider(options);\n}\n\n//#endregion\n//#region src/runtime/session-provider.ts\n/** Where a provider's sessions run: its own answer, else WebGPU for WebGPU providers, else CPU. */\nfunction sessionCompute(provider) {\n\tif (provider.backend) return provider.backend();\n\treturn Promise.resolve(provider.kind === \"webgpu\" ? \"webgpu\" : \"cpu\");\n}\nlet defaultProvider;\nlet visionDevice;\n/**\n* The GPU device the default provider runs WebGPU sessions on — the renderer's,\n* so frames can go from its textures into the models without a CPU round trip.\n* Applies to sessions created afterwards; without it, onnxruntime-web creates\n* its own device.\n*/\nfunction setVisionDevice(device) {\n\tvisionDevice = device;\n}\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* Hosts (the renderer) register a listener under this symbol to log the\n* backend; a global keeps it working however the packages are bundled.\n*/\nconst VISION_BACKEND_LISTENER = Symbol.for(\"framefields.vision.backend\");\nfunction reportBackend(info) {\n\tconst listener = globalThis[VISION_BACKEND_LISTENER];\n\tif (typeof listener === \"function\") try {\n\t\tlistener(info);\n\t} catch {}\n}\nfunction requestedVisionBackend() {\n\tconst value = typeof process !== \"undefined\" ? process.env.FRAMEFIELDS_VISION_PROVIDER?.trim().toLowerCase() : void 0;\n\treturn value === \"webgpu\" || value === \"cuda\" || value === \"cpu\" ? value : \"auto\";\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 hardware adapter, no Dawn, or onnxruntime-web not installed. The\n* choice is made on the first session and kept.\n*\n* `FRAMEFIELDS_VISION_PROVIDER` forces one backend instead: `webgpu`, `cpu`, or\n* `cuda` (onnxruntime-node's CUDA EP on Linux x64; needs the CUDA 12 and cuDNN 9\n* libraries). A forced backend that fails throws instead of falling back.\n*/\nvar AutoSessionProvider = class {\n\t_resolved;\n\t_resolving;\n\tget kind() {\n\t\treturn this._resolved?.kind ?? \"webgpu\";\n\t}\n\tget device() {\n\t\treturn this._resolved?.device;\n\t}\n\tasync createSession(modelBytes, options) {\n\t\tif (this._resolved) return this._resolved.createSession(modelBytes, options);\n\t\tif (this._resolving) return (await this._resolving).provider.createSession(modelBytes, options);\n\t\tconst { provider, first } = await this.start(modelBytes, options);\n\t\treturn first ?? provider.createSession(modelBytes, options);\n\t}\n\t/** Where sessions run. Before the first session it decides with a one-node probe graph. */\n\tasync backend() {\n\t\tif (!this._resolved && !this._resolving) (await this.start(probeModel())).first?.release();\n\t\tconst provider = this._resolved ?? (await this._resolving)?.provider;\n\t\tif (!provider) throw new Error(\"No vision backend could be resolved.\");\n\t\treturn sessionCompute(provider);\n\t}\n\tstart(modelBytes, options) {\n\t\tconst resolving = this.resolve(modelBytes, options);\n\t\tthis._resolving = resolving;\n\t\tresolving.then(({ provider }) => {\n\t\t\tthis._resolved = provider;\n\t\t}, () => {\n\t\t\tthis._resolving = void 0;\n\t\t});\n\t\treturn resolving;\n\t}\n\tasync resolve(modelBytes, options) {\n\t\tconst backend = requestedVisionBackend();\n\t\tif (backend === \"cpu\") {\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cpu\",\n\t\t\t\tsharedDevice: false,\n\t\t\t\treason: \"FRAMEFIELDS_VISION_PROVIDER=cpu\"\n\t\t\t});\n\t\t\treturn { provider: new NodeSessionProvider() };\n\t\t}\n\t\tif (backend === \"cuda\") {\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cuda\",\n\t\t\t\tsharedDevice: false\n\t\t\t});\n\t\t\treturn { provider: cudaProvider() };\n\t\t}\n\t\tif (backend === \"auto\" && await hasNvidiaDriver()) try {\n\t\t\tconst first = await new NodeSessionProvider({ executionProviders: [\"cuda\"] }).createSession(modelBytes, options);\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cuda\",\n\t\t\t\tsharedDevice: false\n\t\t\t});\n\t\t\tfirst.release();\n\t\t\treturn { provider: cudaProvider() };\n\t\t} catch {}\n\t\tconst webgpu = new NodeWebGPUProvider({\n\t\t\twasmFallback: false,\n\t\t\tdevice: visionDevice\n\t\t});\n\t\ttry {\n\t\t\tconst first = await webgpu.createSession(modelBytes, options);\n\t\t\treportBackend({\n\t\t\t\tbackend: \"webgpu\",\n\t\t\t\tsharedDevice: !!visionDevice\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tprovider: webgpu,\n\t\t\t\tfirst\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tif (backend === \"webgpu\") throw err;\n\t\t\treportBackend({\n\t\t\t\tbackend: \"cpu\",\n\t\t\t\tsharedDevice: false,\n\t\t\t\treason: err instanceof Error ? err.message : String(err)\n\t\t\t});\n\t\t\treturn { provider: new NodeSessionProvider() };\n\t\t}\n\t}\n};\nfunction cudaProvider() {\n\treturn new NodeSessionProvider({ executionProviders: [\"cuda\", \"cpu\"] });\n}\n/** True on Linux with the NVIDIA kernel driver loaded (checked without touching CUDA). */\nasync function hasNvidiaDriver() {\n\tif (typeof process === \"undefined\" || process.platform !== \"linux\") return false;\n\ttry {\n\t\tconst { access } = await import(\"node:fs/promises\");\n\t\tawait access(\"/proc/driver/nvidia/version\");\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\nlet processProvider;\n/**\n* The provider for a runner created without one: GPU if possible, otherwise CPU.\n* One per process, so the GPU probe runs once however many runners there are.\n*/\nfunction createDefaultSessionProvider() {\n\tif (defaultProvider) return defaultProvider();\n\tprocessProvider ??= new AutoSessionProvider();\n\treturn processProvider;\n}\n/**\n* CPUs this process may use: the affinity mask, capped by a cgroup CPU quota\n* (containers). ONNX Runtime sizes its thread pool from the host's cores, which\n* oversubscribes a container limited to fewer CPUs than the host has.\n*/\nasync function availableCpus() {\n\tconst os = await import(\"node:os\");\n\tconst cpus = typeof os.availableParallelism === \"function\" ? os.availableParallelism() : os.cpus().length;\n\tconst quota = await cgroupCpuQuota();\n\treturn Math.max(1, quota !== void 0 ? Math.min(cpus, quota) : cpus);\n}\n/** cgroup v2 `cpu.max` or v1 `cpu.cfs_quota_us`, in CPUs (rounded up); undefined when unlimited. */\nasync function cgroupCpuQuota() {\n\tif (typeof process === \"undefined\" || process.platform !== \"linux\") return;\n\tconst { readFile: readFile$1 } = await import(\"node:fs/promises\");\n\tconst read = (path) => readFile$1(path, \"utf8\").then((text$1) => text$1.trim(), () => void 0);\n\tconst toCpus = (quota, period) => quota > 0 && period > 0 ? Math.ceil(quota / period) : void 0;\n\tconst v2 = await read(\"/sys/fs/cgroup/cpu.max\");\n\tif (v2 !== void 0) {\n\t\tconst [quota, period] = v2.split(/\\s+/);\n\t\treturn quota === \"max\" ? void 0 : toCpus(Number(quota), Number(period));\n\t}\n\tconst v1Quota = await read(\"/sys/fs/cgroup/cpu/cpu.cfs_quota_us\");\n\tconst v1Period = await read(\"/sys/fs/cgroup/cpu/cpu.cfs_period_us\");\n\tif (v1Quota === void 0 || v1Period === void 0) return void 0;\n\treturn toCpus(Number(v1Quota), Number(v1Period));\n}\n/**\n* Intra-op threads for CPU sessions: `FRAMEFIELDS_VISION_THREADS` when set,\n* else the available CPUs on Linux (where containers cap them), else ONNX\n* Runtime's own default (undefined).\n*/\nasync function cpuSessionThreads() {\n\tconst env = typeof process !== \"undefined\" ? Number.parseInt(process.env.FRAMEFIELDS_VISION_THREADS ?? \"\", 10) : NaN;\n\tif (Number.isFinite(env) && env > 0) return env;\n\tif (typeof process === \"undefined\" || process.platform !== \"linux\") return;\n\treturn availableCpus();\n}\n/** onnxruntime-node provider. The native module is imported lazily on first session. */\nvar NodeSessionProvider = class {\n\tkind = \"node\";\n\t_executionProviders;\n\tconstructor(options = {}) {\n\t\tthis._executionProviders = options.executionProviders ?? [\"cpu\"];\n\t}\n\tbackend() {\n\t\treturn Promise.resolve(this._executionProviders.includes(\"cuda\") ? \"cuda\" : \"cpu\");\n\t}\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, options) {\n\t\tconst ort = await this.ort();\n\t\tconst threads = await cpuSessionThreads();\n\t\tconst session = await ort.InferenceSession.create(modelBytes, {\n\t\t\texecutionProviders: [...this._executionProviders],\n\t\t\texternalData: options?.externalData?.map(({ path, data }) => ({\n\t\t\t\tpath,\n\t\t\t\tdata\n\t\t\t})),\n\t\t\tgraphOptimizationLevel: \"all\",\n\t\t\t...threads !== void 0 ? {\n\t\t\t\tintraOpNumThreads: threads,\n\t\t\t\tinterOpNumThreads: 1\n\t\t\t} : {}\n\t\t});\n\t\tconst runMany = async (inputs) => {\n\t\t\tconst feeds = {};\n\t\t\tfor (const input of inputs) {\n\t\t\t\tconst name = inputs.length === 1 && !session.inputNames.includes(input.name) ? session.inputNames[0] ?? input.name : input.name;\n\t\t\t\tif (input.gpuBuffer) throw new Error(\"CPU vision sessions do not accept GPU buffers.\");\n\t\t\t\tfeeds[name] = input.data instanceof Uint8Array ? new ort.Tensor(\"bool\", input.data, [...input.dims]) : input.data instanceof BigInt64Array ? new ort.Tensor(\"int64\", input.data, [...input.dims]) : input.data instanceof Int32Array ? new ort.Tensor(\"int32\", input.data, [...input.dims]) : new ort.Tensor(\"float32\", input.data, [...input.dims]);\n\t\t\t}\n\t\t\tconst results = await session.run(feeds);\n\t\t\tconst outputs = {};\n\t\t\tfor (const [name, tensor] of Object.entries(results)) outputs[name] = {\n\t\t\t\tdata: tensor.data,\n\t\t\t\tdims: [...tensor.dims]\n\t\t\t};\n\t\t\treturn outputs;\n\t\t};\n\t\treturn {\n\t\t\trun: (input) => runMany([input]),\n\t\t\trunMany,\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/types.ts\nfunction isGpuImage(image) {\n\treturn image.texture !== void 0;\n}\n\n//#endregion\n//#region src/runner/vision-runner.ts\nconst MAX_INSTANCE_PASSES = 4;\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_core;\n\t/** False for derived runners: their sessions belong to the runner they came from. */\n\t_ownsCore;\n\tconstructor(options, core) {\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._ownsCore = core === void 0;\n\t\tthis._core = core ?? {\n\t\t\tstore: options.store ?? new VisionModelStore({\n\t\t\t\tmodelsDir: options.modelsDir,\n\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\t\tonProgress: options.onProgress\n\t\t\t}),\n\t\t\tprovider: options.provider ?? createDefaultSessionProvider(),\n\t\t\tsessions: /* @__PURE__ */ new Map(),\n\t\t\ttensorScratch: /* @__PURE__ */ new Map(),\n\t\t\trunQueue: /* @__PURE__ */ new Map(),\n\t\t\tgpuInputs: /* @__PURE__ */ new Map(),\n\t\t\tinstancePasses: []\n\t\t};\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\t/**\n\t* A runner with other decode options (confidence, classes, mask threshold,\n\t* feather) that shares this runner's models, sessions and per-frame RTMDet-Ins\n\t* pass — e.g. one per layer, without loading a model twice. Its `close()` is a\n\t* no-op; closing this runner releases the shared sessions.\n\t*/\n\tderive(options) {\n\t\treturn new VisionRunner({\n\t\t\tvariant: this.variant,\n\t\t\tconfidence: options.confidence ?? this.confidence,\n\t\t\tclasses: \"classes\" in options ? options.classes : this.classes,\n\t\t\tmaskThreshold: options.maskThreshold ?? this.maskThreshold,\n\t\t\tfeatherRadius: \"featherRadius\" in options ? options.featherRadius : this.featherRadius\n\t\t}, this._core);\n\t}\n\tget modelsDir() {\n\t\treturn this._core.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._core.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._core.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\tmaskPlane: 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\t/** Relative depth of the whole frame (Depth Anything V2 Small), near = 1, at the model's resolution. */\n\tasync depth(image) {\n\t\tconst key = \"depth-anything-v2-s\";\n\t\tconst input = depthInputSize(image.width, image.height, VISION_MODELS[key].input[1]);\n\t\tconst { outputs } = await this.infer(key, image, input);\n\t\tconst predicted = output(outputs, \"predicted_depth\", key);\n\t\tconst dims = predicted.dims;\n\t\treturn decodeDepth(predicted.data, dims[dims.length - 1] ?? input[0], dims[dims.length - 2] ?? input[1]);\n\t}\n\t/**\n\t* Resolves a hard mask's edge to soft alpha (ViTMatte Small): hair, motion\n\t* blur and see-through parts. `mask` is frame-sized, inside where ≥ 128.\n\t* Only a band around the edge changes; one model pass covers every part of\n\t* the mask, cropped to the band and scaled to `resolution`.\n\t*/\n\tasync refineMatte(image, mask, options = {}) {\n\t\tconst { width, height } = image;\n\t\tif (mask.length !== width * height) throw new Error(`refineMatte: the mask has ${mask.length} pixels; the frame has ${width}×${height}.`);\n\t\tconst band = Math.max(1, Math.round(options.band ?? defaultMatteBand(width, height)));\n\t\tconst key = \"vitmatte-s\";\n\t\tconst trimap = trimapFromMask(mask, width, height, band);\n\t\tconst window = matteWindow(trimap, Math.max(32, band * 2), options.resolution ?? VISION_MODELS[key].input[0]);\n\t\tlet alphas = [];\n\t\tif (window) {\n\t\t\tconst pixels = isGpuImage(image) ? await readTexturePixels(image) : image;\n\t\t\talphas = output(await this.queued(key, async () => {\n\t\t\t\tconst session = await this.session(key);\n\t\t\t\tconst scratch = this._core.tensorScratch;\n\t\t\t\tconst data = vitmatteInput(pixels, trimap, window, scratch.get(key));\n\t\t\t\tif (data.buffer !== scratch.get(key)?.buffer) scratch.set(key, data);\n\t\t\t\treturn session.run({\n\t\t\t\t\tname: \"pixel_values\",\n\t\t\t\t\tdata,\n\t\t\t\t\tdims: [\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t4,\n\t\t\t\t\t\twindow.inputHeight,\n\t\t\t\t\t\twindow.inputWidth\n\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t}), \"alphas\", key).data;\n\t\t}\n\t\treturn {\n\t\t\tmask: composeMatte(trimap, window, alphas),\n\t\t\twidth,\n\t\t\theight,\n\t\t\tnearest: trimap.nearest\n\t\t};\n\t}\n\tclose() {\n\t\tif (!this._ownsCore) return;\n\t\tconst core = this._core;\n\t\tfor (const promise of core.sessions.values()) promise.then((session) => session.release()).catch(() => void 0);\n\t\tcore.sessions.clear();\n\t\tcore.runQueue.clear();\n\t\tfor (const { buffer } of core.gpuInputs.values()) buffer.destroy();\n\t\tcore.gpuInputs.clear();\n\t\tcore.instancePasses.length = 0;\n\t\tcore.store.clearMemoryCache();\n\t}\n\tasync instancePass(image) {\n\t\tconst passes = this._core.instancePasses;\n\t\tconst content = isGpuImage(image) ? await FrameTensorPipeline.for(image.device).contentKey(image) : contentKey(image);\n\t\tconst byContent = passes.find((pass$1) => pass$1.content === content);\n\t\tif (byContent) return byContent.result;\n\t\tconst key = this.modelKeyFor(\"segment\");\n\t\tconst result = this.infer(key, image).then(({ outputs, transform }) => ({\n\t\t\ttransform,\n\t\t\toutputs: RTMDET_INS_HEAD.scores in outputs ? headPassOutputs(outputs, key, transform) : end2endPassOutputs(outputs, key)\n\t\t}));\n\t\tconst pass = {\n\t\t\tcontent,\n\t\t\tresult\n\t\t};\n\t\tpasses.push(pass);\n\t\tif (passes.length > MAX_INSTANCE_PASSES) passes.shift();\n\t\tresult.catch(() => {\n\t\t\tconst index = passes.indexOf(pass);\n\t\t\tif (index >= 0) passes.splice(index, 1);\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\t/**\n\t* Runs one model on one image. Runs of the same model are queued: they share\n\t* the input scratch buffer, and one run already uses the session's threads.\n\t*/\n\tinfer(key, image, input) {\n\t\treturn this.queued(key, () => this.inferNow(key, image, input));\n\t}\n\t/** Runs `fn` after the model's earlier runs: one inference per session at a time. */\n\tqueued(key, fn) {\n\t\tconst queue = this._core.runQueue;\n\t\tconst run = (queue.get(key) ?? Promise.resolve()).then(fn, fn);\n\t\tconst tail = run.catch(() => void 0);\n\t\tqueue.set(key, tail);\n\t\ttail.then(() => {\n\t\t\tif (queue.get(key) === tail) queue.delete(key);\n\t\t});\n\t\treturn run;\n\t}\n\tasync inferNow(key, frame, input) {\n\t\tconst session = await this.session(key);\n\t\tconst desc = VISION_MODELS[key];\n\t\tif (!isPreprocessFamily(desc.family)) throw new Error(`VisionRunner cannot run '${desc.family}' models; use the family's own tracker (e.g. Sam2Tracker or Sam3Tracker from @framefields/vision-sam).`);\n\t\tconst spec = preprocessSpec(desc.family, input ?? desc.input);\n\t\tconst dims = [\n\t\t\t1,\n\t\t\t3,\n\t\t\tspec.height,\n\t\t\tspec.width\n\t\t];\n\t\tlet image;\n\t\tif (isGpuImage(frame)) {\n\t\t\tif (this._core.provider.device === frame.device) {\n\t\t\t\tconst buffer = this.gpuInput(key, frame.device, spec);\n\t\t\t\tconst transform$1 = FrameTensorPipeline.for(frame.device).toTensor(frame, spec, buffer);\n\t\t\t\treturn {\n\t\t\t\t\toutputs: await session.run({\n\t\t\t\t\t\tname: \"input\",\n\t\t\t\t\t\tdata: EMPTY_TENSOR,\n\t\t\t\t\t\tgpuBuffer: buffer,\n\t\t\t\t\t\tdims\n\t\t\t\t\t}),\n\t\t\t\t\ttransform: transform$1\n\t\t\t\t};\n\t\t\t}\n\t\t\timage = await readTexturePixels(frame);\n\t\t} else image = frame;\n\t\tconst size = 3 * spec.width * spec.height;\n\t\tconst scratchByKey = this._core.tensorScratch;\n\t\tlet scratch = scratchByKey.get(key);\n\t\tif (!scratch || scratch.length < size) {\n\t\t\tscratch = new Float32Array(size);\n\t\t\tscratchByKey.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}),\n\t\t\ttransform\n\t\t};\n\t}\n\tgpuInput(key, device, spec) {\n\t\tconst inputs = this._core.gpuInputs;\n\t\tconst size = FrameTensorPipeline.tensorBytes(spec);\n\t\tconst current = inputs.get(key);\n\t\tif (current?.device === device && current.buffer.size >= size) return current.buffer;\n\t\tcurrent?.buffer.destroy();\n\t\tconst buffer = device.createBuffer({\n\t\t\tlabel: `vision_input_${key}`,\n\t\t\tsize,\n\t\t\tusage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC\n\t\t});\n\t\tinputs.set(key, {\n\t\t\tdevice,\n\t\t\tbuffer\n\t\t});\n\t\treturn buffer;\n\t}\n\tsession(key) {\n\t\tconst { sessions, store, provider } = this._core;\n\t\tlet promise = sessions.get(key);\n\t\tif (!promise) {\n\t\t\tpromise = store.ensure(key).then((bytes) => provider.createSession(VISION_MODELS[key].family === \"rtmdet-ins\" ? rtmdetInsBody(bytes) : bytes)).catch((err) => {\n\t\t\t\tsessions.delete(key);\n\t\t\t\tstore.evict(key);\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t\tsessions.set(key, promise);\n\t\t}\n\t\treturn promise;\n\t}\n};\nconst EMPTY_TENSOR = new Float32Array(0);\n/**\n* The RTMDet-Ins graph up to its head (see `RTMDET_INS_HEAD`): no NMS or\n* full-size masks in the graph, so the GPU part has fixed shapes and only\n* ~9 MB comes back. Models without those tensors run end to end.\n*/\nfunction rtmdetInsBody(bytes) {\n\ttry {\n\t\treturn extractSubgraph(bytes, Object.values(RTMDET_INS_HEAD));\n\t} catch {\n\t\treturn bytes;\n\t}\n}\n/** Outputs of the end2end graph: NMS done, one input-sized mask per detection. */\nfunction end2endPassOutputs(outputs, key) {\n\tconst dets = output(outputs, \"dets\", key);\n\tconst masks = output(outputs, \"masks\", key);\n\treturn {\n\t\tdets: dets.data,\n\t\tlabels: output(outputs, \"labels\", key).data,\n\t\tmasks: masks.data,\n\t\tcount: dets.dims[1] ?? 0,\n\t\tmaskHeight: masks.dims[masks.dims.length - 2] ?? 0,\n\t\tmaskWidth: masks.dims[masks.dims.length - 1] ?? 0\n\t};\n}\n/** Outputs of the head: selection here, mask logits only for detections asked for. */\nfunction headPassOutputs(outputs, key, transform) {\n\tconst scores = output(outputs, RTMDET_INS_HEAD.scores, key);\n\tconst features = output(outputs, RTMDET_INS_HEAD.maskFeatures, key);\n\tconst head = {\n\t\tscores: scores.data,\n\t\tboxes: output(outputs, RTMDET_INS_HEAD.boxes, key).data,\n\t\tkernels: output(outputs, RTMDET_INS_HEAD.kernels, key).data,\n\t\tmaskFeatures: features.data,\n\t\tanchors: scores.dims[1] ?? 0,\n\t\tclasses: scores.dims[2] ?? 0,\n\t\tmaskHeight: features.dims[2] ?? 0,\n\t\tmaskWidth: features.dims[3] ?? 0,\n\t\tinputWidth: transform.inputWidth,\n\t\tinputHeight: transform.inputHeight\n\t};\n\tconst picked = selectInstances(head);\n\tconst dets = new Float32Array(picked.length * 5);\n\tconst labels = new Int32Array(picked.length);\n\tpicked.forEach(({ anchor, classIndex, score }, i) => {\n\t\tdets.set(head.boxes.subarray(anchor * 4, anchor * 4 + 4), i * 5);\n\t\tdets[i * 5 + 4] = score;\n\t\tlabels[i] = classIndex;\n\t});\n\tconst planes = /* @__PURE__ */ new Map();\n\treturn {\n\t\tdets,\n\t\tlabels,\n\t\tcount: picked.length,\n\t\tmaskWidth: head.maskWidth,\n\t\tmaskHeight: head.maskHeight,\n\t\tmaskLogits: true,\n\t\tmaskPlane: (index) => {\n\t\t\tlet plane = planes.get(index);\n\t\t\tif (!plane) {\n\t\t\t\tplane = maskLogits(head, picked[index].anchor);\n\t\t\t\tplanes.set(index, plane);\n\t\t\t}\n\t\t\treturn plane;\n\t\t}\n\t};\n}\n/** Size plus a 64-bit hash of the pixels: equal keys mean the same picture. */\nfunction contentKey(image) {\n\tconst { data } = image;\n\tconst words = data.byteOffset % 4 === 0 ? data.byteLength >>> 2 : 0;\n\tconst view = new Uint32Array(data.buffer, data.byteOffset, words);\n\tlet h1 = 2166136261;\n\tlet h2 = 16777619 ^ data.byteLength;\n\tfor (let i = 0; i < words; i++) {\n\t\tconst v = view[i];\n\t\th1 = Math.imul(h1 ^ v, 2654435761);\n\t\th2 = Math.imul(h2 ^ v, 2246822519) ^ h1 >>> 15;\n\t}\n\tfor (let i = words * 4; i < data.length; i++) h1 = Math.imul(h1 ^ data[i], 2654435761);\n\treturn `${image.width}x${image.height}:${(h1 >>> 0).toString(36)}:${(h2 >>> 0).toString(36)}`;\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/clip-subject.ts\n/**\n* Where a render-time Vision effect finds subject masks someone already\n* computed for its clip (`comp.vision(clip)` in framefields), so a matte layer\n* reuses them instead of segmenting the frame again, a skeleton layer draws\n* the pose matched to that subject instead of the first person it detects, and\n* a depth layer shows the depth analysed for each frame (not one behind). Set\n* on the Vision effect instance under this key; the renderer reads it from the effect.\n*/\nconst CLIP_SUBJECT = Symbol.for(\"framefields.vision.clipSubject\");\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* `classes` (case-insensitive) limits which instances can be the subject.\n*/\nfunction selectSubjectMask(masks, classes) {\n\tconst allowed = classes && new Set(classes.map((c) => c.toLowerCase()));\n\tlet best;\n\tfor (const m of masks) {\n\t\tif (allowed && !allowed.has(m.category.toLowerCase())) continue;\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.\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* That is why `classes` only picks the subject: a dress detected as a \"kite\" still merges\n* into a \"person\" subject. The size cap keeps containers out: a small figure inside a tunnel\n* or window detected as a huge \"clock\" must not drag the whole frame into the subject.\n*/\nfunction mergeSubjectMask(masks, options = {}) {\n\tconst { classes, overlap = .5, maxGrowth = 2 } = options;\n\tconst subject = selectSubjectMask(masks, classes);\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/signals/mask-object.ts\n/** Tracked-object geometry of one selected mask (bounds, center, velocity), with no detector involved; the track ID is the mask's (default 1). */\nfunction maskObject(mask, frame, fps, score, previous) {\n\tlet left = mask.width, top = mask.height, right = -1, bottom = -1;\n\tfor (let y$1 = 0; y$1 < mask.height; y$1++) for (let x$1 = 0; x$1 < mask.width; x$1++) {\n\t\tif ((mask.mask[y$1 * mask.width + x$1] ?? 0) < 128) continue;\n\t\tleft = Math.min(left, x$1);\n\t\ttop = Math.min(top, y$1);\n\t\tright = Math.max(right, x$1);\n\t\tbottom = Math.max(bottom, y$1);\n\t}\n\tconst active = right >= 0;\n\tconst x = active ? left : 0, y = active ? top : 0;\n\tconst width = active ? right - left + 1 : 0, height = active ? bottom - top + 1 : 0;\n\tconst centerX = x + width / 2, centerY = y + height / 2;\n\tconst vx = active && previous?.active ? (centerX - previous.centerX) * fps : 0;\n\tconst vy = active && previous?.active ? (centerY - previous.centerY) * fps : 0;\n\treturn {\n\t\ttrackId: mask.trackId ?? 1,\n\t\tcategory: mask.category,\n\t\tscore,\n\t\tboundingBox: {\n\t\t\toriginX: x,\n\t\t\toriginY: y,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tnormalizedX: x / mask.width,\n\t\t\tnormalizedY: y / mask.height,\n\t\t\tnormalizedWidth: width / mask.width,\n\t\t\tnormalizedHeight: height / mask.height\n\t\t},\n\t\tcenterX,\n\t\tcenterY,\n\t\tnormalizedCenterX: centerX / mask.width,\n\t\tnormalizedCenterY: centerY / mask.height,\n\t\tvelocity: {\n\t\t\tvx,\n\t\t\tvy\n\t\t},\n\t\tspeed: Math.hypot(vx, vy),\n\t\tage: frame + 1,\n\t\thits: frame + 1,\n\t\tactive,\n\t\tisCoasting: false\n\t};\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$1 = 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$1 >= minIoU) candidateMatches.push({\n\t\t\t\tpersonIdx: p,\n\t\t\t\ttrackId: trk.trackId,\n\t\t\t\tiou: iou$1\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_maskSource;\n\t_matteSource;\n\t_cameraFov;\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._maskSource = options.maskSource;\n\t\tthis._matteSource = options.matteSource;\n\t\tthis._cameraFov = options.cameraFov ?? 60;\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$1 = 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$1 > bestIoU) {\n\t\t\t\t\t\tbestIoU = iou$1;\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\t/** Update source geometry once a lazily decoded clip's size is known. */\n\tsetFrameSize(width, height) {\n\t\tif (this._width === width && this._height === height) return;\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._transformer = new SpatialLandmarkTransformer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tfov: this._cameraFov\n\t\t});\n\t\tthis.invalidateSignals();\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._maskSource?.(frame) ?? 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._matteSource?.(frame) ?? 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\tCLIP_SUBJECT: () => CLIP_SUBJECT,\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\tFrameTensorPipeline: () => FrameTensorPipeline,\n\tGRAPH_INITIALIZER: () => GRAPH_INITIALIZER,\n\tGRAPH_INPUT: () => GRAPH_INPUT$1,\n\tGRAPH_NODE: () => GRAPH_NODE$1,\n\tGRAPH_OUTPUT: () => GRAPH_OUTPUT$1,\n\tGRAPH_VALUE_INFO: () => GRAPH_VALUE_INFO,\n\tMODEL_GRAPH: () => MODEL_GRAPH$1,\n\tNODE_INPUT: () => NODE_INPUT$1,\n\tNODE_OUTPUT: () => NODE_OUTPUT$2,\n\tNodeSessionProvider: () => NodeSessionProvider,\n\tNodeWebGPUProvider: () => NodeWebGPUProvider,\n\tPREPROCESS_BY_FAMILY: () => PREPROCESS_BY_FAMILY,\n\tPoseSkeletonRenderer: () => PoseSkeletonRenderer,\n\tSegmentationTexturePool: () => SegmentationTexturePool,\n\tSpatialLandmarkTransformer: () => SpatialLandmarkTransformer,\n\tTENSOR_NAME: () => TENSOR_NAME,\n\tTRIMAP_BACKGROUND: () => TRIMAP_BACKGROUND,\n\tTRIMAP_FOREGROUND: () => TRIMAP_FOREGROUND,\n\tTRIMAP_UNKNOWN: () => TRIMAP_UNKNOWN,\n\tTemporalObjectTracker: () => TemporalObjectTracker,\n\tVALUE_INFO_NAME: () => VALUE_INFO_NAME,\n\tVISION_BACKEND_LISTENER: () => VISION_BACKEND_LISTENER,\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\tWIRE_I32: () => WIRE_I32,\n\tWIRE_I64: () => WIRE_I64,\n\tWIRE_LEN: () => WIRE_LEN,\n\tWIRE_VARINT: () => WIRE_VARINT,\n\tanalyzeSequence: () => analyzeSequence,\n\tavailableCpus: () => availableCpus,\n\tcomposeMatte: () => composeMatte,\n\tcomputeInputTransform: () => computeInputTransform,\n\tcomputeIoU: () => computeIoU,\n\tconcat: () => concat,\n\tcpuSessionThreads: () => cpuSessionThreads,\n\tcreateDefaultSessionProvider: () => createDefaultSessionProvider,\n\tcreateNeutralLandmarks: () => createNeutralLandmarks,\n\tcreateNeutralObjectResult: () => createNeutralObjectResult,\n\tcreateNeutralPoseResult: () => createNeutralPoseResult,\n\tcreateNodeWebGPUProvider: () => createNodeWebGPUProvider,\n\tcreateVisionBundle: () => createVisionBundle,\n\tdecodeDepth: () => decodeDepth,\n\tdecodeRtmdetIns: () => decodeRtmdetIns,\n\tdecodeRtmo: () => decodeRtmo,\n\tdecodeSelfie: () => decodeSelfie,\n\tdecoder: () => decoder,\n\tdefaultMatteBand: () => defaultMatteBand,\n\tdepthInputSize: () => depthInputSize,\n\tdistanceTransform: () => distanceTransform,\n\tencoder: () => encoder,\n\tensureNodeWebGPU: () => ensureNodeWebGPU,\n\tfields: () => fields,\n\tfirstString: () => firstString,\n\tgetDefaultModelsDir: () => getDefaultModelsDir,\n\tgetPersonBoundingBox: () => getPersonBoundingBox,\n\timageToTensor: () => imageToTensor,\n\tisGpuImage: () => isGpuImage,\n\tisPreprocessFamily: () => isPreprocessFamily,\n\tlengthDelimited: () => lengthDelimited,\n\tlogitToAlpha: () => logitToAlpha,\n\tmaskBounds: () => maskBounds,\n\tmaskObject: () => maskObject,\n\tmatchPoseToTracks: () => matchPoseToTracks,\n\tmatteWindow: () => matteWindow,\n\tmergeSubjectMask: () => mergeSubjectMask,\n\tmodelKeyFor: () => modelKeyFor,\n\tpinNodeToLandmark: () => pinNodeToLandmark,\n\tpinNodeToObject: () => pinNodeToObject,\n\tpreprocessSpec: () => preprocessSpec,\n\tprobabilityToAlpha: () => probabilityToAlpha,\n\treadTexturePixels: () => readTexturePixels,\n\treadVarint: () => readVarint,\n\tregisterVisionModel: () => registerVisionModel,\n\trequestedVisionBackend: () => requestedVisionBackend,\n\tselectSubjectMask: () => selectSubjectMask,\n\tsessionCompute: () => sessionCompute,\n\tsetDefaultSessionProvider: () => setDefaultSessionProvider,\n\tsetVisionDevice: () => setVisionDevice,\n\tstrings: () => strings,\n\ttoSourcePoint: () => toSourcePoint,\n\ttrimapFromMask: () => trimapFromMask,\n\tvarint: () => varint,\n\tvitmatteInput: () => vitmatteInput\n});\n\n//#endregion\nexport { fields as $, WebGPUProvider as A, computeInputTransform as At, GRAPH_VALUE_INFO as B, requestedVisionBackend as C, decodeSelfie as Ct, NodeWebGPUProvider as D, logitToAlpha as Dt, setVisionDevice as E, decodeRtmdetIns as Et, createNeutralPoseResult as F, decodeDepth as Ft, VALUE_INFO_NAME as G, NODE_INPUT$1 as H, GRAPH_INITIALIZER as I, depthInputSize as It, WIRE_LEN as J, WIRE_I32 as K, GRAPH_INPUT$1 as L, analyzeSequence as Lt, hasWebGPU as M, isPreprocessFamily as Mt, createNeutralLandmarks as N, preprocessSpec as Nt, createNodeWebGPUProvider as O, probabilityToAlpha as Ot, createNeutralObjectResult as P, toSourcePoint as Pt, encoder as Q, GRAPH_NODE$1 as R, TemporalObjectTracker as Rt, createDefaultSessionProvider as S, readTexturePixels as St, setDefaultSessionProvider as T, decodeRtmo as Tt, NODE_OUTPUT$2 as U, MODEL_GRAPH$1 as V, TENSOR_NAME as W, concat as X, WIRE_VARINT as Y, decoder as Z, AutoSessionProvider as _, PoseSkeletonRenderer as _t, VisionBundle as a, VisionModelStore as at, availableCpus as b, COCO17_KEYPOINT_NAMES as bt, matchPoseToTracks as c, matteWindow as ct, maskBounds as d, TRIMAP_FOREGROUND as dt, firstString as et, mergeSubjectMask as f, TRIMAP_UNKNOWN as ft, isGpuImage as g, SegmentationTexturePool as gt, VisionRunner as h, trimapFromMask as ht, pinNodeToObject as i, varint as it, createWebGPUProvider as j, imageToTensor as jt, ensureNodeWebGPU as k, PREPROCESS_BY_FAMILY as kt, SpatialLandmarkTransformer as l, vitmatteInput as lt, CLIP_SUBJECT as m, distanceTransform as mt, VisionNode as n, readVarint as nt, createVisionBundle as o, getDefaultModelsDir as ot, selectSubjectMask as p, defaultMatteBand as pt, WIRE_I64 as q, pinNodeToLandmark as r, strings as rt, getPersonBoundingBox as s, composeMatte as st, src_exports as t, lengthDelimited as tt, maskObject as u, TRIMAP_BACKGROUND as ut, NodeSessionProvider as v, COCO17_BONES as vt, sessionCompute as w, COCO17_KEYPOINT_COUNT as wt, cpuSessionThreads as x, FrameTensorPipeline as xt, VISION_BACKEND_LISTENER as y, COCO17_KEYPOINTS as yt, GRAPH_OUTPUT$1 as z, computeIoU as zt };\n//# sourceMappingURL=src-B23p_eh7.mjs.map"],"mappings":"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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;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;GA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"}