framefields 2.9.2 → 2.9.3

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 (319) hide show
  1. package/NOTICE.md +14 -0
  2. package/README.md +1 -5
  3. package/dist/audio/index.d.mts +5 -4
  4. package/dist/audio/index.mjs +13 -13
  5. package/dist/{audio-BfQg37MW.mjs → audio-B6RmYOPe.mjs} +4 -4
  6. package/dist/{audio-BfQg37MW.mjs.map → audio-B6RmYOPe.mjs.map} +1 -1
  7. package/dist/{audio-a0MFkK6J.mjs → audio-BlDbnteH.mjs} +1 -1
  8. package/dist/{audio-a0MFkK6J.mjs.map → audio-BlDbnteH.mjs.map} +1 -1
  9. package/dist/{audio-Ccpl9mjV.d.mts → audio-D6tBMbHh.d.mts} +4 -3
  10. package/dist/audio-D6tBMbHh.d.mts.map +1 -0
  11. package/dist/{check-result-C3jlgV2i.mjs → check-result-Bj7g62ka.mjs} +1 -1
  12. package/dist/{check-result-C3jlgV2i.mjs.map → check-result-Bj7g62ka.mjs.map} +1 -1
  13. package/dist/cli/check-worker.mjs +50 -50
  14. package/dist/cli.mjs +1 -1
  15. package/dist/components/index.d.mts +14 -11
  16. package/dist/components/index.mjs +47 -47
  17. package/dist/dist-BlulwErl.mjs +3 -0
  18. package/dist/{dist-BlIrsfcn.mjs → dist-ByxHoMQI.mjs} +1 -1
  19. package/dist/{dist-BlIrsfcn.mjs.map → dist-ByxHoMQI.mjs.map} +1 -1
  20. package/dist/{dist-Buaaj-Ul.mjs → dist-Cn8bDsQF.mjs} +1 -1
  21. package/dist/{dist-Buaaj-Ul.mjs.map → dist-Cn8bDsQF.mjs.map} +1 -1
  22. package/dist/{dist-C1cCW7Bt.mjs → dist-D12-a3-x.mjs} +3 -3
  23. package/dist/{dist-C1cCW7Bt.mjs.map → dist-D12-a3-x.mjs.map} +1 -1
  24. package/dist/{dist-C8Xq3zgx.mjs → dist-DEUU6sNe.mjs} +4 -4
  25. package/dist/{dist-C8Xq3zgx.mjs.map → dist-DEUU6sNe.mjs.map} +1 -1
  26. package/dist/{dist-DVMepKaO.mjs → dist-DL1GwJvs.mjs} +2 -2
  27. package/dist/{dist-DVMepKaO.mjs.map → dist-DL1GwJvs.mjs.map} +1 -1
  28. package/dist/dist-Dq5TkNDI.mjs +1434 -0
  29. package/dist/dist-Dq5TkNDI.mjs.map +1 -0
  30. package/dist/effects/index.d.mts +6 -4
  31. package/dist/effects/index.mjs +36 -36
  32. package/dist/{effects-CemgqEPv.mjs → effects-CViUoQSV.mjs} +3 -3
  33. package/dist/{effects-CemgqEPv.mjs.map → effects-CViUoQSV.mjs.map} +1 -1
  34. package/dist/fonts/index.d.mts +1 -1
  35. package/dist/fonts/index.mjs +3 -3
  36. package/dist/{fonts-BW0pPcvJ.mjs → fonts-B0U2KO5I.mjs} +2 -2
  37. package/dist/{fonts-BW0pPcvJ.mjs.map → fonts-B0U2KO5I.mjs.map} +1 -1
  38. package/dist/{gpu-CMaa63nz.mjs → gpu-zFNrvhV9.mjs} +2 -2
  39. package/dist/{gpu-CMaa63nz.mjs.map → gpu-zFNrvhV9.mjs.map} +1 -1
  40. package/dist/index-9_4X2ro1.d.mts +2402 -0
  41. package/dist/index-9_4X2ro1.d.mts.map +1 -0
  42. package/dist/{index-Bnh42ouE.d.mts → index-B9Lm1x8i.d.mts} +9 -8
  43. package/dist/index-B9Lm1x8i.d.mts.map +1 -0
  44. package/dist/{index-BfDFmIBE.d.mts → index-BuYtrhzL.d.mts} +1 -1
  45. package/dist/{index-BfDFmIBE.d.mts.map → index-BuYtrhzL.d.mts.map} +1 -1
  46. package/dist/{index-D5UDyVMb.d.mts → index-Bzo1uj8h.d.mts} +4 -2401
  47. package/dist/index-Bzo1uj8h.d.mts.map +1 -0
  48. package/dist/{index-CQ-bbZk3.d.mts → index-C6GcuYVA.d.mts} +6 -1164
  49. package/dist/index-C6GcuYVA.d.mts.map +1 -0
  50. package/dist/{index-BIjMAW1h.d.mts → index-CgGM31I9.d.mts} +2 -2
  51. package/dist/{index-BIjMAW1h.d.mts.map → index-CgGM31I9.d.mts.map} +1 -1
  52. package/dist/index-DBhswLMO.d.mts +330 -0
  53. package/dist/index-DBhswLMO.d.mts.map +1 -0
  54. package/dist/{index-CJL0JAU8.d.mts → index-V0ZQ4JN6.d.mts} +2 -2
  55. package/dist/{index-CJL0JAU8.d.mts.map → index-V0ZQ4JN6.d.mts.map} +1 -1
  56. package/dist/{index-7Z9_a_iB.d.mts → index-f4IF1vRH.d.mts} +3 -3
  57. package/dist/{index-7Z9_a_iB.d.mts.map → index-f4IF1vRH.d.mts.map} +1 -1
  58. package/dist/index-svAgwTY_.d.mts +1163 -0
  59. package/dist/index-svAgwTY_.d.mts.map +1 -0
  60. package/dist/{index-CFoAmh7q.d.mts → index-w28KUM9A.d.mts} +3 -3
  61. package/dist/{index-CFoAmh7q.d.mts.map → index-w28KUM9A.d.mts.map} +1 -1
  62. package/dist/index.d.mts +15 -12
  63. package/dist/index.mjs +58 -57
  64. package/dist/preview/index.d.mts +4 -3
  65. package/dist/preview/index.mjs +12 -12
  66. package/dist/{preview-DvP8AZuV.mjs → preview-ZKJ_zTmd.mjs} +3 -3
  67. package/dist/{preview-DvP8AZuV.mjs.map → preview-ZKJ_zTmd.mjs.map} +1 -1
  68. package/dist/preview-engine/{chunk-KXLXP66K.mjs → chunk-Q62GPWGD.mjs} +23 -23
  69. package/dist/preview-engine/components.mjs +1 -1
  70. package/dist/preview-engine/framefields.mjs +1 -1
  71. package/dist/{program-CKpKkllV.mjs → program-xjIwjKb6.mjs} +4 -4
  72. package/dist/{program-CKpKkllV.mjs.map → program-xjIwjKb6.mjs.map} +1 -1
  73. package/dist/renderer/index.d.mts +3 -2
  74. package/dist/renderer/index.mjs +3 -3
  75. package/dist/renderer-129U3pc9.mjs +5 -0
  76. package/dist/renderer-2phFTFxQ.mjs +5 -0
  77. package/dist/{renderer-Bfk6A7UO.mjs → renderer-5qJPGvVL.mjs} +5 -5
  78. package/dist/{renderer-Bfk6A7UO.mjs.map → renderer-5qJPGvVL.mjs.map} +1 -1
  79. package/dist/renderer-9muKpDeE.mjs +5 -0
  80. package/dist/{renderer-B522Dkdk.mjs → renderer-AUK_ZS3p.mjs} +4 -4
  81. package/dist/{renderer-B522Dkdk.mjs.map → renderer-AUK_ZS3p.mjs.map} +1 -1
  82. package/dist/{renderer-DKgPVOLL.d.mts → renderer-B-inTgyb.d.mts} +2 -2
  83. package/dist/{renderer-DKgPVOLL.d.mts.map → renderer-B-inTgyb.d.mts.map} +1 -1
  84. package/dist/{renderer-BF0hx_iJ.mjs → renderer-B3IRvukr.mjs} +5 -5
  85. package/dist/{renderer-BF0hx_iJ.mjs.map → renderer-B3IRvukr.mjs.map} +1 -1
  86. package/dist/renderer-B5Dhv6j9.mjs +5 -0
  87. package/dist/{renderer-DO-KbpYZ.mjs → renderer-B6TjJi1g.mjs} +5 -5
  88. package/dist/{renderer-DO-KbpYZ.mjs.map → renderer-B6TjJi1g.mjs.map} +1 -1
  89. package/dist/{renderer-D61B9bXF.mjs → renderer-B78W9uad.mjs} +4 -4
  90. package/dist/{renderer-D61B9bXF.mjs.map → renderer-B78W9uad.mjs.map} +1 -1
  91. package/dist/{renderer-BPWDsufX.mjs → renderer-B7kOF_Az.mjs} +3 -3
  92. package/dist/{renderer-BPWDsufX.mjs.map → renderer-B7kOF_Az.mjs.map} +1 -1
  93. package/dist/renderer-BBUgCS3C.mjs +5 -0
  94. package/dist/{renderer-C7eFJf0_.mjs → renderer-BG6bkKtY.mjs} +5 -5
  95. package/dist/{renderer-C7eFJf0_.mjs.map → renderer-BG6bkKtY.mjs.map} +1 -1
  96. package/dist/{renderer-B39I6CQw.mjs → renderer-BJKzZwyn.mjs} +4 -4
  97. package/dist/{renderer-B39I6CQw.mjs.map → renderer-BJKzZwyn.mjs.map} +1 -1
  98. package/dist/{renderer-DqvoMLca.mjs → renderer-BJQt0RiZ.mjs} +5 -5
  99. package/dist/{renderer-DqvoMLca.mjs.map → renderer-BJQt0RiZ.mjs.map} +1 -1
  100. package/dist/renderer-BKXM28Mx.mjs +5 -0
  101. package/dist/renderer-BKqm6xdf.mjs +5 -0
  102. package/dist/{renderer-DiY70S8S.mjs → renderer-BMP_lYMk.mjs} +4 -4
  103. package/dist/{renderer-DiY70S8S.mjs.map → renderer-BMP_lYMk.mjs.map} +1 -1
  104. package/dist/renderer-BMfMMf0R.mjs +5 -0
  105. package/dist/{renderer-DkRSZg5g.mjs → renderer-BNbMi9CI.mjs} +5 -5
  106. package/dist/{renderer-DkRSZg5g.mjs.map → renderer-BNbMi9CI.mjs.map} +1 -1
  107. package/dist/{renderer-D7Al3_-5.mjs → renderer-BPYIqtNg.mjs} +5 -5
  108. package/dist/{renderer-D7Al3_-5.mjs.map → renderer-BPYIqtNg.mjs.map} +1 -1
  109. package/dist/renderer-BPsjEnnl.mjs +5 -0
  110. package/dist/{renderer-DDEkFbVI.mjs → renderer-BQOeeXTr.mjs} +5 -5
  111. package/dist/{renderer-DDEkFbVI.mjs.map → renderer-BQOeeXTr.mjs.map} +1 -1
  112. package/dist/{renderer-GBmWjBvy.mjs → renderer-BRWjLiHX.mjs} +3 -3
  113. package/dist/{renderer-GBmWjBvy.mjs.map → renderer-BRWjLiHX.mjs.map} +1 -1
  114. package/dist/{renderer-_iMAO698.mjs → renderer-BVql26Ay.mjs} +2 -2
  115. package/dist/{renderer-_iMAO698.mjs.map → renderer-BVql26Ay.mjs.map} +1 -1
  116. package/dist/{renderer-CHr7MiYW.mjs → renderer-BWMzjSgf.mjs} +5 -5
  117. package/dist/{renderer-CHr7MiYW.mjs.map → renderer-BWMzjSgf.mjs.map} +1 -1
  118. package/dist/{renderer-pHWEHDnM.mjs → renderer-BYqrtBvd.mjs} +5 -5
  119. package/dist/{renderer-pHWEHDnM.mjs.map → renderer-BYqrtBvd.mjs.map} +1 -1
  120. package/dist/{renderer-CwFqqpWY.mjs → renderer-BZmmekE8.mjs} +4 -4
  121. package/dist/{renderer-CwFqqpWY.mjs.map → renderer-BZmmekE8.mjs.map} +1 -1
  122. package/dist/{renderer-D47AEJE_.mjs → renderer-BcO7LUla.mjs} +3 -3
  123. package/dist/{renderer-D47AEJE_.mjs.map → renderer-BcO7LUla.mjs.map} +1 -1
  124. package/dist/{renderer-BlvGcyAN.mjs → renderer-BdbI_u9w.mjs} +3 -3
  125. package/dist/{renderer-BlvGcyAN.mjs.map → renderer-BdbI_u9w.mjs.map} +1 -1
  126. package/dist/{renderer-DPAD6fL1.mjs → renderer-Be5hfwSd.mjs} +74 -74
  127. package/dist/{renderer-DPAD6fL1.mjs.map → renderer-Be5hfwSd.mjs.map} +1 -1
  128. package/dist/{renderer-BAYTI6jj.mjs → renderer-BfbSvElt.mjs} +4 -4
  129. package/dist/{renderer-BAYTI6jj.mjs.map → renderer-BfbSvElt.mjs.map} +1 -1
  130. package/dist/{renderer-BpIF1QIE.mjs → renderer-BgDLCCuq.mjs} +5 -5
  131. package/dist/{renderer-BpIF1QIE.mjs.map → renderer-BgDLCCuq.mjs.map} +1 -1
  132. package/dist/renderer-Bofr6f88.mjs +6 -0
  133. package/dist/renderer-BqoGcujR.mjs +5 -0
  134. package/dist/renderer-BvuBt2aH.mjs +5 -0
  135. package/dist/renderer-BxTgXHu1.mjs +5 -0
  136. package/dist/renderer-Bz2Rrz60.mjs +5 -0
  137. package/dist/{renderer-g_vrrAQU.mjs → renderer-C06U4c9k.mjs} +3 -3
  138. package/dist/{renderer-g_vrrAQU.mjs.map → renderer-C06U4c9k.mjs.map} +1 -1
  139. package/dist/{renderer-D7r6onRT.mjs → renderer-C3Iev6zu.mjs} +4 -4
  140. package/dist/{renderer-D7r6onRT.mjs.map → renderer-C3Iev6zu.mjs.map} +1 -1
  141. package/dist/{renderer-CpUJBOfb.mjs → renderer-C3tVrzyT.mjs} +3 -3
  142. package/dist/{renderer-SWr3vbrV.mjs → renderer-C4yKI8MT.mjs} +3 -3
  143. package/dist/{renderer-SWr3vbrV.mjs.map → renderer-C4yKI8MT.mjs.map} +1 -1
  144. package/dist/{renderer-Xv6GfNUI.mjs → renderer-C6st34I6.mjs} +3 -3
  145. package/dist/{renderer-Xv6GfNUI.mjs.map → renderer-C6st34I6.mjs.map} +1 -1
  146. package/dist/{renderer-sCovEubT.mjs → renderer-C7MAqpIS.mjs} +4 -4
  147. package/dist/{renderer-sCovEubT.mjs.map → renderer-C7MAqpIS.mjs.map} +1 -1
  148. package/dist/renderer-CBjG8rjE.mjs +5 -0
  149. package/dist/{renderer-BAusZ6Vu.mjs → renderer-CCFHnafT.mjs} +4 -4
  150. package/dist/{renderer-BAusZ6Vu.mjs.map → renderer-CCFHnafT.mjs.map} +1 -1
  151. package/dist/{renderer-DVCJjVn7.mjs → renderer-CDVb4OfJ.mjs} +5 -5
  152. package/dist/{renderer-DVCJjVn7.mjs.map → renderer-CDVb4OfJ.mjs.map} +1 -1
  153. package/dist/{renderer-DpruWmZU.mjs → renderer-CEfVvcw-.mjs} +4 -4
  154. package/dist/{renderer-DpruWmZU.mjs.map → renderer-CEfVvcw-.mjs.map} +1 -1
  155. package/dist/{renderer-DbRZe0Re.mjs → renderer-CIB5L_C4.mjs} +5 -5
  156. package/dist/{renderer-DbRZe0Re.mjs.map → renderer-CIB5L_C4.mjs.map} +1 -1
  157. package/dist/{renderer-ktWXVYka.mjs → renderer-CPTXJs0n.mjs} +6 -6
  158. package/dist/{renderer-ktWXVYka.mjs.map → renderer-CPTXJs0n.mjs.map} +1 -1
  159. package/dist/renderer-CS2zyPyZ.mjs +5 -0
  160. package/dist/{renderer-CcvvoKiZ.mjs → renderer-CUBDxuxh.mjs} +5 -5
  161. package/dist/{renderer-CcvvoKiZ.mjs.map → renderer-CUBDxuxh.mjs.map} +1 -1
  162. package/dist/renderer-CWLF6cAz.mjs +1008 -0
  163. package/dist/renderer-CWLF6cAz.mjs.map +1 -0
  164. package/dist/{renderer-EaLUCobW.mjs → renderer-CXLugAe8.mjs} +4 -4
  165. package/dist/{renderer-EaLUCobW.mjs.map → renderer-CXLugAe8.mjs.map} +1 -1
  166. package/dist/renderer-CXnbl_jR.mjs +5 -0
  167. package/dist/{renderer-C7L8Ceqr.mjs → renderer-CYX9vKZ-.mjs} +4 -4
  168. package/dist/{renderer-C7L8Ceqr.mjs.map → renderer-CYX9vKZ-.mjs.map} +1 -1
  169. package/dist/{renderer-8QIwXh7O.mjs → renderer-C_2UDMEG.mjs} +6 -6
  170. package/dist/{renderer-8QIwXh7O.mjs.map → renderer-C_2UDMEG.mjs.map} +1 -1
  171. package/dist/renderer-CaF9vod_.mjs +5 -0
  172. package/dist/renderer-CbSBH3lp.mjs +5 -0
  173. package/dist/{renderer-B2jjxsjO.mjs → renderer-CbhnJi_8.mjs} +4 -4
  174. package/dist/{renderer-B2jjxsjO.mjs.map → renderer-CbhnJi_8.mjs.map} +1 -1
  175. package/dist/{renderer-BdyopiLC.mjs → renderer-CcJyD9Q5.mjs} +4 -4
  176. package/dist/{renderer-BdyopiLC.mjs.map → renderer-CcJyD9Q5.mjs.map} +1 -1
  177. package/dist/renderer-CdjuGRbO.mjs +5 -0
  178. package/dist/{renderer-DF-yvIrV.mjs → renderer-Cl8r1LJe.mjs} +4 -4
  179. package/dist/{renderer-DF-yvIrV.mjs.map → renderer-Cl8r1LJe.mjs.map} +1 -1
  180. package/dist/renderer-CoLbxC13.mjs +5 -0
  181. package/dist/{renderer-BgO6BA_z.mjs → renderer-CpedZNEG.mjs} +3 -3
  182. package/dist/{renderer-BgO6BA_z.mjs.map → renderer-CpedZNEG.mjs.map} +1 -1
  183. package/dist/renderer-Cr9G0dXB.mjs +5 -0
  184. package/dist/{renderer-bAKUeHF3.mjs → renderer-CwVbHki6.mjs} +5 -5
  185. package/dist/{renderer-bAKUeHF3.mjs.map → renderer-CwVbHki6.mjs.map} +1 -1
  186. package/dist/{renderer-DTqDy2m9.mjs → renderer-CyCtm0UV.mjs} +3 -3
  187. package/dist/{renderer-DTqDy2m9.mjs.map → renderer-CyCtm0UV.mjs.map} +1 -1
  188. package/dist/{renderer-CYC32bDW.mjs → renderer-D1VsqFf4.mjs} +5 -5
  189. package/dist/{renderer-CYC32bDW.mjs.map → renderer-D1VsqFf4.mjs.map} +1 -1
  190. package/dist/{renderer-CCycwCEB.mjs → renderer-D2TTDcgh.mjs} +3 -3
  191. package/dist/{renderer-CCycwCEB.mjs.map → renderer-D2TTDcgh.mjs.map} +1 -1
  192. package/dist/renderer-D63l6_UC.mjs +5 -0
  193. package/dist/renderer-DCJqnzER.mjs +5 -0
  194. package/dist/{renderer-cod5Ona9.mjs → renderer-DEQeONTd.mjs} +3 -3
  195. package/dist/renderer-DFBOR5J3.mjs +5 -0
  196. package/dist/renderer-DGAZSzw6.mjs +5 -0
  197. package/dist/{renderer-oKRF4A0M.mjs → renderer-DH7l5WFr.mjs} +4 -4
  198. package/dist/{renderer-oKRF4A0M.mjs.map → renderer-DH7l5WFr.mjs.map} +1 -1
  199. package/dist/{renderer-DNQvOrkY.mjs → renderer-DIEmK57T.mjs} +5 -5
  200. package/dist/{renderer-DNQvOrkY.mjs.map → renderer-DIEmK57T.mjs.map} +1 -1
  201. package/dist/{renderer-DEmYyaqj.mjs → renderer-DIqkhsLI.mjs} +4 -4
  202. package/dist/{renderer-DEmYyaqj.mjs.map → renderer-DIqkhsLI.mjs.map} +1 -1
  203. package/dist/{renderer-DX41niRU.mjs → renderer-DOKHd37M.mjs} +4 -4
  204. package/dist/{renderer-DX41niRU.mjs.map → renderer-DOKHd37M.mjs.map} +1 -1
  205. package/dist/renderer-DPLGk1Qk.mjs +5 -0
  206. package/dist/renderer-DTCUzByS.mjs +5 -0
  207. package/dist/{renderer-BXJXziIt.mjs → renderer-DW7hbluw.mjs} +3 -3
  208. package/dist/{renderer-BXJXziIt.mjs.map → renderer-DW7hbluw.mjs.map} +1 -1
  209. package/dist/{renderer--fkmiVjl.mjs → renderer-Dat8opUZ.mjs} +4 -4
  210. package/dist/{renderer--fkmiVjl.mjs.map → renderer-Dat8opUZ.mjs.map} +1 -1
  211. package/dist/renderer-DdGahYi1.mjs +5 -0
  212. package/dist/{renderer-DmkWrWAk.mjs → renderer-Dee8ksIV.mjs} +3 -3
  213. package/dist/{renderer-DmkWrWAk.mjs.map → renderer-Dee8ksIV.mjs.map} +1 -1
  214. package/dist/renderer-DhL4nNPk.mjs +5 -0
  215. package/dist/renderer-DkyTbiVz.mjs +3 -0
  216. package/dist/renderer-DnAZweRX.mjs +5 -0
  217. package/dist/{renderer-BX7jS14r.d.mts → renderer-DoPEPlbG.d.mts} +3 -2
  218. package/dist/{renderer-BX7jS14r.d.mts.map → renderer-DoPEPlbG.d.mts.map} +1 -1
  219. package/dist/renderer-DpisVnT2.mjs +5 -0
  220. package/dist/{renderer-mNSyac1V.mjs → renderer-DrWeb39d.mjs} +1 -1
  221. package/dist/{renderer-mNSyac1V.mjs.map → renderer-DrWeb39d.mjs.map} +1 -1
  222. package/dist/renderer-Ds7pAKnE.mjs +3 -0
  223. package/dist/{renderer-CiQhD8Gg.mjs → renderer-Dss7T71q.mjs} +5 -5
  224. package/dist/{renderer-CiQhD8Gg.mjs.map → renderer-Dss7T71q.mjs.map} +1 -1
  225. package/dist/{renderer-C41U1tK6.mjs → renderer-Du-GnKLb.mjs} +9 -9
  226. package/dist/{renderer-C41U1tK6.mjs.map → renderer-Du-GnKLb.mjs.map} +1 -1
  227. package/dist/renderer-DxZD5B54.mjs +5 -0
  228. package/dist/{renderer-WCZu2Rf5.mjs → renderer-ESkPj6pk.mjs} +4 -4
  229. package/dist/{renderer-WCZu2Rf5.mjs.map → renderer-ESkPj6pk.mjs.map} +1 -1
  230. package/dist/{renderer-DMvmf3T2.mjs → renderer-F1D9ZJ8I.mjs} +3 -3
  231. package/dist/{renderer-BlPqTEii.mjs → renderer-HnSiwSW8.mjs} +4 -4
  232. package/dist/{renderer-BlPqTEii.mjs.map → renderer-HnSiwSW8.mjs.map} +1 -1
  233. package/dist/{renderer-1r-Uq-Ae.mjs → renderer-IQ97z2rw.mjs} +3 -3
  234. package/dist/{renderer-1r-Uq-Ae.mjs.map → renderer-IQ97z2rw.mjs.map} +1 -1
  235. package/dist/{renderer-DFzI3yI_.mjs → renderer-NTCk1Srf.mjs} +3 -3
  236. package/dist/{renderer-DFzI3yI_.mjs.map → renderer-NTCk1Srf.mjs.map} +1 -1
  237. package/dist/{renderer-D8bBHrWC.mjs → renderer-OsQRvOle.mjs} +5 -5
  238. package/dist/{renderer-D8bBHrWC.mjs.map → renderer-OsQRvOle.mjs.map} +1 -1
  239. package/dist/renderer-PMHOnbnA.mjs +5 -0
  240. package/dist/renderer-STufNpMx.mjs +5 -0
  241. package/dist/renderer-SdrgfCxH.mjs +5 -0
  242. package/dist/{renderer-Lth37j17.mjs → renderer-US4GsamT.mjs} +3 -3
  243. package/dist/{renderer-zXPVLRlD.mjs → renderer-VhkubIx_.mjs} +5 -5
  244. package/dist/{renderer-zXPVLRlD.mjs.map → renderer-VhkubIx_.mjs.map} +1 -1
  245. package/dist/{renderer-DIw3UtEU.mjs → renderer-bbaMOD4I.mjs} +5 -5
  246. package/dist/{renderer-DIw3UtEU.mjs.map → renderer-bbaMOD4I.mjs.map} +1 -1
  247. package/dist/{renderer-hSCfnvaK.mjs → renderer-eT7Gp7FS.mjs} +5 -5
  248. package/dist/{renderer-hSCfnvaK.mjs.map → renderer-eT7Gp7FS.mjs.map} +1 -1
  249. package/dist/{renderer-CQvmbRQ5.mjs → renderer-g7fF2AYk.mjs} +5 -5
  250. package/dist/{renderer-CQvmbRQ5.mjs.map → renderer-g7fF2AYk.mjs.map} +1 -1
  251. package/dist/{renderer-B-ur0Ej8.mjs → renderer-mLlgfM7X.mjs} +4 -4
  252. package/dist/{renderer-B-ur0Ej8.mjs.map → renderer-mLlgfM7X.mjs.map} +1 -1
  253. package/dist/{renderer-SSBL4M1o.mjs → renderer-mQt-y49D.mjs} +5 -5
  254. package/dist/{renderer-SSBL4M1o.mjs.map → renderer-mQt-y49D.mjs.map} +1 -1
  255. package/dist/{renderer-BIGFP1cF.mjs → renderer-q4zMFfnY.mjs} +2 -2
  256. package/dist/{renderer-BIGFP1cF.mjs.map → renderer-q4zMFfnY.mjs.map} +1 -1
  257. package/dist/{renderer-DXEWbnRF.mjs → renderer-sPI7aY6c.mjs} +4 -4
  258. package/dist/{renderer-DXEWbnRF.mjs.map → renderer-sPI7aY6c.mjs.map} +1 -1
  259. package/dist/{renderer-sYSkIUfo.mjs → renderer-xDV2cCkX.mjs} +5 -5
  260. package/dist/{renderer-sYSkIUfo.mjs.map → renderer-xDV2cCkX.mjs.map} +1 -1
  261. package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs → renderers-CP8CFWDs-BH1gUTYa.mjs} +4 -4
  262. package/dist/{renderers-CP8CFWDs-DH2oktaC.mjs.map → renderers-CP8CFWDs-BH1gUTYa.mjs.map} +1 -1
  263. package/dist/sam/index.d.mts +4 -0
  264. package/dist/sam/index.mjs +3 -0
  265. package/dist/signals/index.d.mts +7 -6
  266. package/dist/signals/index.mjs +8 -8
  267. package/dist/{signals-CXwgAUp-.mjs → signals-gOd0Ui9B.mjs} +4 -4
  268. package/dist/{signals-CXwgAUp-.mjs.map → signals-gOd0Ui9B.mjs.map} +1 -1
  269. package/dist/{src-DFEqficI.mjs → src-BU1VOWSk.mjs} +12 -18
  270. package/dist/src-BU1VOWSk.mjs.map +1 -0
  271. package/dist/{renderer-B2P1vgb7.mjs → src-Bnr8DUC--DzkRGA62.mjs} +8 -1008
  272. package/dist/src-Bnr8DUC--DzkRGA62.mjs.map +1 -0
  273. package/package.json +69 -69
  274. package/dist/audio-Ccpl9mjV.d.mts.map +0 -1
  275. package/dist/index-Bnh42ouE.d.mts.map +0 -1
  276. package/dist/index-CQ-bbZk3.d.mts.map +0 -1
  277. package/dist/index-D5UDyVMb.d.mts.map +0 -1
  278. package/dist/renderer--Ac-dg4A.mjs +0 -5
  279. package/dist/renderer--N7TMqzU.mjs +0 -5
  280. package/dist/renderer-2ecmdOae.mjs +0 -5
  281. package/dist/renderer-B2P1vgb7.mjs.map +0 -1
  282. package/dist/renderer-B5RJp5g-.mjs +0 -5
  283. package/dist/renderer-B7xyT1Vb.mjs +0 -5
  284. package/dist/renderer-BBeArN_x.mjs +0 -5
  285. package/dist/renderer-BCAZDu-r.mjs +0 -5
  286. package/dist/renderer-BJnhik7Y.mjs +0 -5
  287. package/dist/renderer-BxRW8MZO.mjs +0 -5
  288. package/dist/renderer-C-lfsEAN.mjs +0 -5
  289. package/dist/renderer-C6nOFN4-.mjs +0 -5
  290. package/dist/renderer-C84TSQmS.mjs +0 -5
  291. package/dist/renderer-C8_6YofT.mjs +0 -5
  292. package/dist/renderer-COb3tOPG.mjs +0 -5
  293. package/dist/renderer-CSCIzaLy.mjs +0 -5
  294. package/dist/renderer-CmI4c8MS.mjs +0 -5
  295. package/dist/renderer-CqVltdX9.mjs +0 -5
  296. package/dist/renderer-D-FpMzLY.mjs +0 -5
  297. package/dist/renderer-D-Oyn9mG.mjs +0 -5
  298. package/dist/renderer-D2QrkA8_.mjs +0 -5
  299. package/dist/renderer-D5bjOx83.mjs +0 -3
  300. package/dist/renderer-D64r4iN-.mjs +0 -5
  301. package/dist/renderer-DCq6YkgP.mjs +0 -5
  302. package/dist/renderer-DDHG3GdR.mjs +0 -5
  303. package/dist/renderer-DMdNfcud.mjs +0 -6
  304. package/dist/renderer-DZQXZ4lK.mjs +0 -5
  305. package/dist/renderer-DczJJLA1.mjs +0 -5
  306. package/dist/renderer-DfqJj9oe.mjs +0 -5
  307. package/dist/renderer-DgO9ihVJ.mjs +0 -5
  308. package/dist/renderer-DhgnQZYb.mjs +0 -5
  309. package/dist/renderer-DjxKjHMf.mjs +0 -5
  310. package/dist/renderer-DnRDW2Oz.mjs +0 -3
  311. package/dist/renderer-DqLA5cdR.mjs +0 -5
  312. package/dist/renderer-Dudp6ZlH.mjs +0 -5
  313. package/dist/renderer-_jC5KIT1.mjs +0 -5
  314. package/dist/renderer-cTgAuVmJ.mjs +0 -5
  315. package/dist/renderer-nVKDvDLO.mjs +0 -5
  316. package/dist/renderer-pZ6_pUo1.mjs +0 -5
  317. package/dist/src-DFEqficI.mjs.map +0 -1
  318. /package/dist/{chunk-BcJoO4Nm.mjs → chunk-D8S17ehY.mjs} +0 -0
  319. /package/dist/{renderer-COqFNSfV.mjs → renderer-Cputd36d.mjs} +0 -0
@@ -0,0 +1,1163 @@
1
+ import { F as DetectedObject, G as FaceLandmarksOptions, Gn as TensorPipelineConfig, M as DeflickerOptions, P as DepthNormalsOptions, Qn as TrackedObject, S as ControlNetConditioningOutputs, Vn as TensorData, Wn as TensorNode, Z as FrameContext, bn as SegmentationOptions, dn as ProgrammaticSignal, fr as VisionConfig, h as CannyOptions, hr as VisionVariant, ht as Landmark3D, mr as VisionTask, nn as ObjectBoundingBox, pr as VisionNodeSpec, rn as OpticalFlowOptions, tn as NormalizedLandmarkList, un as PoseSkeletonOptions } from "./index-9_4X2ro1.mjs";
2
+
3
+ //#region ../tensor-webgpu/dist/index.d.mts
4
+ //#region src/types.d.ts
5
+ type TensorSource = GPUTexture | {
6
+ inputHandleId?: string;
7
+ id?: string;
8
+ } | string;
9
+ interface TensorViewExport {
10
+ readonly texture: GPUTexture;
11
+ readonly width: number;
12
+ readonly height: number;
13
+ readonly format: GPUTextureFormat;
14
+ }
15
+ //#endregion
16
+ //#region src/multiplexer/controlnet-multiplexer.d.ts
17
+ declare class ControlNetMultiplexer {
18
+ private textures;
19
+ set(type: keyof ControlNetConditioningOutputs, texture: GPUTexture): void;
20
+ get(type: keyof ControlNetConditioningOutputs): GPUTexture | undefined;
21
+ has(type: keyof ControlNetConditioningOutputs): boolean;
22
+ getOutputs(): ControlNetConditioningOutputs;
23
+ createBindGroupEntry(type: keyof ControlNetConditioningOutputs, bindingIndex: number): GPUBindGroupEntry;
24
+ exportTensorView(type: keyof ControlNetConditioningOutputs): TensorViewExport;
25
+ readPixelsAsync(device: GPUDevice, type: keyof ControlNetConditioningOutputs): Promise<{
26
+ width: number;
27
+ height: number;
28
+ format: GPUTextureFormat;
29
+ data: Uint8Array;
30
+ }>;
31
+ destroy(): void;
32
+ }
33
+ //#endregion
34
+ //#region src/pipeline/tensor-pipeline.d.ts
35
+ declare class TensorPipeline {
36
+ readonly source: TensorSource;
37
+ readonly id: string;
38
+ private cannyOptions?;
39
+ private depthNormalsOptions?;
40
+ private poseSkeletonOptions?;
41
+ private faceLandmarksOptions?;
42
+ private segmentationOptions?;
43
+ private opticalFlowOptions?;
44
+ private deflickerOptions?;
45
+ private multiplexer;
46
+ private cannyPipeline?;
47
+ private depthNormalsPipeline?;
48
+ private posePipeline?;
49
+ private facePipeline?;
50
+ private segmentationPipeline?;
51
+ private opticalFlowPipeline?;
52
+ private deflickerPipeline?;
53
+ private prevInputTexture?;
54
+ constructor(source: TensorSource);
55
+ static from(source: TensorSource): TensorPipeline;
56
+ canny(options?: CannyOptions): this;
57
+ depthNormals(options?: DepthNormalsOptions): this;
58
+ poseSkeleton(options?: PoseSkeletonOptions): this;
59
+ pose(landmarks: NormalizedLandmarkList, options?: Omit<PoseSkeletonOptions, "landmarks">): this;
60
+ faceLandmarks(options?: FaceLandmarksOptions): this;
61
+ face(landmarks: NormalizedLandmarkList, options?: Omit<FaceLandmarksOptions, "landmarks">): this;
62
+ segmentation(options?: SegmentationOptions): this;
63
+ opticalFlow(options?: OpticalFlowOptions): this;
64
+ deflicker(options?: DeflickerOptions): this;
65
+ getMultiplexer(): ControlNetMultiplexer;
66
+ execute(device: GPUDevice, overrideSourceTexture?: GPUTexture): Promise<ControlNetConditioningOutputs>;
67
+ toConfig(): TensorPipelineConfig;
68
+ toNode(): TensorNode;
69
+ destroy(): void;
70
+ }
71
+ //#endregion
72
+ //#region src/pipelines/canny-pipeline.d.ts
73
+ declare class CannyComputePipeline {
74
+ private device;
75
+ private sobelPipeline;
76
+ private nmsRgba8Pipeline;
77
+ private nmsR32fPipeline;
78
+ private uniformBuffer;
79
+ private cachedIntermediateTexture?;
80
+ private cachedOutputTexture?;
81
+ constructor(device: GPUDevice);
82
+ execute(inputTexture: GPUTexture, options?: CannyOptions): GPUTexture;
83
+ destroy(): void;
84
+ }
85
+ //#endregion
86
+ //#region src/pipelines/depth-normals-pipeline.d.ts
87
+ declare class DepthNormalsComputePipeline {
88
+ private device;
89
+ private normalRgba16fPipeline;
90
+ private normalRgba8Pipeline;
91
+ private uniformBuffer;
92
+ private cachedOutputTexture?;
93
+ constructor(device: GPUDevice);
94
+ execute(depthTexture: GPUTexture, options?: DepthNormalsOptions): GPUTexture;
95
+ destroy(): void;
96
+ }
97
+ //#endregion
98
+ //#region src/pipelines/face-landmarks-pipeline.d.ts
99
+
100
+ //#endregion
101
+ //#region src/pipelines/optical-flow-pipeline.d.ts
102
+ declare class OpticalFlowComputePipeline {
103
+ private device;
104
+ private directPipeline;
105
+ private refinePipeline;
106
+ private directUniformBuffer;
107
+ private refineUniformBuffer;
108
+ private bilinearSampler;
109
+ private cachedCoarseTexture?;
110
+ private cachedOutputTexture?;
111
+ constructor(device: GPUDevice);
112
+ execute(prevTexture: GPUTexture, currTexture: GPUTexture, options?: OpticalFlowOptions, customEncoder?: GPUCommandEncoder): GPUTexture;
113
+ destroy(): void;
114
+ }
115
+ //#endregion
116
+ //#region src/pipelines/pose-skeleton-pipeline.d.ts
117
+
118
+ //#endregion
119
+ //#region src/pipelines/temporal-deflicker-pipeline.d.ts
120
+ declare class TemporalDeflickerPipeline {
121
+ private device;
122
+ private flowPipeline;
123
+ private rgba8Pipeline;
124
+ private rgba16fPipeline;
125
+ private uniformBuffer;
126
+ private bilinearSampler;
127
+ private historyTexture?;
128
+ private cachedOutputTexture?;
129
+ constructor(device: GPUDevice);
130
+ execute(currTexture: GPUTexture, options?: DeflickerOptions, customEncoder?: GPUCommandEncoder): GPUTexture;
131
+ reset(): void;
132
+ destroy(): void;
133
+ }
134
+ //#endregion
135
+ //#region src/shaders/canny.wgsl.d.ts
136
+ /**
137
+ * @file canny.wgsl.ts
138
+ * High-performance WebGPU Canny Edge Compute Shaders
139
+ * Pass 1: Sobel gradient magnitude & quantized angle
140
+ * Pass 2: Non-Maximum Suppression (NMS) & Dual-Threshold Hysteresis
141
+ */
142
+ //#endregion
143
+ //#region ../vision/dist/index-BAY5GFXg.d.mts
144
+ type VisionModelKey = "rtmdet-ins-t" | "rtmdet-ins-s" | "rtmdet-ins-m" | "rtmo-t" | "rtmo-s" | "rtmo-m" | "selfie-square" | "selfie-landscape" | (string & {});
145
+ /** Which decoder a model's outputs feed (see runner/vision-runner.ts). */
146
+ type VisionModelFamily = "rtmdet-ins" | "rtmo" | "selfie" | (string & {});
147
+ interface VisionModelDescriptor {
148
+ readonly key: VisionModelKey;
149
+ readonly family: VisionModelFamily;
150
+ /** Cache filename (also the path appended to a custom `baseUrl`). */
151
+ readonly filename: string;
152
+ /** Pinned download URL (immutable revision). */
153
+ readonly url: string;
154
+ /** Exact byte size of the pinned file. */
155
+ readonly bytes: number;
156
+ /** Hex SHA-256 of the pinned file. */
157
+ readonly sha256: string;
158
+ /** Model input size, `[width, height]` — must match the ONNX graph's input shape. */
159
+ readonly input: readonly [number, number];
160
+ /** Upstream project and license, surfaced in docs and errors. */
161
+ readonly source: string;
162
+ /** License identifier when not Apache-2.0; the store requires acceptance to download it. */
163
+ readonly license?: string;
164
+ }
165
+ /** COCO 80 class names — index order matches the RTMDet-Ins `labels` output. */
166
+ declare const COCO_CLASSES: readonly ["person", "bicycle", "car", "motorcycle", "airplane", "bus", "train", "truck", "boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench", "bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe", "backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", "sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard", "tennis racket", "bottle", "wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair", "couch", "potted plant", "bed", "dining table", "toilet", "tv", "laptop", "mouse", "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink", "refrigerator", "book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush"];
167
+ //#endregion
168
+ //#region src/model/model-store.d.ts
169
+ type ModelDownloadStatus = "pending" | "downloading" | "ready" | "error";
170
+ interface VisionModelStoreOptions {
171
+ readonly modelsDir?: string;
172
+ /**
173
+ * Mirror origin: models are fetched from `<baseUrl>/<filename>` instead of their pinned
174
+ * Hugging Face URLs. Defaults to `$FRAMEFIELDS_MODELS_BASE_URL` when set.
175
+ */
176
+ readonly baseUrl?: string;
177
+ readonly timeoutMs?: number;
178
+ /** Extra attempts after a network error, HTTP 429 or 5xx. Default 2. */
179
+ readonly retries?: number;
180
+ /** Base backoff between attempts (doubles each retry). Default 1000 ms. */
181
+ readonly retryDelayMs?: number;
182
+ /**
183
+ * Verify byte size + SHA-256 against the registry (default true). Only offline tests
184
+ * that serve fake bytes should turn this off.
185
+ */
186
+ readonly verify?: boolean;
187
+ /** Injectable fetch — offline unit tests inject a mock. */
188
+ readonly fetchImpl?: typeof fetch;
189
+ readonly onProgress?: (key: VisionModelKey, bytesLoaded: number, totalBytes: number) => void;
190
+ /**
191
+ * Explicitly agree to non-Apache licenses (such as Meta's SAM License)
192
+ * required by downloaded models.
193
+ */
194
+ readonly acceptLicense?: boolean;
195
+ }
196
+ /**
197
+ * Resolves the default model cache directory:
198
+ * 1. `FRAMEFIELDS_MODELS_DIR`
199
+ * 2. `~/.cache/framefields/models`
200
+ */
201
+
202
+ /**
203
+ * Lazy model store. The constructor performs ZERO I/O; the only entry that can hit the
204
+ * network is `ensure(key)`, called by an inference function the first time it runs.
205
+ * Concurrent callers of the same key share a single in-flight download (promise dedupe),
206
+ * downloads are written atomically (temp + rename), and verified files on disk are reused
207
+ * across processes.
208
+ */
209
+ declare class VisionModelStore {
210
+ private readonly _modelsDir;
211
+ private readonly _baseUrl?;
212
+ private readonly _timeoutMs?;
213
+ private readonly _retries;
214
+ private readonly _retryDelayMs;
215
+ private readonly _verify;
216
+ private readonly _fetch;
217
+ private readonly _onProgress?;
218
+ private readonly _acceptLicense;
219
+ private _inflight;
220
+ private _buffers;
221
+ private _status;
222
+ constructor(options?: VisionModelStoreOptions);
223
+ get modelsDir(): string;
224
+ pathFor(key: VisionModelKey): string;
225
+ descriptor(key: VisionModelKey): VisionModelDescriptor;
226
+ /** The URL `ensure(key)` downloads from (mirror when `baseUrl` is set). */
227
+ urlFor(key: VisionModelKey): string;
228
+ /** True when a complete cached file exists (exact registry size when verifying). */
229
+ has(key: VisionModelKey): boolean;
230
+ /** Drops a cached model (file + memory) so the next `ensure` re-downloads it. */
231
+ evict(key: VisionModelKey): Promise<void>;
232
+ status(key: VisionModelKey): ModelDownloadStatus;
233
+ /** Snapshot of every tracked model's status (empty until anything is fetched). */
234
+ statuses(): ReadonlyMap<VisionModelKey, ModelDownloadStatus>;
235
+ /** True when the model is resident in memory (loaded or downloaded this process). */
236
+ isLoaded(key: VisionModelKey): boolean;
237
+ /**
238
+ * THE only download entry point. Returns the model bytes from memory (cached),
239
+ * loading from disk or fetching from the registry URL as needed.
240
+ */
241
+ ensure(key: VisionModelKey): Promise<Uint8Array>;
242
+ /** Explicit warm-up — fetch multiple models ahead of use (agents, renderers). */
243
+ preload(keys: readonly VisionModelKey[]): Promise<void>;
244
+ private load;
245
+ /** Fetches with retries on transient failures (network errors, HTTP 429/5xx). */
246
+ private download;
247
+ private verifyBytes;
248
+ private readBuffer;
249
+ /** Drops in-memory buffers (model stays on disk for the next run). */
250
+ clearMemoryCache(): void;
251
+ }
252
+ //#endregion
253
+ //#region src/runtime/session-provider.d.ts
254
+ /**
255
+ * Minimal ONNX Runtime surface — isolates the ORT API to exactly two files so the decode
256
+ * and signals layers never touch it. Node path uses onnxruntime-node (CPU EP); the web
257
+ * entry can swap in a WebGPU-backed provider with the same interface.
258
+ */
259
+ /** Model output tensor. Integer outputs (e.g. RTMDet-Ins `labels`) arrive as BigInt64Array. */
260
+ interface VisionTensor {
261
+ readonly data: Float32Array | BigInt64Array | Int32Array;
262
+ readonly dims: readonly number[];
263
+ }
264
+ interface VisionTensorInput {
265
+ readonly name: string;
266
+ /** Ignored (may be empty) when `gpuBuffer` is set. */
267
+ readonly data: Float32Array | Int32Array | BigInt64Array | Uint8Array;
268
+ /** The input already on the GPU; only for providers with a `device` (it must be that device's). */
269
+ readonly gpuBuffer?: GPUBuffer;
270
+ readonly dims: readonly number[];
271
+ }
272
+ type VisionTensorOutputs = Readonly<Record<string, VisionTensor>>;
273
+ interface VisionSession {
274
+ run(input: VisionTensorInput): Promise<VisionTensorOutputs>;
275
+ /** Multi-input graphs; optional for compatibility with existing custom providers. */
276
+ runMany?(inputs: readonly VisionTensorInput[]): Promise<VisionTensorOutputs>;
277
+ release(): void;
278
+ }
279
+ /** External ONNX tensor files, verified by the model store before session creation. */
280
+ interface VisionSessionOptions {
281
+ readonly externalData?: readonly {
282
+ readonly path: string;
283
+ readonly data: Uint8Array;
284
+ }[];
285
+ }
286
+ /** The hardware sessions run on; it decides which model precision runs fastest. */
287
+ type VisionCompute = "webgpu" | "cuda" | "cpu";
288
+ interface SessionProvider {
289
+ readonly kind: "node" | "webgpu";
290
+ /** The GPU device sessions run on, when they accept `gpuBuffer` inputs from it. */
291
+ readonly device?: GPUDevice;
292
+ /**
293
+ * Where sessions will run, known before any model is downloaded (see
294
+ * {@link sessionCompute}). Optional for custom providers.
295
+ */
296
+ backend?(): Promise<VisionCompute>;
297
+ createSession(modelBytes: Uint8Array, options?: VisionSessionOptions): Promise<VisionSession>;
298
+ }
299
+ /** Where a provider's sessions run: its own answer, else WebGPU for WebGPU providers, else CPU. */
300
+
301
+ declare namespace types_d_exports {
302
+ export { InstanceMask, LandmarkCoordinateSignals, ObjectAnchorName, PersonMatte, PinToLandmarkOptions, PinToObjectOptions, PoseKeypoint, PosePerson, PoseResult, SegmentationResult, VisionAnalysisClassSummary, VisionAnalysisReport, VisionAnalysisTrackSummary, VisionFrame, VisionGpuImage, VisionImageInput, VisionInputSource, VisionSummary, isGpuImage };
303
+ }
304
+ type VisionInputSource = string | {
305
+ inputHandleId?: string;
306
+ id?: string;
307
+ };
308
+ /** RGBA pixel buffer accepted by the runner. */
309
+ interface VisionImageInput {
310
+ readonly data: Uint8ClampedArray | Uint8Array;
311
+ readonly width: number;
312
+ readonly height: number;
313
+ }
314
+ /**
315
+ * A frame that is already on the GPU: an 8-bit RGBA/BGRA texture of `device`.
316
+ * When the runner's sessions run on the same device (see `setVisionDevice`),
317
+ * preprocessing happens on the GPU and the frame never comes back to the CPU;
318
+ * otherwise the runner reads it back.
319
+ */
320
+ interface VisionGpuImage {
321
+ readonly texture: GPUTexture;
322
+ readonly device: GPUDevice;
323
+ readonly width: number;
324
+ readonly height: number;
325
+ }
326
+ type VisionFrame = VisionImageInput | VisionGpuImage;
327
+ declare function isGpuImage(image: VisionFrame): image is VisionGpuImage;
328
+ /** Instance segmentation mask aligned to the ORIGINAL source frame. */
329
+ interface InstanceMask {
330
+ readonly category: string;
331
+ readonly mask: Uint8Array;
332
+ readonly width: number;
333
+ readonly height: number;
334
+ readonly area: number;
335
+ readonly coverage: number;
336
+ /** Index of the detection this mask belongs to (see segmentation result detections). */
337
+ readonly detectionIndex: number;
338
+ /** Assigned by the caller (renderer) after temporal tracking — matches TrackedObject.trackId. */
339
+ readonly trackId?: number;
340
+ }
341
+ interface SegmentationResult {
342
+ readonly detections: readonly DetectedObject[];
343
+ readonly masks: readonly InstanceMask[];
344
+ }
345
+ /** Person-vs-background alpha (Selfie Segmenter), aligned to the ORIGINAL source frame. */
346
+ interface PersonMatte {
347
+ readonly mask: Uint8Array;
348
+ readonly width: number;
349
+ readonly height: number;
350
+ readonly coverage: number;
351
+ }
352
+ interface PoseKeypoint {
353
+ readonly x: number;
354
+ readonly y: number;
355
+ readonly visibility: number;
356
+ }
357
+ interface PosePerson {
358
+ readonly score: number;
359
+ readonly boundingBox: ObjectBoundingBox;
360
+ /** 17 keypoints in COCO-17 order (see COCO17_KEYPOINTS). */
361
+ readonly keypoints: readonly PoseKeypoint[];
362
+ readonly trackId?: number;
363
+ }
364
+ interface PoseResult {
365
+ readonly people: readonly PosePerson[];
366
+ }
367
+ /**
368
+ * Deterministic, serializable snapshot of one frame's signals.
369
+ * Built synchronously from the per-frame caches, so it is safe to call inside a frame hook.
370
+ */
371
+ interface VisionSummary {
372
+ readonly frame: number;
373
+ readonly objects: ReadonlyArray<{
374
+ readonly trackId: number;
375
+ readonly category: string;
376
+ readonly score: number;
377
+ /** Source-space pixel center, `[x, y]`. */
378
+ readonly center: readonly [number, number];
379
+ readonly speed: number;
380
+ readonly active: boolean;
381
+ }>;
382
+ readonly classes: readonly string[];
383
+ /** Per-class instance count for the frame (only non-zero classes present). */
384
+ readonly masks: Readonly<Record<string, number>>;
385
+ }
386
+ /** Per-track aggregate in an analysis report. */
387
+ interface VisionAnalysisTrackSummary {
388
+ readonly trackId: number;
389
+ readonly category: string;
390
+ /** Inclusive frame range the track was active over, `[start, end]`. */
391
+ readonly frames: readonly [number, number];
392
+ readonly speedMeanPxS: number;
393
+ /** Center path sampled every `pathStride` frames, `[x, y]` pairs. */
394
+ readonly centerPath: ReadonlyArray<readonly [number, number]>;
395
+ }
396
+ interface VisionAnalysisClassSummary {
397
+ readonly framesPresent: number;
398
+ readonly totalFrames: number;
399
+ readonly maxConfidence: number;
400
+ readonly tracks: number;
401
+ }
402
+ interface VisionAnalysisReport {
403
+ readonly source: string;
404
+ readonly totalFrames: number;
405
+ readonly fps: number;
406
+ readonly durationSec: number;
407
+ readonly tasks: readonly string[];
408
+ /** What was fetched, and how long it took — surfaced so agents can budget cold starts. */
409
+ readonly modelDownloads: Readonly<Record<string, {
410
+ readonly bytes: number;
411
+ readonly ms: number;
412
+ }>>;
413
+ readonly inferenceMs: number;
414
+ readonly trackCount: number;
415
+ readonly classes: Readonly<Record<string, VisionAnalysisClassSummary>>;
416
+ readonly tracks: readonly VisionAnalysisTrackSummary[];
417
+ readonly masks: Readonly<Record<string, {
418
+ readonly meanCoverage: number;
419
+ }>>;
420
+ }
421
+ interface PinToLandmarkOptions {
422
+ readonly offsetX?: number;
423
+ readonly offsetY?: number;
424
+ readonly offsetZ?: number;
425
+ readonly trackRotation?: boolean;
426
+ readonly scaleWithPerspective?: boolean;
427
+ }
428
+ interface LandmarkCoordinateSignals {
429
+ readonly x: ProgrammaticSignal;
430
+ readonly y: ProgrammaticSignal;
431
+ readonly z: ProgrammaticSignal;
432
+ readonly screenX: ProgrammaticSignal;
433
+ readonly screenY: ProgrammaticSignal;
434
+ }
435
+ type ObjectAnchorName = "center" | "topCenter" | "bottomCenter" | "topLeft" | "topRight" | "centerLeft" | "centerRight" | "bottomLeft" | "bottomRight";
436
+ interface PinToObjectOptions extends PinToLandmarkOptions {
437
+ readonly anchor?: ObjectAnchorName;
438
+ readonly matchWidth?: boolean;
439
+ readonly matchHeight?: boolean;
440
+ readonly smoothFrames?: number;
441
+ readonly hideWhenLost?: boolean;
442
+ }
443
+ //#endregion
444
+ //#region src/runner/vision-runner.d.ts
445
+ interface VisionRunnerOptions {
446
+ /** Model size for detect/segment/pose. Default "s". */
447
+ readonly variant?: VisionVariant;
448
+ /** Minimum detection / person score, 0..1. Default 0.3. */
449
+ readonly confidence?: number;
450
+ /** COCO class-name filter for detect/segment (all classes when omitted). */
451
+ readonly classes?: readonly string[];
452
+ readonly maskThreshold?: number;
453
+ readonly featherRadius?: number;
454
+ readonly modelsDir?: string;
455
+ /** Mirror origin for model downloads (see VisionModelStore). */
456
+ readonly baseUrl?: string;
457
+ readonly timeoutMs?: number;
458
+ /** Session backend. Default: WebGPU when possible, else onnxruntime-node (CPU); see `AutoSessionProvider`. Browser: `createWebGPUProvider()`. */
459
+ readonly provider?: SessionProvider;
460
+ /** Inject a model store (tests, shared caches). Overrides modelsDir/baseUrl/timeoutMs. */
461
+ readonly store?: VisionModelStore;
462
+ readonly onProgress?: (key: VisionModelKey, bytesLoaded: number, totalBytes: number) => void;
463
+ }
464
+ /** Options that only change how outputs are decoded — not which model runs. */
465
+ type VisionDecodeOptions = Pick<VisionRunnerOptions, "confidence" | "classes" | "maskThreshold" | "featherRadius">;
466
+ /**
467
+ * Lazy vision runner.
468
+ *
469
+ * `create()` performs ZERO I/O: no downloads, no sessions. Each inference method downloads
470
+ * its model and warms its session on FIRST USE ONLY, then reuses them for the process
471
+ * lifetime. `detect()` and `segment()` share one RTMDet-Ins forward pass per frame.
472
+ * Call `close()` to release sessions.
473
+ */
474
+ declare class VisionRunner {
475
+ readonly variant: VisionVariant;
476
+ readonly confidence: number;
477
+ readonly classes?: readonly string[];
478
+ readonly maskThreshold: number;
479
+ readonly featherRadius?: number;
480
+ private readonly _core;
481
+ /** False for derived runners: their sessions belong to the runner they came from. */
482
+ private readonly _ownsCore;
483
+ private constructor();
484
+ /** Cheap: no downloads, no sessions, no side effects. */
485
+ static create(options?: VisionRunnerOptions): VisionRunner;
486
+ /**
487
+ * A runner with other decode options (confidence, classes, mask threshold,
488
+ * feather) that shares this runner's models, sessions and per-frame RTMDet-Ins
489
+ * pass — e.g. one per layer, without loading a model twice. Its `close()` is a
490
+ * no-op; closing this runner releases the shared sessions.
491
+ */
492
+ derive(options: VisionDecodeOptions): VisionRunner;
493
+ get modelsDir(): string;
494
+ /** Every registry model keyed to its current download state (downloaded → "ready"). */
495
+ get downloadStatus(): ReadonlyMap<VisionModelKey, ModelDownloadStatus>;
496
+ /** The model serving `task` (matte depends on frame aspect; defaults to square). */
497
+ modelKeyFor(task: VisionTask, aspect?: number): VisionModelKey;
498
+ /**
499
+ * Explicit warm-up: downloads + sessions for the given tasks, ahead of first use.
500
+ * `matte` warms both aspect variants (the frame aspect is unknown until inference).
501
+ */
502
+ preload(tasks?: readonly VisionTask[]): Promise<void>;
503
+ /** COCO-80 boxes (sorted by score, source pixels). Masks are not decoded. */
504
+ detect(image: VisionFrame): Promise<readonly DetectedObject[]>;
505
+ /** COCO-80 boxes plus a frame-aligned soft mask per instance. */
506
+ segment(image: VisionFrame): Promise<SegmentationResult>;
507
+ /** COCO-17 keypoints per person (source pixels), highest score first. */
508
+ pose(image: VisionFrame): Promise<PoseResult>;
509
+ /** Person-vs-background alpha for the whole frame (Selfie Segmenter). */
510
+ matte(image: VisionFrame): Promise<PersonMatte>;
511
+ close(): void;
512
+ private instancePass;
513
+ private instanceDecodeOptions;
514
+ /**
515
+ * Runs one model on one image. Runs of the same model are queued: they share
516
+ * the input scratch buffer, and one run already uses the session's threads.
517
+ */
518
+ private infer;
519
+ private inferNow;
520
+ private gpuInput;
521
+ private session;
522
+ }
523
+ //#endregion
524
+ //#region src/analysis/analyze-sequence.d.ts
525
+ /**
526
+ * One-shot, ffmpeg-free sequence analysis.
527
+ *
528
+ * Pure frame-iterable analyzer: it never decodes media itself, so it stays engine-only and
529
+ * offline-testable. Callers (e.g. the framefields ingestion adapter) supply decoded frames.
530
+ * Model loading remains lazy — the runner downloads each task's model on the first frame
531
+ * that actually runs that task, and only the tasks requested here are ever touched.
532
+ */
533
+ interface AnalyzeSequenceOptions {
534
+ readonly runner: VisionRunner;
535
+ /** Label for the report ("clip.mp4" or similar). Defaults to "frames". */
536
+ readonly source?: string;
537
+ readonly fps?: number;
538
+ /** Tasks to run. Defaults to `["detect"]`. Only these models are ever downloaded. */
539
+ readonly tasks?: readonly VisionTask[];
540
+ /** Restrict class summaries to these categories (all when omitted). */
541
+ readonly categories?: readonly string[];
542
+ /** Tracker box-association IoU. Default 0.25. */
543
+ readonly iouThreshold?: number;
544
+ readonly maxMissedFrames?: number;
545
+ /** Sample the per-track center path every N frames. Default: ~50 points across the clip. */
546
+ readonly pathStride?: number;
547
+ /** Also aggregate instance-mask coverage (requires the `segment` task). Default false. */
548
+ readonly includeMasks?: boolean;
549
+ }
550
+ declare function analyzeSequence(frames: AsyncIterable<VisionImageInput> | Iterable<VisionImageInput>, options: AnalyzeSequenceOptions): Promise<VisionAnalysisReport>;
551
+ //#endregion
552
+ //#region src/decode/preprocess.d.ts
553
+ /**
554
+ * Image → NCHW float tensor preprocessing, plus the inverse mapping back to source pixels.
555
+ *
556
+ * Each model family was exported with its own preprocessing contract:
557
+ *
558
+ * | Model | Resize | Pad | Channels | Values |
559
+ * | ----------- | ---------------------------- | ---- | -------- | -------------------------- |
560
+ * | RTMDet-Ins | keep ratio, content top-left | 114 | BGR | (v − mean) / std (ImageNet) |
561
+ * | RTMO | keep ratio, content centered | 114 | BGR | raw 0..255 |
562
+ * | Selfie | stretch to input | — | RGB | v / 255 |
563
+ *
564
+ * Getting any of these wrong does not crash — it silently degrades accuracy — so the specs
565
+ * live here and every runner path goes through `imageToTensor`. Input sizes differ per model
566
+ * (RTMO-t is 416², the rest of RTMO 640²), so they come from the registry, never from here.
567
+ */
568
+
569
+ //#endregion
570
+ //#region src/gpu/pose-skeleton-renderer.d.ts
571
+ /**
572
+ * WebGPU skeleton renderer for pose results.
573
+ *
574
+ * Rasterizes the primary person's COCO-17 keypoints into an OpenPose-style
575
+ * conditioning texture natively in VRAM, using the COCO-17 bone set.
576
+ */
577
+ declare class PoseSkeletonRenderer {
578
+ private pipeline;
579
+ constructor(device: GPUDevice);
580
+ renderToTexture(keypoints: readonly PoseKeypoint[], options: PoseSkeletonOptions, bones?: readonly [{
581
+ readonly from: 0;
582
+ readonly to: 5;
583
+ readonly color: readonly [0, 1, 1, 1];
584
+ }, {
585
+ readonly from: 0;
586
+ readonly to: 6;
587
+ readonly color: readonly [0, 1, 1, 1];
588
+ }, {
589
+ readonly from: 5;
590
+ readonly to: 6;
591
+ readonly color: readonly [1, 0, 0, 1];
592
+ }, {
593
+ readonly from: 5;
594
+ readonly to: 7;
595
+ readonly color: readonly [1, 0.333, 0, 1];
596
+ }, {
597
+ readonly from: 7;
598
+ readonly to: 9;
599
+ readonly color: readonly [1, 0.667, 0, 1];
600
+ }, {
601
+ readonly from: 6;
602
+ readonly to: 8;
603
+ readonly color: readonly [1, 1, 0, 1];
604
+ }, {
605
+ readonly from: 8;
606
+ readonly to: 10;
607
+ readonly color: readonly [0.667, 1, 0, 1];
608
+ }, {
609
+ readonly from: 5;
610
+ readonly to: 11;
611
+ readonly color: readonly [0.333, 1, 0, 1];
612
+ }, {
613
+ readonly from: 6;
614
+ readonly to: 12;
615
+ readonly color: readonly [0, 1, 0, 1];
616
+ }, {
617
+ readonly from: 11;
618
+ readonly to: 12;
619
+ readonly color: readonly [0, 1, 0.333, 1];
620
+ }, {
621
+ readonly from: 11;
622
+ readonly to: 13;
623
+ readonly color: readonly [0, 1, 0.667, 1];
624
+ }, {
625
+ readonly from: 13;
626
+ readonly to: 15;
627
+ readonly color: readonly [0, 1, 1, 1];
628
+ }, {
629
+ readonly from: 12;
630
+ readonly to: 14;
631
+ readonly color: readonly [0, 0.667, 1, 1];
632
+ }, {
633
+ readonly from: 14;
634
+ readonly to: 16;
635
+ readonly color: readonly [0, 0.333, 1, 1];
636
+ }]): GPUTexture;
637
+ destroy(): void;
638
+ }
639
+ //#endregion
640
+ //#region src/gpu/segmentation-texture-pool.d.ts
641
+ interface SegmentationTextureOptions {
642
+ readonly width: number;
643
+ readonly height: number;
644
+ readonly format?: "r8unorm" | "rgba8unorm";
645
+ readonly label?: string;
646
+ }
647
+ declare class SegmentationTexturePool {
648
+ private device;
649
+ private pool;
650
+ constructor(device: GPUDevice);
651
+ getOrCreateTexture(key: string, options: SegmentationTextureOptions): GPUTexture;
652
+ uploadMask(key: string, maskData: Uint8Array | Float32Array, width: number, height: number): GPUTexture;
653
+ destroy(): void;
654
+ }
655
+ //#endregion
656
+ //#region src/model/onnx-proto.d.ts
657
+ /**
658
+ * Minimal ONNX protobuf wire-format helpers: split a message into fields,
659
+ * read strings, write length-delimited fields. Only what the graph editors
660
+ * (onnx-subgraph.ts, onnx-float16.ts) need; unknown fields are copied as raw
661
+ * bytes, so nothing else in a model is touched.
662
+ */
663
+
664
+ //#endregion
665
+ //#region src/pose/keypoints.d.ts
666
+ /** COCO-17 keypoint indices (RTMO output order). */
667
+ declare const COCO17_KEYPOINTS: {
668
+ readonly NOSE: 0;
669
+ readonly LEFT_EYE: 1;
670
+ readonly RIGHT_EYE: 2;
671
+ readonly LEFT_EAR: 3;
672
+ readonly RIGHT_EAR: 4;
673
+ readonly LEFT_SHOULDER: 5;
674
+ readonly RIGHT_SHOULDER: 6;
675
+ readonly LEFT_ELBOW: 7;
676
+ readonly RIGHT_ELBOW: 8;
677
+ readonly LEFT_WRIST: 9;
678
+ readonly RIGHT_WRIST: 10;
679
+ readonly LEFT_HIP: 11;
680
+ readonly RIGHT_HIP: 12;
681
+ readonly LEFT_KNEE: 13;
682
+ readonly RIGHT_KNEE: 14;
683
+ readonly LEFT_ANKLE: 15;
684
+ readonly RIGHT_ANKLE: 16;
685
+ };
686
+ declare const COCO17_KEYPOINT_NAMES: readonly ["nose", "leftEye", "rightEye", "leftEar", "rightEar", "leftShoulder", "rightShoulder", "leftElbow", "rightElbow", "leftWrist", "rightWrist", "leftHip", "rightHip", "leftKnee", "rightKnee", "leftAnkle", "rightAnkle"];
687
+ /** COCO-17 skeleton bones for the WebGPU skeleton renderer (indices above). */
688
+ declare const COCO17_BONES: readonly [{
689
+ readonly from: 0;
690
+ readonly to: 5;
691
+ readonly color: readonly [0, 1, 1, 1];
692
+ }, {
693
+ readonly from: 0;
694
+ readonly to: 6;
695
+ readonly color: readonly [0, 1, 1, 1];
696
+ }, {
697
+ readonly from: 5;
698
+ readonly to: 6;
699
+ readonly color: readonly [1, 0, 0, 1];
700
+ }, {
701
+ readonly from: 5;
702
+ readonly to: 7;
703
+ readonly color: readonly [1, 0.333, 0, 1];
704
+ }, {
705
+ readonly from: 7;
706
+ readonly to: 9;
707
+ readonly color: readonly [1, 0.667, 0, 1];
708
+ }, {
709
+ readonly from: 6;
710
+ readonly to: 8;
711
+ readonly color: readonly [1, 1, 0, 1];
712
+ }, {
713
+ readonly from: 8;
714
+ readonly to: 10;
715
+ readonly color: readonly [0.667, 1, 0, 1];
716
+ }, {
717
+ readonly from: 5;
718
+ readonly to: 11;
719
+ readonly color: readonly [0.333, 1, 0, 1];
720
+ }, {
721
+ readonly from: 6;
722
+ readonly to: 12;
723
+ readonly color: readonly [0, 1, 0, 1];
724
+ }, {
725
+ readonly from: 11;
726
+ readonly to: 12;
727
+ readonly color: readonly [0, 1, 0.333, 1];
728
+ }, {
729
+ readonly from: 11;
730
+ readonly to: 13;
731
+ readonly color: readonly [0, 1, 0.667, 1];
732
+ }, {
733
+ readonly from: 13;
734
+ readonly to: 15;
735
+ readonly color: readonly [0, 1, 1, 1];
736
+ }, {
737
+ readonly from: 12;
738
+ readonly to: 14;
739
+ readonly color: readonly [0, 0.667, 1, 1];
740
+ }, {
741
+ readonly from: 14;
742
+ readonly to: 16;
743
+ readonly color: readonly [0, 0.333, 1, 1];
744
+ }];
745
+ //#endregion
746
+ //#region src/runner/canonical-baselines.d.ts
747
+ /** Neutral fallbacks so signal evaluators always have a well-formed frame to read. */
748
+
749
+ interface ClipSubjectSource {
750
+ /** An explicit selection must not silently fall back to automatic subject detection. */
751
+ readonly exact?: boolean;
752
+ /**
753
+ * The merged subject mask for a source frame of the clip (`frame` at `fps`),
754
+ * in source pixels; `null` when the frame was analysed and holds no subject;
755
+ * `undefined` when it was not analysed, so the caller segments it itself.
756
+ */
757
+ subject(frame: number, fps: number): InstanceMask | null | undefined;
758
+ /**
759
+ * The subject's pose for a source frame; `null` when the frame was analysed
760
+ * and holds no matched pose; `undefined` when it was not analysed (or the
761
+ * clip tracks no pose).
762
+ */
763
+ pose?(frame: number, fps: number): ClipPose | null | undefined;
764
+ }
765
+ interface ClipPose {
766
+ /** 17 COCO keypoints, normalized to the source size. */
767
+ readonly keypoints: readonly PoseKeypoint[];
768
+ /** Source size in pixels, for fitting the pose to a target. */
769
+ readonly width: number;
770
+ readonly height: number;
771
+ }
772
+ //#endregion
773
+ //#region src/segmentation/subject.d.ts
774
+ /**
775
+ * The frame's primary instance: the largest person when present, else the most confident
776
+ * instance (lowest `detectionIndex` — detections are score-sorted). Size alone is a poor
777
+ * signal without a person: the largest instance is usually a backdrop ("dining table").
778
+ * `classes` (case-insensitive) limits which instances can be the subject.
779
+ */
780
+
781
+ //#endregion
782
+ //#region src/signals/vision-bundle.d.ts
783
+ interface VisionBundleOptions {
784
+ readonly totalFrames?: number;
785
+ readonly fps?: number;
786
+ readonly width?: number;
787
+ readonly height?: number;
788
+ readonly cameraFov?: number;
789
+ readonly config?: types_d_exports.VisionConfig;
790
+ /** Lazy source-frame masks, for clips retaining compressed masks instead of RGBA-sized histories. */
791
+ readonly maskSource?: (frame: number) => readonly InstanceMask[] | undefined;
792
+ readonly matteSource?: (frame: number) => PersonMatte | undefined;
793
+ }
794
+ /** Named pose landmarks (COCO-17) plus numeric proxy access to any of the 17 keypoints. */
795
+ interface PoseLandmarkSignals {
796
+ readonly shoulder: LandmarkCoordinateSignals;
797
+ readonly leftShoulder: LandmarkCoordinateSignals;
798
+ readonly rightShoulder: LandmarkCoordinateSignals;
799
+ readonly leftElbow: LandmarkCoordinateSignals;
800
+ readonly rightElbow: LandmarkCoordinateSignals;
801
+ readonly leftWrist: LandmarkCoordinateSignals;
802
+ readonly rightWrist: LandmarkCoordinateSignals;
803
+ readonly leftHip: LandmarkCoordinateSignals;
804
+ readonly rightHip: LandmarkCoordinateSignals;
805
+ readonly leftKnee: LandmarkCoordinateSignals;
806
+ readonly rightKnee: LandmarkCoordinateSignals;
807
+ readonly leftAnkle: LandmarkCoordinateSignals;
808
+ readonly rightAnkle: LandmarkCoordinateSignals;
809
+ readonly nose: LandmarkCoordinateSignals;
810
+ readonly leftEye: LandmarkCoordinateSignals;
811
+ readonly rightEye: LandmarkCoordinateSignals;
812
+ readonly leftEar: LandmarkCoordinateSignals;
813
+ readonly rightEar: LandmarkCoordinateSignals;
814
+ get(keypointIndex: number): LandmarkCoordinateSignals;
815
+ }
816
+ interface TrackPoseSignals extends PoseLandmarkSignals {
817
+ readonly hasPose: ProgrammaticSignal;
818
+ readonly wristSpeed: ProgrammaticSignal;
819
+ readonly handRaised: ProgrammaticSignal;
820
+ readonly bodyTiltAngle: ProgrammaticSignal;
821
+ }
822
+ interface ObjectBoundingBoxSignals {
823
+ readonly x: ProgrammaticSignal;
824
+ readonly y: ProgrammaticSignal;
825
+ readonly width: ProgrammaticSignal;
826
+ readonly height: ProgrammaticSignal;
827
+ readonly screenX: ProgrammaticSignal;
828
+ readonly screenY: ProgrammaticSignal;
829
+ readonly screenWidth: ProgrammaticSignal;
830
+ readonly screenHeight: ProgrammaticSignal;
831
+ readonly aspectRatio: ProgrammaticSignal;
832
+ readonly area: ProgrammaticSignal;
833
+ }
834
+ interface ObjectAnchorsSignals {
835
+ readonly topLeft: LandmarkCoordinateSignals;
836
+ readonly topCenter: LandmarkCoordinateSignals;
837
+ readonly topRight: LandmarkCoordinateSignals;
838
+ readonly centerLeft: LandmarkCoordinateSignals;
839
+ readonly center: LandmarkCoordinateSignals;
840
+ readonly centerRight: LandmarkCoordinateSignals;
841
+ readonly bottomLeft: LandmarkCoordinateSignals;
842
+ readonly bottomCenter: LandmarkCoordinateSignals;
843
+ readonly bottomRight: LandmarkCoordinateSignals;
844
+ }
845
+ interface ObjectKinematicsSignals {
846
+ readonly vx: ProgrammaticSignal;
847
+ readonly vy: ProgrammaticSignal;
848
+ readonly speed: ProgrammaticSignal;
849
+ readonly acceleration: ProgrammaticSignal;
850
+ readonly headingRad: ProgrammaticSignal;
851
+ readonly headingDeg: ProgrammaticSignal;
852
+ }
853
+ interface ObjectTrackSignals {
854
+ readonly trackId: number;
855
+ readonly category: string;
856
+ readonly bounds: ObjectBoundingBoxSignals;
857
+ readonly anchors: ObjectAnchorsSignals;
858
+ readonly kinematics: ObjectKinematicsSignals;
859
+ readonly confidence: ProgrammaticSignal;
860
+ readonly active: ProgrammaticSignal;
861
+ readonly isCoasting: ProgrammaticSignal;
862
+ readonly age: ProgrammaticSignal;
863
+ readonly pose: TrackPoseSignals;
864
+ readonly center: LandmarkCoordinateSignals;
865
+ readonly topCenter: LandmarkCoordinateSignals;
866
+ readonly bottomCenter: LandmarkCoordinateSignals;
867
+ readonly topLeft: LandmarkCoordinateSignals;
868
+ readonly bottomLeft: LandmarkCoordinateSignals;
869
+ readonly [key: string]: unknown;
870
+ }
871
+ interface MaskTrackSignals {
872
+ readonly trackId: number;
873
+ readonly category: string;
874
+ readonly area: ProgrammaticSignal;
875
+ readonly coverage: ProgrammaticSignal;
876
+ readonly solidity: ProgrammaticSignal;
877
+ readonly bboxFill: ProgrammaticSignal;
878
+ /** Frame-sized {0,255} mask for the current frame (renderer-populated). */
879
+ data?: Uint8Array;
880
+ /** GPU-resident silhouette texture (renderer-populated via SegmentationTexturePool). */
881
+ texture?: GPUTexture;
882
+ }
883
+ interface MaskCollectionSignals {
884
+ get(trackId: number): MaskTrackSignals;
885
+ /** Largest instance of the current frame (person preferred when present). */
886
+ readonly subject: MaskTrackSignals;
887
+ readonly count: ProgrammaticSignal;
888
+ }
889
+ interface SegmentationSignals {
890
+ readonly humanSilhouette: MaskTrackSignals;
891
+ readonly subject: MaskTrackSignals;
892
+ readonly instanceMasks: MaskCollectionSignals;
893
+ /** Person-vs-background alpha from the Selfie Segmenter (`enableMatte`). */
894
+ readonly matte: PersonMatteSignals;
895
+ readonly stencilTexture?: GPUTexture;
896
+ }
897
+ interface PersonMatteSignals {
898
+ /** Mean person alpha over the frame, 0..1 (0 when no matte has run). */
899
+ readonly coverage: ProgrammaticSignal;
900
+ /** Frame-sized 0..255 alpha for the given frame, if a matte has run. */
901
+ at(frame: number): PersonMatte | undefined;
902
+ }
903
+ interface ClassSignals {
904
+ readonly count: ProgrammaticSignal;
905
+ readonly maxConfidence: ProgrammaticSignal;
906
+ readonly present: ProgrammaticSignal;
907
+ readonly primary: ObjectTrackSignals;
908
+ }
909
+ interface ClassCollectionSignals {
910
+ /** Cached per-class signals (stable identity). */
911
+ get(name: string): ClassSignals;
912
+ /** Sorted active category names for the current frame. */
913
+ readonly names: readonly string[];
914
+ readonly histogram: {
915
+ get(ctx?: FrameContext): TensorData;
916
+ readonly value: TensorData;
917
+ };
918
+ }
919
+ interface ObjectCollectionSignals {
920
+ get(trackId: number): ObjectTrackSignals;
921
+ byCategory(category: string, rank?: number): ObjectTrackSignals;
922
+ readonly primary: ObjectTrackSignals;
923
+ readonly count: ProgrammaticSignal;
924
+ hasCategory(category: string): ProgrammaticSignal;
925
+ getActiveTracks(frame: number): readonly TrackedObject[];
926
+ readonly detectedCategories: readonly string[];
927
+ }
928
+ declare class VisionBundle {
929
+ readonly objects: ObjectCollectionSignals;
930
+ readonly poseLandmarks: PoseLandmarkSignals;
931
+ readonly masks: MaskCollectionSignals;
932
+ readonly segmentation: SegmentationSignals;
933
+ readonly classes: ClassCollectionSignals;
934
+ readonly poseLandmarksTensor: {
935
+ get(ctx?: FrameContext): TensorData;
936
+ readonly value: TensorData;
937
+ };
938
+ readonly objectsTensor: {
939
+ get(ctx?: FrameContext): TensorData;
940
+ readonly value: TensorData;
941
+ };
942
+ readonly masksTensor: {
943
+ get(ctx?: FrameContext): TensorData;
944
+ readonly value: TensorData;
945
+ };
946
+ /** Per-class detection histogram [nc] — top-level convenience mirror of `classes.histogram`. */
947
+ readonly histogramTensor: {
948
+ get(ctx?: FrameContext): TensorData;
949
+ readonly value: TensorData;
950
+ };
951
+ private _totalFrames;
952
+ private _fps;
953
+ private _width;
954
+ private _height;
955
+ private _transformer;
956
+ private _stencilTexture?;
957
+ private readonly _maskSource?;
958
+ private readonly _matteSource?;
959
+ private readonly _cameraFov;
960
+ private _poseCache;
961
+ private _objectCache;
962
+ private _maskCache;
963
+ private _matteCache;
964
+ private _poseLmCache;
965
+ private _trackCache;
966
+ private _categoryCache;
967
+ private _classCache;
968
+ private _maskTrackCache;
969
+ private _registeredSignals;
970
+ constructor(options?: VisionBundleOptions);
971
+ /** Update source geometry once a lazily decoded clip's size is known. */
972
+ setFrameSize(width: number, height: number): void;
973
+ setStencilTexture(texture: GPUTexture): void;
974
+ get stencilTexture(): GPUTexture | undefined;
975
+ /**
976
+ * Reads the most recent result at or before `frame`. Vision results are written one
977
+ * frame behind the plate (the node renderer reads back the previous frame to infer),
978
+ * and pinned-signal layout runs before the current frame's inference, so a strict
979
+ * per-frame lookup would always miss. Walking back a few frames keeps signals live at
980
+ * a stable one-frame lag instead of snapping to neutral defaults.
981
+ */
982
+ private latestAtOrBefore;
983
+ invalidateSignals(): void;
984
+ setPoseResult(frame: number, result: PoseResult): void;
985
+ getPoseResult(frame: number): PoseResult;
986
+ setObjectResult(frame: number, result: {
987
+ objects: readonly TrackedObject[];
988
+ rawDetections?: readonly DetectedObject[];
989
+ } | readonly TrackedObject[]): void;
990
+ getObjectResult(frame: number): {
991
+ objects: readonly TrackedObject[];
992
+ rawDetections: readonly DetectedObject[];
993
+ };
994
+ setMaskResult(frame: number, masks: readonly InstanceMask[]): void;
995
+ getMaskResult(frame: number): readonly InstanceMask[];
996
+ setMatteResult(frame: number, matte: PersonMatte): void;
997
+ getMatteResult(frame: number): PersonMatte | undefined;
998
+ /**
999
+ * Serializable snapshot of one frame's object / class / mask signals.
1000
+ * Synchronous — reads only the per-frame caches, never triggers inference.
1001
+ */
1002
+ summary(frame?: number): VisionSummary;
1003
+ /** Primary person's 17 keypoints as a [17, 3] float32 tensor. */
1004
+ getPoseLandmarksTensor(frame: number): TensorData;
1005
+ /** Up to 16 active tracks as [16, 8]: [active, categoryHash, x, y, w, h, vx, vy]. */
1006
+ getObjectsTensor(frame: number, maxObjects?: number): TensorData;
1007
+ /** Per-mask coverage + solidity as [16, 2]. */
1008
+ getMasksTensor(frame: number, maxMasks?: number): TensorData;
1009
+ /** Per-class detection histogram for the frame as [nc] float32 (COCO 80 by default). */
1010
+ getClassHistogramTensor(frame: number, nc?: number): TensorData;
1011
+ private clamp;
1012
+ }
1013
+ //#endregion
1014
+ //#region src/spatial/camera-space-transformer.d.ts
1015
+ interface Camera3DSpec {
1016
+ readonly width: number;
1017
+ readonly height: number;
1018
+ readonly fov?: number;
1019
+ readonly cameraDistance?: number;
1020
+ }
1021
+ interface ProjectedScreenCoordinate {
1022
+ readonly x: number;
1023
+ readonly y: number;
1024
+ readonly z: number;
1025
+ readonly scale: number;
1026
+ }
1027
+ declare class SpatialLandmarkTransformer {
1028
+ private width;
1029
+ private height;
1030
+ private fovRad;
1031
+ private focalDistance;
1032
+ constructor(camera: Camera3DSpec);
1033
+ /**
1034
+ * Projects a normalized landmark [0, 1] into 2D/3D canvas coordinates.
1035
+ */
1036
+ projectNormalizedLandmark(landmark: Landmark3D, offsetZ?: number): ProjectedScreenCoordinate;
1037
+ /**
1038
+ * Projects a metric world landmark [X_w, Y_w, Z_w] in meters into canvas space.
1039
+ */
1040
+ projectWorldLandmark(worldLandmark: Landmark3D, subjectDistanceMeters?: number, scaleMetersToPixels?: number): ProjectedScreenCoordinate;
1041
+ }
1042
+ //#endregion
1043
+ //#region src/spatial/spatial-pin.d.ts
1044
+ declare function pinNodeToLandmark<T extends {
1045
+ x?: unknown;
1046
+ y?: unknown;
1047
+ z?: unknown;
1048
+ [key: string]: unknown;
1049
+ }>(node: T, target: LandmarkCoordinateSignals | {
1050
+ x: number;
1051
+ y: number;
1052
+ z?: number;
1053
+ screenX?: number;
1054
+ screenY?: number;
1055
+ }, options?: PinToLandmarkOptions): T;
1056
+ declare function pinNodeToObject<T extends {
1057
+ x?: unknown;
1058
+ y?: unknown;
1059
+ z?: unknown;
1060
+ width?: unknown;
1061
+ height?: unknown;
1062
+ opacity?: unknown;
1063
+ [key: string]: unknown;
1064
+ }>(node: T, target: ObjectTrackSignals | LandmarkCoordinateSignals | {
1065
+ x: number;
1066
+ y: number;
1067
+ z?: number;
1068
+ screenX?: number;
1069
+ screenY?: number;
1070
+ }, options?: PinToObjectOptions): T;
1071
+ //#endregion
1072
+ //#region src/tracking/temporal-object-tracker.d.ts
1073
+ interface TemporalTrackerOptions {
1074
+ /** Minimum Intersection-over-Union to associate a detection with an existing track. Default: 0.25 */
1075
+ readonly iouThreshold?: number;
1076
+ /** Number of frames a lost track is coasted via velocity extrapolation before deletion. Default: 15 */
1077
+ readonly maxMissedFrames?: number;
1078
+ /** Minimum consecutive hits before a tentative track is confirmed active. Default: 1 */
1079
+ readonly minHits?: number;
1080
+ /** Position smoothing weight [0, 1] where 1.0 is instantaneous and 0.0 is fully damped. Default: 0.75 */
1081
+ readonly positionSmoothing?: number;
1082
+ /** Whether tracks remain marked active during coasting frames. Default: true */
1083
+ readonly activeDuringCoast?: boolean;
1084
+ }
1085
+ /** Axis-aligned box in any consistent unit (pixels or normalized). */
1086
+
1087
+ declare class TemporalObjectTracker {
1088
+ private _nextTrackId;
1089
+ private _tracks;
1090
+ private _iouThreshold;
1091
+ private _maxMissedFrames;
1092
+ private _minHits;
1093
+ private _positionSmoothing;
1094
+ private _activeDuringCoast;
1095
+ constructor(options?: TemporalTrackerOptions);
1096
+ /**
1097
+ * Updates the multi-object tracker with new detections for the current frame.
1098
+ *
1099
+ * @param detections Raw detections found on the current frame
1100
+ * @param frame Current frame index
1101
+ * @param fps Video framerate (used for physical velocity estimation)
1102
+ * @returns Stable, temporal list of TrackedObjects
1103
+ */
1104
+ update(detections: readonly DetectedObject[], _frame: number, fps?: number): TrackedObject[];
1105
+ /**
1106
+ * Tracks objects across a full sequence of frames with gap interpolation,
1107
+ * boundary extrapolation (ensuring frame 0 through end are tracked),
1108
+ * and temporal Gaussian smoothing.
1109
+ *
1110
+ * Guarantees zero flicker, zero drift, and frame-accurate stability across the entire video.
1111
+ */
1112
+ trackSequence(perFrameDetections: readonly (readonly DetectedObject[])[], totalFrames: number, fps?: number): TrackedObject[][];
1113
+ /**
1114
+ * Resets all internal track state.
1115
+ */
1116
+ reset(): void;
1117
+ }
1118
+ //#endregion
1119
+ //#region src/tracking/pose-track-matcher.d.ts
1120
+
1121
+ //#endregion
1122
+ //#region src/vision-node.d.ts
1123
+ /**
1124
+ * Bundle returned by `VisionNode.attach()`: the reactive signals surface plus the lazy lifecycle
1125
+ * helpers (all zero-I/O until `runner()` really needs a model).
1126
+ */
1127
+ interface VisionAttachedBundle extends VisionBundle {
1128
+ readonly node: VisionNodeSpec;
1129
+ /** Warm the enabled tasks' models/sessions ahead of first use. */
1130
+ ready(): Promise<VisionRunner>;
1131
+ /** Lazily-created runner (downloads happen on first real inference). */
1132
+ runner(): VisionRunner;
1133
+ /** Release this node's runner/sessions. */
1134
+ close(): void;
1135
+ }
1136
+ /**
1137
+ * Vision node.
1138
+ *
1139
+ * LAZY BY CONSTRUCTION: creating a VisionNode performs ZERO I/O — no model downloads, no
1140
+ * sessions, no file probes. The first inference call (or an explicit `await vision.ready()`)
1141
+ * downloads the required models.
1142
+ */
1143
+ declare class VisionNode {
1144
+ readonly id: string;
1145
+ readonly kind: "vision";
1146
+ readonly source: VisionInputSource;
1147
+ readonly config: VisionConfig;
1148
+ readonly vision: VisionBundle;
1149
+ private _runner?;
1150
+ /** Runner construction options (modelsDir, provider, store, …) — injectable for tests/agents. */
1151
+ private readonly _runnerOptions;
1152
+ constructor(source: VisionInputSource, config?: VisionConfig, bundleOptions?: VisionBundleOptions, runnerOptions?: VisionRunnerOptions);
1153
+ /** Lazily-created runner; downloads happen on its first inference. */
1154
+ runner(): VisionRunner;
1155
+ /** Explicit warm-up — downloads the models for the enabled tasks, ahead of first inference. */
1156
+ ready(): Promise<VisionRunner>;
1157
+ close(): void;
1158
+ static attach(source: VisionInputSource, config?: VisionConfig, bundleOptions?: VisionBundleOptions): VisionAttachedBundle;
1159
+ toNode(): VisionNodeSpec;
1160
+ }
1161
+ //#endregion
1162
+ export { VisionImageInput as A, pinNodeToLandmark as B, SegmentationTexturePool as C, VisionAnalysisReport as D, TemporalObjectTracker as E, VisionRunner as F, OpticalFlowComputePipeline as G, CannyComputePipeline as H, VisionSession as I, TensorSource as J, TemporalDeflickerPipeline as K, VisionTensorInput as L, VisionModelStore as M, VisionModelStoreOptions as N, VisionBundle as O, VisionNode as P, VisionTensorOutputs as R, SegmentationResult as S, SpatialLandmarkTransformer as T, ControlNetMultiplexer as U, pinNodeToObject as V, DepthNormalsComputePipeline as W, TensorViewExport as Y, PinToLandmarkOptions as _, ClipPose as a, PoseResult as b, LandmarkCoordinateSignals as c, ObjectAnchorsSignals as d, ObjectBoundingBoxSignals as f, PersonMatte as g, ObjectTrackSignals as h, COCO_CLASSES as i, VisionModelDescriptor as j, VisionCompute as k, MaskTrackSignals as l, ObjectKinematicsSignals as m, COCO17_KEYPOINTS as n, ClipSubjectSource as o, ObjectCollectionSignals as p, TensorPipeline as q, COCO17_KEYPOINT_NAMES as r, InstanceMask as s, COCO17_BONES as t, ObjectAnchorName as u, PinToObjectOptions as v, SessionProvider as w, PoseSkeletonRenderer as x, PoseLandmarkSignals as y, analyzeSequence as z };
1163
+ //# sourceMappingURL=index-svAgwTY_.d.mts.map