@holoscript/core 8.0.8 → 8.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/bin/holoscript.cjs +5 -1
  2. package/dist/GLTFPipeline-L76YTXKA.js +15 -0
  3. package/dist/GLTFPipeline-ZWJN7GI6.cjs +36 -0
  4. package/dist/HoloCompositionParser-K76KTEEE.js +12 -0
  5. package/dist/HoloCompositionParser-UZH6Y4HO.cjs +45 -0
  6. package/dist/HoloScriptCodeParser-2D4ERFUZ.js +6 -0
  7. package/dist/HoloScriptCodeParser-UDRLDA7I.cjs +23 -0
  8. package/dist/HoloScriptPlusParser-FTMCGWXD.js +13 -0
  9. package/dist/HoloScriptPlusParser-LQR5GIKF.cjs +30 -0
  10. package/dist/HoloScriptRuntime-UTRLJI5L.js +12 -0
  11. package/dist/HoloScriptRuntime-YBYXJHJN.cjs +21 -0
  12. package/dist/SceneIRCompiler-63KA3M2F.js +17 -0
  13. package/dist/SceneIRCompiler-KWUFHZ4O.cjs +42 -0
  14. package/dist/{USDZExporter-AUHZODOF.cjs → USDZExporter-ML4UMIGC.cjs} +3 -3
  15. package/dist/{USDZExporter-GXB4AUSG.js → USDZExporter-ZFKLQ76G.js} +3 -3
  16. package/dist/agents/index.cjs +1 -1
  17. package/dist/agents/index.js +1 -1
  18. package/dist/audit/AuditLogger.d.ts +106 -0
  19. package/dist/audit/AuditQueryBuilder.d.ts +79 -0
  20. package/dist/audit/ComplianceReporter.d.ts +90 -0
  21. package/dist/audit/index.d.ts +13 -0
  22. package/dist/{chunk-FGMDMJM7.js → chunk-2BYAUHBO.js} +3 -3
  23. package/dist/{chunk-EDPYCLRC.cjs → chunk-2E6PP5UE.cjs} +83 -59
  24. package/dist/{chunk-GASCWJK5.js → chunk-2EGGAZT3.js} +65 -287
  25. package/dist/{chunk-SIEXCILW.js → chunk-2I3XAGMF.js} +3 -3
  26. package/dist/{chunk-OS533P33.cjs → chunk-2KKOYZYI.cjs} +1074 -1655
  27. package/dist/chunk-2MQKNDNH.js +51 -0
  28. package/dist/{chunk-7DMMMBCY.cjs → chunk-2X3IPCBK.cjs} +10 -10
  29. package/dist/chunk-2ZOTBO25.cjs +202 -0
  30. package/dist/chunk-356N4NPM.cjs +152 -0
  31. package/dist/{chunk-X3GJPRVK.cjs → chunk-36NPLOI4.cjs} +92 -81
  32. package/dist/{chunk-SLU6UPJI.cjs → chunk-37HHY7RH.cjs} +5 -5
  33. package/dist/{chunk-YDPEHCCI.cjs → chunk-3CDDRUER.cjs} +3 -118
  34. package/dist/chunk-3F7ZZWIN.js +1651 -0
  35. package/dist/chunk-3ILD7TKP.cjs +187 -0
  36. package/dist/{chunk-X27QRG4C.cjs → chunk-3IUHTGDD.cjs} +153 -41
  37. package/dist/{chunk-PXNZ6TME.js → chunk-4376VHNJ.js} +60 -36
  38. package/dist/{chunk-YKGPCZEE.cjs → chunk-4FIBOJW6.cjs} +10 -10
  39. package/dist/chunk-4Q7RKQQI.cjs +14195 -0
  40. package/dist/{chunk-YCM6QQRT.cjs → chunk-566ZB4LZ.cjs} +180 -8
  41. package/dist/{chunk-2Y3V22SG.js → chunk-5CURIYGT.js} +3 -3
  42. package/dist/{chunk-QBWNJXNR.js → chunk-5FYMCVBY.js} +5 -5
  43. package/dist/{chunk-ZA34AN3R.js → chunk-5LVFTGKH.js} +841 -12
  44. package/dist/chunk-63AUAIL6.js +48 -0
  45. package/dist/chunk-655FATJU.js +110 -0
  46. package/dist/{chunk-TQ377OLB.cjs → chunk-65S62L4D.cjs} +28 -22
  47. package/dist/chunk-6NTAZN5Z.cjs +502 -0
  48. package/dist/chunk-6TRX6AR2.js +9376 -0
  49. package/dist/chunk-6ZCCLKS2.cjs +51 -0
  50. package/dist/{chunk-MDR235RZ.js → chunk-734OB5SK.js} +721 -8
  51. package/dist/{chunk-Q2Q34NF3.js → chunk-77QI552M.js} +6 -6
  52. package/dist/{chunk-WKX5AMOY.js → chunk-7I74JWPW.js} +3 -3
  53. package/dist/{chunk-5FSKKMR7.cjs → chunk-7IDJDMPU.cjs} +232 -4
  54. package/dist/chunk-7VBKRGIZ.cjs +847 -0
  55. package/dist/{chunk-KCPHASCO.js → chunk-AATYYLYK.js} +5 -5
  56. package/dist/{chunk-WFKVS2K4.cjs → chunk-AUZRKIHQ.cjs} +1101 -55
  57. package/dist/{chunk-DTGBOSEM.cjs → chunk-AWXFEAQL.cjs} +12 -12
  58. package/dist/{chunk-THCK6ECW.js → chunk-B3CWTCK2.js} +231 -3
  59. package/dist/chunk-BCP4E7MD.cjs +997 -0
  60. package/dist/chunk-BG7RPYJP.js +91 -0
  61. package/dist/{chunk-VF257YKO.js → chunk-BP4KTMLY.js} +117 -5
  62. package/dist/{chunk-YN6IETRZ.js → chunk-BQJ3YBF3.js} +6424 -987
  63. package/dist/{chunk-KOUAQL2B.cjs → chunk-CANAL6CT.cjs} +1569 -168
  64. package/dist/{chunk-FDSGHPAK.js → chunk-CBSDJF3B.js} +3 -3
  65. package/dist/{chunk-FEWUHQNM.cjs → chunk-CFVK26P4.cjs} +4 -4
  66. package/dist/{chunk-M7K4LE66.cjs → chunk-CI33NINL.cjs} +4 -4
  67. package/dist/{chunk-2OWDB4FB.js → chunk-CKV5NYAE.js} +6 -6
  68. package/dist/{chunk-LPS5AMQD.cjs → chunk-CM4NHXVO.cjs} +24 -24
  69. package/dist/chunk-D3HSRXYB.js +115 -0
  70. package/dist/{chunk-FNHJRI32.js → chunk-DBH3D2MU.js} +1561 -160
  71. package/dist/{chunk-GW3LKD5C.js → chunk-DJNH4HFW.js} +3 -3
  72. package/dist/{chunk-2GCNOI2U.cjs → chunk-DN6F4DHH.cjs} +9 -3
  73. package/dist/chunk-DQRJ5RJG.js +432 -0
  74. package/dist/{chunk-C7ZBSV2Q.js → chunk-DUG3OQAS.js} +106 -43
  75. package/dist/chunk-ECUYJOJ2.cjs +199 -0
  76. package/dist/chunk-EEMTCAK7.js +182 -0
  77. package/dist/{chunk-3SKLAUDD.cjs → chunk-EI3J6LTW.cjs} +359 -581
  78. package/dist/{chunk-SSSN7VAM.js → chunk-EM2OGPYE.js} +4 -4
  79. package/dist/{chunk-56VOWURB.cjs → chunk-ENZCIQZC.cjs} +522 -453
  80. package/dist/chunk-ESBXUYOC.cjs +836 -0
  81. package/dist/{chunk-L5U4W6JC.js → chunk-ESSEF6U2.js} +4 -4
  82. package/dist/chunk-ET3AN4W3.js +824 -0
  83. package/dist/chunk-EXKSFGSX.cjs +14 -14
  84. package/dist/{chunk-I76GIKN7.cjs → chunk-F3YT6GUF.cjs} +17 -17
  85. package/dist/{chunk-WRWEX5ZF.js → chunk-F75DZBBI.js} +3 -3
  86. package/dist/{chunk-4JGRWHZJ.js → chunk-FG6PYGIZ.js} +12 -6
  87. package/dist/chunk-FGGJQRLZ.js +14 -14
  88. package/dist/{chunk-SXOSDZD6.js → chunk-FWCHPCD4.js} +128 -10
  89. package/dist/{chunk-XW6IXEQH.cjs → chunk-G35CAQ7I.cjs} +5 -5
  90. package/dist/{chunk-7VMGP2FW.js → chunk-G6KACNMO.js} +132 -188
  91. package/dist/{chunk-FJPADH77.cjs → chunk-GAWJJAGT.cjs} +6 -6
  92. package/dist/chunk-GGR7QUKK.cjs +4724 -0
  93. package/dist/chunk-GIBF4BHH.js +14098 -0
  94. package/dist/{chunk-AWB7QYY6.cjs → chunk-GILYQ5VH.cjs} +6 -6
  95. package/dist/{chunk-FWVYAMNW.cjs → chunk-GKFCHGCM.cjs} +4 -4
  96. package/dist/{chunk-Y3ZFVUUU.js → chunk-GLEJ2TLS.js} +3 -3
  97. package/dist/{chunk-3GWWJT7L.js → chunk-GP3OKSKT.js} +13 -13
  98. package/dist/chunk-GTIPOEHN.js +196 -0
  99. package/dist/{chunk-LMJ5EBV7.cjs → chunk-GZPUA2TL.cjs} +16 -15
  100. package/dist/{chunk-IELX2OKI.js → chunk-H4LJ4HEA.js} +3 -115
  101. package/dist/{chunk-ACVWFGBI.cjs → chunk-HCX4SMFK.cjs} +3 -3
  102. package/dist/{chunk-HYNTS5CP.js → chunk-HHRZ6STP.js} +24 -2
  103. package/dist/chunk-HIDEIEFG.js +48 -0
  104. package/dist/{chunk-W6RW64BB.cjs → chunk-HSWBIDZM.cjs} +228 -5
  105. package/dist/{chunk-GSOUNWEL.js → chunk-HVX7QQYK.js} +1035 -1616
  106. package/dist/{chunk-TRCGG42I.cjs → chunk-IFW5IW4L.cjs} +6502 -1019
  107. package/dist/{chunk-F5LKJ6F5.cjs → chunk-IJU6AS67.cjs} +32 -28
  108. package/dist/{chunk-TVANHNJ7.js → chunk-IK6Z2HNC.js} +173 -3
  109. package/dist/{chunk-QGMUTVVH.cjs → chunk-IS7NTKY5.cjs} +20 -20
  110. package/dist/{chunk-YFVQWSNJ.js → chunk-IXWGYWH6.js} +3 -3
  111. package/dist/chunk-J2DAS2PL.js +148 -0
  112. package/dist/chunk-JBQXZIWB.js +148 -0
  113. package/dist/chunk-JBYBMBMW.js +261 -0
  114. package/dist/{chunk-LWUOUCYL.js → chunk-JEJ7TT54.js} +5 -5
  115. package/dist/{chunk-DUCB6LGL.js → chunk-JOTCTHN5.js} +211 -5
  116. package/dist/{chunk-47RUFYKR.js → chunk-K56UVEXV.js} +3 -3
  117. package/dist/{chunk-XSFNHP2E.js → chunk-KB26H447.js} +3 -3
  118. package/dist/{chunk-3NGDZZR4.js → chunk-KEYG7HGY.js} +430 -37
  119. package/dist/{chunk-DY72BMU5.js → chunk-KFVNCW4Q.js} +4 -4
  120. package/dist/chunk-KPGC7SK2.js +192 -0
  121. package/dist/chunk-KROXXBK5.cjs +53 -0
  122. package/dist/{chunk-ZPZAVHXL.cjs → chunk-LB3ZZMKT.cjs} +137 -19
  123. package/dist/chunk-LDYZWNJW.cjs +1654 -0
  124. package/dist/{chunk-ULMSSHCJ.cjs → chunk-LMB555QB.cjs} +405 -38
  125. package/dist/{chunk-CBJY23VL.js → chunk-MD4IVS42.js} +3 -3
  126. package/dist/{chunk-VMLKSV26.js → chunk-MDDWEBCX.js} +226 -3
  127. package/dist/chunk-MUWH4QK5.cjs +94 -0
  128. package/dist/{chunk-T6W3Z3SH.cjs → chunk-N2ILK7BF.cjs} +4 -4
  129. package/dist/{chunk-6EX3I5P4.cjs → chunk-N74QRJGP.cjs} +6 -6
  130. package/dist/chunk-NFFHLX37.cjs +132 -0
  131. package/dist/chunk-NJSYWX7H.js +190 -0
  132. package/dist/{chunk-SH5PPVK7.cjs → chunk-NQN5LFN4.cjs} +165 -221
  133. package/dist/chunk-NTQRFOPP.cjs +56 -0
  134. package/dist/{chunk-YFWRJW4B.js → chunk-NWMJPTVL.js} +51 -55
  135. package/dist/{chunk-63ZGNR2T.cjs → chunk-OC6GV5QH.cjs} +42 -42
  136. package/dist/{chunk-7E7GCQCK.js → chunk-OG3MBHM3.js} +9 -3
  137. package/dist/chunk-OMNHTCS4.cjs +264 -0
  138. package/dist/chunk-OQXB6NNC.cjs +117 -0
  139. package/dist/{chunk-Y57W2CT5.cjs → chunk-OV46CCA2.cjs} +51 -55
  140. package/dist/{chunk-6PRZIHGL.cjs → chunk-OV6HHKLE.cjs} +21 -266
  141. package/dist/{chunk-C37BHB7N.cjs → chunk-P26YYPOO.cjs} +5 -5
  142. package/dist/{chunk-2BZHWUSR.cjs → chunk-P7JEKJTZ.cjs} +16 -16
  143. package/dist/{chunk-NGBXXZLL.cjs → chunk-PDXX5UI4.cjs} +45 -45
  144. package/dist/{chunk-FHQFPYV4.js → chunk-PJFTTSKE.js} +8 -7
  145. package/dist/{chunk-GVFJ6T4S.cjs → chunk-PVODJEJ7.cjs} +721 -8
  146. package/dist/{chunk-ZZ7RO2UQ.js → chunk-Q265VZJ4.js} +3 -3
  147. package/dist/{chunk-E7JP3BS3.cjs → chunk-Q47JEE2C.cjs} +4 -4
  148. package/dist/chunk-QBY7LRN2.js +281 -0
  149. package/dist/{chunk-Z6PMDS4G.js → chunk-QDQWKSU3.js} +1090 -53
  150. package/dist/{chunk-GH6C2QGW.cjs → chunk-QEDMOGF3.cjs} +857 -16
  151. package/dist/{chunk-5WUNN6ZN.cjs → chunk-QHSAVOOL.cjs} +24 -2
  152. package/dist/chunk-QJNCDVYM.cjs +137 -0
  153. package/dist/chunk-QM7FJB5W.js +4717 -0
  154. package/dist/chunk-QQFB4RT2.cjs +448 -0
  155. package/dist/chunk-QSYBHQAD.cjs +196 -0
  156. package/dist/{chunk-UGXHYIWT.cjs → chunk-QUJ3ZB55.cjs} +28 -28
  157. package/dist/{chunk-2YSNA2F2.cjs → chunk-QVJMDVYZ.cjs} +5 -5
  158. package/dist/chunk-RAJMAX6D.js +131 -0
  159. package/dist/{chunk-VVKVQZI6.js → chunk-RAN3ECAS.js} +3 -3
  160. package/dist/chunk-RKGUZBOC.js +79 -0
  161. package/dist/{chunk-HLFDZ35S.cjs → chunk-RRQIAJLQ.cjs} +8 -8
  162. package/dist/{chunk-PABONWKI.js → chunk-RXQNRZ5F.js} +3 -3
  163. package/dist/{chunk-7ZHYEITD.cjs → chunk-S4O7CFHQ.cjs} +10 -11
  164. package/dist/chunk-SE7ANBGN.js +128 -0
  165. package/dist/{chunk-X2AVEAZM.cjs → chunk-SJIRCTIS.cjs} +176 -2
  166. package/dist/{chunk-WXQ57LAO.js → chunk-SQXAZHDG.js} +4 -4
  167. package/dist/chunk-SR73L5ZP.cjs +84 -0
  168. package/dist/{chunk-OABEO6HH.js → chunk-SZOLTWWD.js} +2349 -214
  169. package/dist/{chunk-5JEU52DW.js → chunk-TPZ3BN2D.js} +3 -3
  170. package/dist/{chunk-QFU53KRH.js → chunk-TSTFYGGX.js} +4 -5
  171. package/dist/{chunk-EBS32AJI.cjs → chunk-TZCFKZ6Z.cjs} +5 -5
  172. package/dist/chunk-UCVZXQ63.js +724 -0
  173. package/dist/chunk-UGQ3QNV6.js +992 -0
  174. package/dist/chunk-UNMVGZVW.js +142 -0
  175. package/dist/{chunk-TEVX443G.js → chunk-UTUD6GJI.js} +178 -6
  176. package/dist/chunk-UXBYA7DV.cjs +155 -0
  177. package/dist/chunk-V6GXFSK7.cjs +443 -0
  178. package/dist/chunk-VHORVGCG.cjs +761 -0
  179. package/dist/{chunk-B4EKV6HQ.js → chunk-VKCTYLDN.js} +500 -442
  180. package/dist/{chunk-O3MGZDCT.cjs → chunk-VTEXJOSD.cjs} +63 -63
  181. package/dist/chunk-VVAAZITA.cjs +287 -0
  182. package/dist/{chunk-V7AKE5VT.cjs → chunk-W2GA3EQB.cjs} +435 -42
  183. package/dist/chunk-W4GABFCR.js +37 -0
  184. package/dist/chunk-WKEK4NCA.js +490 -0
  185. package/dist/{chunk-5A4TCHOC.cjs → chunk-WNYXT4TE.cjs} +4 -4
  186. package/dist/{chunk-S762UEV5.js → chunk-WTH23ISI.js} +6 -6
  187. package/dist/{chunk-BTKZGHAV.js → chunk-WWNCM473.js} +10 -6
  188. package/dist/{chunk-7X5PNIQJ.js → chunk-X3YFRH6K.js} +27 -25
  189. package/dist/{chunk-4YNYPHH3.cjs → chunk-X75H75UY.cjs} +2351 -213
  190. package/dist/{chunk-LYJJI7ZK.cjs → chunk-XCUDDFKC.cjs} +216 -9
  191. package/dist/chunk-YAO4HPJL.cjs +120 -0
  192. package/dist/chunk-YKY2JBER.cjs +9443 -0
  193. package/dist/chunk-YP5CHEYU.cjs +154 -0
  194. package/dist/{chunk-WRNEH5MO.js → chunk-YW3I2FQL.js} +18 -7
  195. package/dist/{chunk-BRNUPDHJ.js → chunk-Z557DVYN.js} +386 -19
  196. package/dist/{chunk-VSACG2AR.js → chunk-Z6LZUYZF.js} +21 -264
  197. package/dist/chunk-ZHPMP447.cjs +43 -0
  198. package/dist/{chunk-LODTHGST.cjs → chunk-ZK7KX5CD.cjs} +133 -70
  199. package/dist/{chunk-CCPSNT6B.cjs → chunk-ZRPALBQB.cjs} +5 -5
  200. package/dist/chunk-ZVFHPMC5.js +824 -0
  201. package/dist/chunk-ZVQMKUGJ.js +443 -0
  202. package/dist/cli/holoscript-runner.cjs +86 -48
  203. package/dist/cli/holoscript-runner.js +54 -16
  204. package/dist/codebase/index.cjs +1 -1
  205. package/dist/codebase/index.js +1 -1
  206. package/dist/compiler/agent-inference.cjs +11 -11
  207. package/dist/compiler/agent-inference.js +9 -6
  208. package/dist/compiler/android-xr.cjs +13 -12
  209. package/dist/compiler/android-xr.js +11 -10
  210. package/dist/compiler/android.cjs +12 -12
  211. package/dist/compiler/android.js +10 -10
  212. package/dist/compiler/business-quest.cjs +10 -10
  213. package/dist/compiler/business-quest.js +2 -2
  214. package/dist/compiler/coco.cjs +1 -1
  215. package/dist/compiler/coco.js +1 -1
  216. package/dist/compiler/context.cjs +9 -9
  217. package/dist/compiler/context.js +6 -6
  218. package/dist/compiler/daimon-seed.cjs +36 -0
  219. package/dist/compiler/daimon-seed.js +12 -0
  220. package/dist/compiler/domain-block-utils.cjs +205 -156
  221. package/dist/compiler/domain-block-utils.js +8 -7
  222. package/dist/compiler/dtdl.cjs +10 -10
  223. package/dist/compiler/dtdl.js +7 -7
  224. package/dist/compiler/gltf-pipeline.cjs +9 -9
  225. package/dist/compiler/gltf-pipeline.js +2 -2
  226. package/dist/compiler/godot.cjs +10 -9
  227. package/dist/compiler/godot.js +9 -8
  228. package/dist/compiler/incremental.cjs +11 -11
  229. package/dist/compiler/incremental.js +6 -6
  230. package/dist/compiler/index.cjs +2585 -3273
  231. package/dist/compiler/index.d.ts +149 -35
  232. package/dist/compiler/index.js +2197 -3102
  233. package/dist/compiler/ios.cjs +11 -11
  234. package/dist/compiler/ios.js +9 -9
  235. package/dist/compiler/llm-provider-capabilities.cjs +9 -9
  236. package/dist/compiler/llm-provider-capabilities.js +6 -6
  237. package/dist/compiler/nodetoy.cjs +1 -1
  238. package/dist/compiler/nodetoy.js +1 -1
  239. package/dist/compiler/openxr.cjs +11 -10
  240. package/dist/compiler/openxr.js +10 -9
  241. package/dist/compiler/remotion.cjs +1 -1
  242. package/dist/compiler/remotion.js +1 -1
  243. package/dist/compiler/reproducibility.cjs +1 -1
  244. package/dist/compiler/reproducibility.js +1 -1
  245. package/dist/compiler/sdf.cjs +11 -10
  246. package/dist/compiler/sdf.js +9 -8
  247. package/dist/compiler/semantic-scene.cjs +7 -7
  248. package/dist/compiler/semantic-scene.js +2 -2
  249. package/dist/compiler/state.cjs +9 -9
  250. package/dist/compiler/state.js +7 -7
  251. package/dist/compiler/trait-composition.cjs +11 -11
  252. package/dist/compiler/trait-composition.js +7 -7
  253. package/dist/compiler/traits/ProvenanceSemiring.d.ts +167 -0
  254. package/dist/compiler/traits/Semiring.d.ts +26 -0
  255. package/dist/compiler/unity.cjs +11 -10
  256. package/dist/compiler/unity.js +10 -9
  257. package/dist/compiler/unreal.cjs +12 -11
  258. package/dist/compiler/unreal.js +10 -9
  259. package/dist/compiler/urdf.cjs +18 -17
  260. package/dist/compiler/urdf.js +9 -8
  261. package/dist/compiler/usd-physics.cjs +11 -10
  262. package/dist/compiler/usd-physics.js +8 -7
  263. package/dist/compiler/visionos.cjs +11 -10
  264. package/dist/compiler/visionos.js +10 -9
  265. package/dist/compiler/vrchat.cjs +11 -10
  266. package/dist/compiler/vrchat.js +9 -8
  267. package/dist/compiler/wasm.cjs +14 -13
  268. package/dist/compiler/wasm.js +9 -8
  269. package/dist/compiler/webgpu.cjs +10 -9
  270. package/dist/compiler/webgpu.js +9 -8
  271. package/dist/constants.cjs +398 -0
  272. package/dist/constants.js +9 -0
  273. package/dist/coordinators/index.cjs +4 -1
  274. package/dist/coordinators/index.js +4 -1
  275. package/dist/debugger.cjs +11 -9
  276. package/dist/debugger.js +9 -7
  277. package/dist/{dist-ACXG6IH5.cjs → dist-GRMOP2UL.cjs} +341 -65
  278. package/dist/{dist-VD4L6V7Q.js → dist-ZBUKU2JG.js} +333 -63
  279. package/dist/entries/interop.cjs +23 -23
  280. package/dist/entries/interop.js +3 -3
  281. package/dist/entries/scripting.cjs +12 -11
  282. package/dist/entries/scripting.js +8 -7
  283. package/dist/evolution/index.cjs +66 -0
  284. package/dist/evolution/index.d.ts +162 -0
  285. package/dist/evolution/index.js +17 -0
  286. package/dist/hololand/index.cjs +41 -37
  287. package/dist/hololand/index.js +3 -3
  288. package/dist/index.cjs +12394 -3224
  289. package/dist/index.d.ts +260 -18
  290. package/dist/index.js +10755 -2182
  291. package/dist/keyword-registry/PluginKeywordRegistry.d.ts +138 -0
  292. package/dist/keyword-registry/index.cjs +29 -0
  293. package/dist/keyword-registry/index.d.ts +1 -0
  294. package/dist/keyword-registry/index.js +4 -0
  295. package/dist/math/tropical-spmv.cjs +11 -11
  296. package/dist/math/tropical-spmv.d.ts +1 -0
  297. package/dist/math/tropical-spmv.js +2 -2
  298. package/dist/math/tropicalSpmv.d.ts +43 -0
  299. package/dist/math/vec3.cjs +1 -1
  300. package/dist/math/vec3.js +1 -1
  301. package/dist/matter/StagedMatter.d.ts +82 -0
  302. package/dist/matter/index.cjs +17 -0
  303. package/dist/matter/index.d.ts +1 -0
  304. package/dist/matter/index.js +4 -0
  305. package/dist/{ml-dsa-Z7JDKW4L.js → ml-dsa-J6VKVT4K.js} +3 -3
  306. package/dist/{ml-dsa-FSKBTE3W.cjs → ml-dsa-MTIK4ZUQ.cjs} +23 -23
  307. package/dist/paper-0c-spike/index.cjs +1 -1
  308. package/dist/paper-0c-spike/index.js +1 -1
  309. package/dist/parameter-envelope/ParameterEnvelope.d.ts +128 -0
  310. package/dist/parameter-envelope/index.cjs +17 -0
  311. package/dist/parameter-envelope/index.d.ts +2 -0
  312. package/dist/parameter-envelope/index.js +4 -0
  313. package/dist/parser/HoloCompositionTypes.d.ts +2013 -0
  314. package/dist/parser/PipelineParser.d.ts +162 -0
  315. package/dist/parser.cjs +36 -20
  316. package/dist/parser.js +13 -9
  317. package/dist/plugin-manifest/ManifestAutoLoader.d.ts +35 -0
  318. package/dist/plugin-manifest/PluginManifest.d.ts +156 -0
  319. package/dist/plugin-manifest/index.cjs +25 -0
  320. package/dist/plugin-manifest/index.d.ts +2 -0
  321. package/dist/plugin-manifest/index.js +4 -0
  322. package/dist/plugin-solver-contract/PluginSolverContract.d.ts +288 -0
  323. package/dist/plugin-solver-contract/index.cjs +41 -0
  324. package/dist/plugin-solver-contract/index.d.ts +1 -0
  325. package/dist/plugin-solver-contract/index.js +4 -0
  326. package/dist/policy/ContentPolicyGate.d.ts +51 -0
  327. package/dist/policy/PolicyPack.d.ts +120 -0
  328. package/dist/policy/blocklist.d.ts +32 -0
  329. package/dist/policy/defaults.d.ts +44 -0
  330. package/dist/policy/index.cjs +106 -0
  331. package/dist/policy/index.d.ts +17 -0
  332. package/dist/policy/index.js +5 -0
  333. package/dist/policy/jsonLogic.d.ts +31 -0
  334. package/dist/policy/types.d.ts +174 -0
  335. package/dist/proof-composition/ProofCompositionLaw.d.ts +93 -0
  336. package/dist/proof-composition/index.cjs +25 -0
  337. package/dist/proof-composition/index.d.ts +1 -0
  338. package/dist/proof-composition/index.js +4 -0
  339. package/dist/receipts/hash-policy.d.ts +85 -0
  340. package/dist/reconstruction/index.cjs +75 -47
  341. package/dist/reconstruction/index.js +5 -5
  342. package/dist/runtime/plugin-trait-registrar.d.ts +36 -0
  343. package/dist/runtime.cjs +81 -79
  344. package/dist/runtime.js +9 -7
  345. package/dist/scene-presets-EDKYZ5GW.js +4 -0
  346. package/dist/scene-presets-NCW2CFRS.cjs +17 -0
  347. package/dist/self-improvement/index.cjs +1 -1
  348. package/dist/self-improvement/index.js +1 -1
  349. package/dist/{src-PT2FERDV.cjs → src-G3D7ZATQ.cjs} +545 -21
  350. package/dist/{src-J6CM4AUR.js → src-UXYA7HM6.js} +539 -16
  351. package/dist/storage/index.cjs +10 -10
  352. package/dist/storage/index.js +3 -3
  353. package/dist/testing.cjs +1 -1
  354. package/dist/testing.js +1 -1
  355. package/dist/tools/index.cjs +3631 -0
  356. package/dist/tools/index.js +3581 -0
  357. package/dist/traitDocs/traitDocs.cjs +9 -9
  358. package/dist/traitDocs/traitDocs.d.ts +1 -0
  359. package/dist/traitDocs/traitDocs.js +3 -3
  360. package/dist/traits/ControlLoopTrait.d.ts +154 -0
  361. package/dist/traits/KinematicChainTrait.d.ts +116 -0
  362. package/dist/traits/SensorSamplingTrait.d.ts +154 -0
  363. package/dist/traits/TraitTypes.d.ts +270 -0
  364. package/dist/traits/TransactionTrait.d.ts +121 -0
  365. package/dist/traits/botanical-lotus.cjs +54 -50
  366. package/dist/traits/botanical-lotus.js +2 -5
  367. package/dist/traits/control-loop.cjs +21 -0
  368. package/dist/traits/control-loop.d.ts +1 -0
  369. package/dist/traits/control-loop.js +4 -0
  370. package/dist/traits/engines/cloth-verlet.d.ts +65 -0
  371. package/dist/traits/engines/index.cjs +19 -19
  372. package/dist/traits/engines/index.d.ts +15 -275
  373. package/dist/traits/engines/index.js +3 -3
  374. package/dist/traits/engines/motion-data-schema.d.ts +119 -0
  375. package/dist/traits/engines/motion-matching.d.ts +102 -0
  376. package/dist/traits/engines/noise.d.ts +25 -0
  377. package/dist/traits/engines/onnx-adapter.d.ts +173 -0
  378. package/dist/traits/engines/onnx-motion-matching.d.ts +163 -0
  379. package/dist/traits/engines/pfnn-network.d.ts +92 -0
  380. package/dist/traits/engines/synthetic-walk-cycle.d.ts +38 -0
  381. package/dist/traits/engines/tensor-ops.d.ts +15 -0
  382. package/dist/traits/index.cjs +2789 -1259
  383. package/dist/traits/index.d.ts +35 -0
  384. package/dist/traits/index.js +1692 -411
  385. package/dist/traits/kinematic-chain.cjs +25 -0
  386. package/dist/traits/kinematic-chain.d.ts +1 -0
  387. package/dist/traits/kinematic-chain.js +4 -0
  388. package/dist/traits/sensor-sampling.cjs +33 -0
  389. package/dist/traits/sensor-sampling.d.ts +1 -0
  390. package/dist/traits/sensor-sampling.js +4 -0
  391. package/dist/traits/simulation-solver-factory.cjs +1 -1
  392. package/dist/traits/simulation-solver-factory.js +1 -1
  393. package/dist/traits/transaction.cjs +29 -0
  394. package/dist/traits/transaction.d.ts +1 -0
  395. package/dist/traits/transaction.js +4 -0
  396. package/dist/traits/webcam-gaze.cjs +1 -1
  397. package/dist/traits/webcam-gaze.js +1 -1
  398. package/dist/type-checker.cjs +7 -6
  399. package/dist/type-checker.js +5 -4
  400. package/dist/types/AdvancedTypeSystem.d.ts +489 -0
  401. package/dist/types/HoloScriptPlus.d.ts +810 -0
  402. package/dist/types/base.d.ts +248 -0
  403. package/dist/types.d.ts +799 -0
  404. package/dist/world/index.cjs +3 -4
  405. package/dist/world/index.js +3 -4
  406. package/dist/world-model/index.cjs +1 -1
  407. package/dist/world-model/index.js +1 -1
  408. package/dist/wot/index.cjs +1 -1
  409. package/dist/wot/index.js +1 -1
  410. package/package.json +113 -46
  411. package/dist/GLTFPipeline-3EJLL3TS.cjs +0 -38
  412. package/dist/GLTFPipeline-3OWJV2VK.js +0 -17
  413. package/dist/HoloScriptPlusParser-ADWRY5OS.cjs +0 -698
  414. package/dist/HoloScriptPlusParser-JLJDXHSC.js +0 -693
  415. package/dist/HoloScriptPlusParser-QCGFPWIL.cjs +0 -27
  416. package/dist/HoloScriptPlusParser-WENAFEFV.js +0 -10
  417. package/dist/HoloScriptRuntime-GGRVEU4T.cjs +0 -19
  418. package/dist/HoloScriptRuntime-GJK6VJPH.js +0 -10
  419. package/dist/chunk-22Q5A6RV.js +0 -979
  420. package/dist/chunk-4C57PR42.js +0 -468
  421. package/dist/chunk-4W5G5QVL.cjs +0 -847
  422. package/dist/chunk-5ET6L4NS.js +0 -487
  423. package/dist/chunk-C4GSLCHE.cjs +0 -7153
  424. package/dist/chunk-F2G6CWFT.js +0 -7089
  425. package/dist/chunk-G6PNEASF.cjs +0 -814
  426. package/dist/chunk-GTA4Q3A3.js +0 -1491
  427. package/dist/chunk-HCCQLAA4.cjs +0 -74
  428. package/dist/chunk-HFSVMKM3.cjs +0 -72
  429. package/dist/chunk-KAIVDEIG.cjs +0 -4539
  430. package/dist/chunk-KQU64CIX.cjs +0 -1508
  431. package/dist/chunk-MSYSQ2AJ.js +0 -4533
  432. package/dist/chunk-NHJLP37F.js +0 -70
  433. package/dist/chunk-NHYRRAGI.cjs +0 -490
  434. package/dist/chunk-OIQYIIO3.cjs +0 -473
  435. package/dist/chunk-OL46QLBJ.js +0 -61
  436. package/dist/chunk-SKZPC5AG.cjs +0 -984
  437. package/dist/chunk-SLHLXUMO.js +0 -445
  438. package/dist/chunk-UOIGFQXC.cjs +0 -9750
  439. package/dist/chunk-UOL6Y5TD.cjs +0 -759
  440. package/dist/chunk-UVFI7XIR.cjs +0 -452
  441. package/dist/chunk-VEPGBETF.js +0 -844
  442. package/dist/chunk-XQ5MWMP2.js +0 -756
  443. package/dist/chunk-XT6JY5W5.js +0 -9684
  444. package/dist/chunk-YRRAUB35.js +0 -811
  445. package/dist/compiler/GasOptimizationAnalyzer.d.ts +0 -73
  446. package/dist/compiler/NFTMarketplaceCompiler.d.ts +0 -23
  447. package/dist/compiler/ar.cjs +0 -23
  448. package/dist/compiler/ar.js +0 -11
  449. package/dist/compiler/babylon.cjs +0 -21
  450. package/dist/compiler/babylon.js +0 -15
  451. package/dist/compiler/multi-layer.cjs +0 -24
  452. package/dist/compiler/multi-layer.js +0 -15
  453. package/dist/compiler/playcanvas.cjs +0 -19
  454. package/dist/compiler/playcanvas.js +0 -13
  455. package/dist/compiler/r3f.cjs +0 -39
  456. package/dist/compiler/r3f.d.ts +0 -22
  457. package/dist/compiler/r3f.js +0 -17
  458. package/dist/compiler/vrr.cjs +0 -24
  459. package/dist/compiler/vrr.js +0 -12
  460. package/dist/parser/NFTMarketplaceTypes.d.ts +0 -191
  461. package/dist/playwright-3AT3AKTV.cjs +0 -98673
  462. package/dist/playwright-VZPDVUEQ.js +0 -98660
@@ -1,33 +1,33 @@
1
1
  'use strict';
2
2
 
3
- var chunk5FSKKMR7_cjs = require('../chunk-5FSKKMR7.cjs');
4
- require('../chunk-HCCQLAA4.cjs');
3
+ var chunk7IDJDMPU_cjs = require('../chunk-7IDJDMPU.cjs');
4
+ require('../chunk-ZHPMP447.cjs');
5
5
 
6
- chunk5FSKKMR7_cjs.init_traitDocs();
6
+ chunk7IDJDMPU_cjs.init_traitDocs();
7
7
 
8
8
  Object.defineProperty(exports, "TRAIT_DOCS", {
9
9
  enumerable: true,
10
- get: function () { return chunk5FSKKMR7_cjs.TRAIT_DOCS; }
10
+ get: function () { return chunk7IDJDMPU_cjs.TRAIT_DOCS; }
11
11
  });
12
12
  Object.defineProperty(exports, "formatTraitDocAsMarkdown", {
13
13
  enumerable: true,
14
- get: function () { return chunk5FSKKMR7_cjs.formatTraitDocAsMarkdown; }
14
+ get: function () { return chunk7IDJDMPU_cjs.formatTraitDocAsMarkdown; }
15
15
  });
16
16
  Object.defineProperty(exports, "formatTraitDocCompact", {
17
17
  enumerable: true,
18
- get: function () { return chunk5FSKKMR7_cjs.formatTraitDocCompact; }
18
+ get: function () { return chunk7IDJDMPU_cjs.formatTraitDocCompact; }
19
19
  });
20
20
  Object.defineProperty(exports, "getAllTraitNames", {
21
21
  enumerable: true,
22
- get: function () { return chunk5FSKKMR7_cjs.getAllTraitNames; }
22
+ get: function () { return chunk7IDJDMPU_cjs.getAllTraitNames; }
23
23
  });
24
24
  Object.defineProperty(exports, "getTraitDoc", {
25
25
  enumerable: true,
26
- get: function () { return chunk5FSKKMR7_cjs.getTraitDoc; }
26
+ get: function () { return chunk7IDJDMPU_cjs.getTraitDoc; }
27
27
  });
28
28
  Object.defineProperty(exports, "getTraitsByCategory", {
29
29
  enumerable: true,
30
- get: function () { return chunk5FSKKMR7_cjs.getTraitsByCategory; }
30
+ get: function () { return chunk7IDJDMPU_cjs.getTraitsByCategory; }
31
31
  });
32
32
  //# sourceMappingURL=traitDocs.cjs.map
33
33
  //# sourceMappingURL=traitDocs.cjs.map
@@ -23,6 +23,7 @@ export interface PropertyDoc {
23
23
  description: string;
24
24
  default?: string;
25
25
  required?: boolean;
26
+ range?: [number, number];
26
27
  }
27
28
  export interface MethodDoc {
28
29
  name: string;
@@ -1,6 +1,6 @@
1
- import { init_traitDocs } from '../chunk-THCK6ECW.js';
2
- export { TRAIT_DOCS, formatTraitDocAsMarkdown, formatTraitDocCompact, getAllTraitNames, getTraitDoc, getTraitsByCategory } from '../chunk-THCK6ECW.js';
3
- import '../chunk-OL46QLBJ.js';
1
+ import { init_traitDocs } from '../chunk-B3CWTCK2.js';
2
+ export { TRAIT_DOCS, formatTraitDocAsMarkdown, formatTraitDocCompact, getAllTraitNames, getTraitDoc, getTraitsByCategory } from '../chunk-B3CWTCK2.js';
3
+ import '../chunk-W4GABFCR.js';
4
4
 
5
5
  init_traitDocs();
6
6
  //# sourceMappingURL=traitDocs.js.map
@@ -0,0 +1,154 @@
1
+ /**
2
+ * ControlLoopTrait — PID and Model-Predictive Control (MPC) in a single trait (H2).
3
+ *
4
+ * ## PID controller
5
+ *
6
+ * Classic discrete-time PID with anti-windup integral clamping and optional
7
+ * derivative filtering:
8
+ *
9
+ * u[k] = Kp·e[k] + Ki·Σe·dt + Kd·(e[k]-e[k-1])/dt
10
+ *
11
+ * Anti-windup: integral is clamped to [-iMax, iMax] every step.
12
+ * Derivative filter: optional first-order low-pass on the derivative term
13
+ * (d_filtered = α·d_raw + (1-α)·d_prev, α = filterCoeff ∈ (0,1]).
14
+ * Output saturation: optional [outputMin, outputMax] clamp on the final u.
15
+ *
16
+ * ## Linear MPC (receding-horizon)
17
+ *
18
+ * State-space: x[k+1] = A·x[k] + B·u[k]
19
+ * Objective : min Σ_{i=0}^{H-1}(x[i]^T Q x[i] + u[i]^T R u[i]) + x[H]^T Qf x[H]
20
+ * Constraint : u ∈ [uMin, uMax] (element-wise, applied after unconstrained solve)
21
+ *
22
+ * Unconstrained horizon solution via recursive Riccati descent, then project
23
+ * each u_i into [uMin, uMax]. Linear MPC is returned as the optimal first
24
+ * control action u[0] from the computed horizon.
25
+ *
26
+ * ## Domain-neutrality
27
+ *
28
+ * No domain nouns appear here. The controllers apply to robotics, HVAC,
29
+ * process control, animation, or any closed-loop system.
30
+ *
31
+ * ## Trait usage
32
+ *
33
+ * onAttach: resets internal state.
34
+ * onEvent 'control_loop.step':
35
+ * - type='pid' → PID step → result on node.__control_output.
36
+ * - type='mpc' → MPC horizon solve → result on node.__control_output.
37
+ * onEvent 'control_loop.reset': clears integral/derivative state.
38
+ */
39
+ import type { TraitHandler } from './TraitTypes';
40
+ /** Result of a single control step. */
41
+ export interface ControlOutput {
42
+ /** Computed control action. */
43
+ u: number;
44
+ /** Type of controller that produced this output. */
45
+ type: 'pid' | 'mpc';
46
+ /** PID-only: proportional contribution. */
47
+ proportional?: number;
48
+ /** PID-only: integral contribution (post-windup). */
49
+ integral?: number;
50
+ /** PID-only: derivative contribution (post-filter). */
51
+ derivative?: number;
52
+ /** MPC-only: full computed horizon [u0, u1, ..., u_{H-1}]. */
53
+ horizon?: number[];
54
+ }
55
+ /** PID tuning parameters. */
56
+ export interface PIDParams {
57
+ /** Proportional gain. */
58
+ Kp: number;
59
+ /** Integral gain. */
60
+ Ki: number;
61
+ /** Derivative gain. */
62
+ Kd: number;
63
+ /** Integral anti-windup clamp (magnitude). Default: Infinity. */
64
+ iMax?: number;
65
+ /** Derivative low-pass filter coefficient α ∈ (0,1]. 1 = no filter. Default: 1. */
66
+ filterCoeff?: number;
67
+ /** Output lower bound. Default: -Infinity. */
68
+ outputMin?: number;
69
+ /** Output upper bound. Default: +Infinity. */
70
+ outputMax?: number;
71
+ }
72
+ /**
73
+ * Input for a PID step event (`control_loop.pid_step`).
74
+ * The `type` field on the event itself is the event name; this interface
75
+ * carries only the step payload.
76
+ */
77
+ export interface PIDStepRequest {
78
+ /** PID tuning. Falls back to config.pid when omitted. */
79
+ params?: PIDParams;
80
+ /** Setpoint (reference). */
81
+ setpoint: number;
82
+ /** Measured process variable. */
83
+ measurement: number;
84
+ /** Time step Δt (same units as Ki/Kd). Default: 1. */
85
+ dt?: number;
86
+ }
87
+ /** Internal PID state (stored on the trait). */
88
+ export interface PIDState {
89
+ integralAccum: number;
90
+ prevError: number;
91
+ prevDerivative: number;
92
+ }
93
+ /** Linear time-invariant state-space matrices for MPC. */
94
+ export interface MPCModel {
95
+ /** State transition matrix A (n×n, row-major). */
96
+ A: number[];
97
+ /** Input matrix B (n×m, row-major). */
98
+ B: number[];
99
+ /** State dimension n. */
100
+ n: number;
101
+ /** Input dimension m. */
102
+ m: number;
103
+ }
104
+ /** MPC tuning and horizon parameters. */
105
+ export interface MPCParams {
106
+ /** State-space model. */
107
+ model: MPCModel;
108
+ /** Prediction horizon. Default: 10. */
109
+ horizon?: number;
110
+ /** State cost matrix Q (n×n, row-major). Default: identity. */
111
+ Q?: number[];
112
+ /** Terminal state cost matrix Qf (n×n, row-major). Default: Q. */
113
+ Qf?: number[];
114
+ /** Input cost matrix R (m×m, row-major). Default: identity. */
115
+ R?: number[];
116
+ /** Element-wise input lower bound (length m). Default: -Infinity. */
117
+ uMin?: number[];
118
+ /** Element-wise input upper bound (length m). Default: +Infinity. */
119
+ uMax?: number[];
120
+ }
121
+ /**
122
+ * Input for an MPC step event (`control_loop.mpc_step`).
123
+ * The `type` field on the event itself is the event name; this interface
124
+ * carries only the step payload.
125
+ */
126
+ export interface MPCStepRequest {
127
+ /** MPC parameters. Falls back to config.mpc when omitted. */
128
+ params?: MPCParams;
129
+ /** Current state vector x (length n). */
130
+ state: number[];
131
+ /** Reference state trajectory (H×n, row-major). Defaults to all-zero. */
132
+ reference?: number[];
133
+ }
134
+ /** Trait configuration — at least one of pid or mpc must be set to use events. */
135
+ export interface ControlLoopConfig {
136
+ /** Default PID parameters (used when event omits params). */
137
+ pid?: PIDParams;
138
+ /** Default MPC parameters (used when event omits params). */
139
+ mpc?: MPCParams;
140
+ }
141
+ /**
142
+ * Discrete-time PID step. Mutates `state` in place.
143
+ */
144
+ export declare function stepPid(params: PIDParams, setpoint: number, measurement: number, dt: number, state: PIDState): ControlOutput;
145
+ /**
146
+ * Linear MPC with receding horizon.
147
+ *
148
+ * Uses backward Riccati recursion to compute unconstrained optimal gains,
149
+ * then projects each control input into [uMin, uMax] element-wise.
150
+ * Returns the first control action u[0] as `u`, with the full horizon in
151
+ * `output.horizon`.
152
+ */
153
+ export declare function stepMpc(params: MPCParams, state: number[]): ControlOutput;
154
+ export declare const controlLoopHandler: TraitHandler<ControlLoopConfig>;
@@ -0,0 +1,116 @@
1
+ /**
2
+ * KinematicChainTrait — DH-parameter FK + damped Jacobian IK (H2).
3
+ *
4
+ * Provides forward kinematics (FK) and inverse kinematics (IK) for serial
5
+ * kinematic chains described by standard Denavit-Hartenberg parameters.
6
+ *
7
+ * ## DH Convention (Standard)
8
+ *
9
+ * Each row of the DH table defines the transform from frame i-1 to frame i:
10
+ *
11
+ * T_{i-1,i} = Rot_z(θ_i) · Trans_z(d_i) · Trans_x(a_i) · Rot_x(α_i)
12
+ *
13
+ * Row-major 4×4 matrix form:
14
+ * [ cos θ, -sin θ cos α, sin θ sin α, a cos θ ]
15
+ * [ sin θ, cos θ cos α, -cos θ sin α, a sin θ ]
16
+ * [ 0, sin α, cos α, d ]
17
+ * [ 0, 0, 0, 1 ]
18
+ *
19
+ * where θ = thetaOffset + jointAngle (constant offset + variable q_i).
20
+ *
21
+ * ## IK: damped Jacobian (Levenberg-Marquardt)
22
+ *
23
+ * Position-only IK. 3×n Jacobian column j: J[:,j] = z_{j-1} × (p_ee - p_{j-1}).
24
+ * Update: dq = J^T (JJ^T + λ²I)⁻¹ Δp. Converges in ≤ 100 iterations for
25
+ * well-conditioned chains.
26
+ *
27
+ * ## Domain-neutrality
28
+ *
29
+ * No domain nouns appear here. The solver applies to robotics, animation,
30
+ * biomechanics, and any articulated structure.
31
+ *
32
+ * ## Trait usage
33
+ *
34
+ * onAttach: pre-computes FK from initial config if links/angles are set.
35
+ * onEvent 'kinematic_chain.solve_fk': FK → result on node.__kinematic_fk.
36
+ * onEvent 'kinematic_chain.solve_ik': IK → result on node.__kinematic_ik.
37
+ */
38
+ import type { TraitHandler } from './TraitTypes';
39
+ /** One row of the standard Denavit-Hartenberg parameter table. */
40
+ export interface DHParameter {
41
+ /** Link length (scene units). */
42
+ a: number;
43
+ /** Link twist α (radians). */
44
+ alpha: number;
45
+ /** Joint offset d along z (scene units). */
46
+ d: number;
47
+ /** Constant joint angle offset (radians). Added to the variable q_i. */
48
+ theta: number;
49
+ }
50
+ /** Trait configuration — DH table plus current joint angles. */
51
+ export interface KinematicChainConfig {
52
+ /** DH table — one row per joint. */
53
+ links: DHParameter[];
54
+ /** Current joint angles q (radians). Length must equal `links.length`. */
55
+ jointAngles: number[];
56
+ }
57
+ /** Result of forward kinematics. */
58
+ export interface FKResult {
59
+ /** End-effector position in the base frame. */
60
+ endEffectorPosition: {
61
+ x: number;
62
+ y: number;
63
+ z: number;
64
+ };
65
+ /** Full 4×4 end-effector transform (row-major, 16 elements). */
66
+ endEffectorTransform: number[];
67
+ /** Per-joint frame transforms (row-major 4×4), indexed 0..n-1. */
68
+ frameTransforms: number[][];
69
+ }
70
+ /** Input to the IK solver. */
71
+ export interface IKRequest {
72
+ /** DH table — one row per joint. */
73
+ links: DHParameter[];
74
+ /** Target end-effector position in the base frame. */
75
+ target: {
76
+ x: number;
77
+ y: number;
78
+ z: number;
79
+ };
80
+ /** Initial joint angles. Defaults to all-zero. */
81
+ initialAngles?: number[];
82
+ /** Maximum iterations. Default: 100. */
83
+ maxIterations?: number;
84
+ /** Convergence tolerance (scene units). Default: 1e-4. */
85
+ tolerance?: number;
86
+ /** Damping factor λ for LM update. Default: 0.01. */
87
+ damping?: number;
88
+ }
89
+ /** Result of inverse kinematics. */
90
+ export interface IKResult {
91
+ /** Joint angles that achieve (approximately) the target. */
92
+ jointAngles: number[];
93
+ /** True when final error is below tolerance. */
94
+ converged: boolean;
95
+ /** Final end-effector position error. */
96
+ finalError: number;
97
+ /** Iterations used. */
98
+ iterations: number;
99
+ }
100
+ /**
101
+ * Standard DH homogeneous transform (row-major, 16 elements).
102
+ * Index [row*4 + col].
103
+ */
104
+ export declare function dhTransform(a: number, alpha: number, d: number, theta: number): number[];
105
+ /**
106
+ * Forward kinematics — compute end-effector pose from DH table + joint angles.
107
+ */
108
+ export declare function solveFk(links: DHParameter[], jointAngles: number[]): FKResult;
109
+ /**
110
+ * Position-only IK using a damped Jacobian (Levenberg-Marquardt).
111
+ *
112
+ * Converges in ≤ `maxIterations` steps. Returns `converged: true` when the
113
+ * end-effector position is within `tolerance` of `target`.
114
+ */
115
+ export declare function solveIk(req: IKRequest): IKResult;
116
+ export declare const kinematicChainHandler: TraitHandler<KinematicChainConfig>;
@@ -0,0 +1,154 @@
1
+ /**
2
+ * SensorSamplingTrait — domain-neutral signal acquisition with noise models
3
+ * and ring-buffer windowing (H2 'sensor' family).
4
+ *
5
+ * Sensors are identified by string IDs. Each sensor has a configurable noise
6
+ * model applied to incoming raw readings before buffering. A fixed-capacity
7
+ * ring buffer stores the last N readings per sensor, enabling simple windowed
8
+ * statistics (mean, variance, min, max) without external state management.
9
+ *
10
+ * ## Noise models
11
+ *
12
+ * - `'none'` — raw value passed through unchanged.
13
+ * - `'gaussian'` — additive Gaussian noise N(0, σ²) via Box-Muller.
14
+ * - `'uniform'` — additive uniform noise U(−range, +range).
15
+ * - `'quantized'` — round to nearest `step`, then optional gaussian.
16
+ *
17
+ * ## Domain-neutrality
18
+ *
19
+ * No domain nouns appear here. The same trait covers:
20
+ * - Robotics: joint-angle encoders, IMU, force/torque sensors.
21
+ * - IoT: temperature, pressure, humidity, flow.
22
+ * - Scientific: spectral intensity, particle count, magnetic field.
23
+ * - Quantum: qubit readout (binary sensor, bit-flip noise via bernoulli).
24
+ *
25
+ * ## Trait usage
26
+ *
27
+ * onAttach: initialises per-sensor ring buffers from config.
28
+ * onEvent 'sensor.record': record a raw reading → apply noise → buffer →
29
+ * write result to node.__sensor_last[sensorId].
30
+ * onEvent 'sensor.read_window': compute windowed stats for a sensor →
31
+ * write to node.__sensor_window[sensorId].
32
+ * onEvent 'sensor.reset': clear all buffers.
33
+ */
34
+ import type { TraitHandler } from './TraitTypes';
35
+ /** Gaussian noise: additive N(0, σ²). */
36
+ export interface GaussianNoise {
37
+ type: 'gaussian';
38
+ /** Standard deviation σ. */
39
+ sigma: number;
40
+ }
41
+ /** Uniform noise: additive U(−range, +range). */
42
+ export interface UniformNoise {
43
+ type: 'uniform';
44
+ /** Half-width of the uniform distribution. */
45
+ range: number;
46
+ }
47
+ /**
48
+ * Quantization noise: round to nearest `step`, then optional Gaussian.
49
+ * Models ADC quantization (and binary sensors when step=1).
50
+ */
51
+ export interface QuantizedNoise {
52
+ type: 'quantized';
53
+ /** Quantization step (e.g. 0.01 for a 2-decimal sensor). */
54
+ step: number;
55
+ /** Optional residual Gaussian σ after quantization. Default: 0. */
56
+ residualSigma?: number;
57
+ }
58
+ /** No noise — raw value passed through. */
59
+ export interface NoNoise {
60
+ type: 'none';
61
+ }
62
+ export type NoiseModel = GaussianNoise | UniformNoise | QuantizedNoise | NoNoise;
63
+ /** Configuration for one sensor channel. */
64
+ export interface SensorChannelConfig {
65
+ /** Unique sensor identifier. */
66
+ id: string;
67
+ /** Human-readable unit label (e.g. 'm/s²', '°C', 'rad'). Not interpreted. */
68
+ unit?: string;
69
+ /** Noise model applied to incoming raw readings. Default: none. */
70
+ noise?: NoiseModel;
71
+ /** Ring-buffer capacity (number of readings to keep). Default: 32. */
72
+ bufferSize?: number;
73
+ }
74
+ /** Trait configuration — list of sensor channels. */
75
+ export interface SensorSamplingConfig {
76
+ /** Sensor channels to initialise. */
77
+ sensors: SensorChannelConfig[];
78
+ }
79
+ /** A raw + noisy reading for one sensor. */
80
+ export interface SensorReading {
81
+ /** Sensor identifier. */
82
+ sensorId: string;
83
+ /** Raw (pre-noise) value. */
84
+ rawValue: number;
85
+ /** Value after noise application. */
86
+ noisyValue: number;
87
+ /** Monotonic timestamp (caller-supplied, e.g. simulation tick). */
88
+ timestamp: number;
89
+ }
90
+ /** Windowed statistics over a sensor's ring buffer. */
91
+ export interface SensorWindowResult {
92
+ sensorId: string;
93
+ /** All buffered readings (oldest → newest). */
94
+ readings: ReadonlyArray<SensorReading>;
95
+ /** Number of readings in the buffer. */
96
+ count: number;
97
+ /** Arithmetic mean of noisyValue. NaN if buffer empty. */
98
+ mean: number;
99
+ /** Sample variance of noisyValue. NaN if fewer than 2 readings. */
100
+ variance: number;
101
+ /** Minimum noisyValue. Infinity if buffer empty. */
102
+ min: number;
103
+ /** Maximum noisyValue. -Infinity if buffer empty. */
104
+ max: number;
105
+ }
106
+ /** Payload for `sensor.record` event. */
107
+ export interface SensorRecordRequest {
108
+ /** Target sensor. If omitted and config has exactly one sensor, uses that. */
109
+ sensorId?: string;
110
+ /** Raw measured value. */
111
+ rawValue: number;
112
+ /** Monotonic timestamp. Default: 0. */
113
+ timestamp?: number;
114
+ /** Override noise model for this recording only. */
115
+ noise?: NoiseModel;
116
+ }
117
+ /** Payload for `sensor.read_window` event. */
118
+ export interface SensorReadWindowRequest {
119
+ /** Target sensor. If omitted, uses the first configured sensor. */
120
+ sensorId?: string;
121
+ }
122
+ /**
123
+ * Box-Muller transform: generates one N(0,1) sample using two U(0,1) inputs.
124
+ * Pure function — callers supply the uniform random values to enable testing.
125
+ */
126
+ export declare function boxMuller(u1: number, u2: number): number;
127
+ /**
128
+ * Apply a noise model to a raw value. Uses `Math.random()` for stochastic
129
+ * models — determinism in tests can be achieved by mocking Math.random.
130
+ */
131
+ export declare function applyNoise(raw: number, noise: NoiseModel): number;
132
+ /** Fixed-capacity circular buffer of SensorReadings. */
133
+ export declare class SensorRingBuffer {
134
+ readonly capacity: number;
135
+ private readonly buf;
136
+ private head;
137
+ private _size;
138
+ constructor(capacity: number);
139
+ push(r: SensorReading): void;
140
+ get size(): number;
141
+ /** Returns readings oldest-first. */
142
+ toArray(): SensorReading[];
143
+ latest(): SensorReading | undefined;
144
+ clear(): void;
145
+ }
146
+ /**
147
+ * Record one reading: apply noise, return the SensorReading.
148
+ * Callers are responsible for buffering (the TraitHandler does this via the
149
+ * node's internal buffer map).
150
+ */
151
+ export declare function recordReading(rawValue: number, noise: NoiseModel, sensorId: string, timestamp: number): SensorReading;
152
+ /** Compute windowed statistics over a ring buffer's current contents. */
153
+ export declare function computeWindowStats(sensorId: string, buffer: SensorRingBuffer): SensorWindowResult;
154
+ export declare const sensorSamplingHandler: TraitHandler<SensorSamplingConfig>;