@holoscript/core 7.0.0 → 8.0.1

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 (350) hide show
  1. package/README.md +4 -4
  2. package/bin/holoscript.cjs +3 -0
  3. package/dist/GLTFPipeline-N6B6PJ6G.cjs +38 -0
  4. package/dist/GLTFPipeline-P3WMNYCN.js +17 -0
  5. package/dist/HoloScriptPlusParser-7FBIFUFC.js +693 -0
  6. package/dist/HoloScriptPlusParser-A2W7OCN2.cjs +698 -0
  7. package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
  8. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
  9. package/dist/HoloScriptRuntime-CBYJX3LZ.js +10 -0
  10. package/dist/HoloScriptRuntime-VJ374RER.cjs +19 -0
  11. package/dist/USDZExporter-3FWJ25JI.cjs +1037 -0
  12. package/dist/USDZExporter-D2HQLQYK.js +1035 -0
  13. package/dist/agents/index.cjs +19 -0
  14. package/dist/agents/index.d.ts +100 -0
  15. package/dist/agents/index.js +17 -0
  16. package/dist/chunk-2BSMSUCE.js +1941 -0
  17. package/dist/chunk-2IWC4FP7.cjs +1189 -0
  18. package/dist/chunk-2M2DPHKB.js +762 -0
  19. package/dist/chunk-2X7NGX3M.js +2426 -0
  20. package/dist/chunk-2YSNA2F2.cjs +1274 -0
  21. package/dist/chunk-3FOKASKO.cjs +348 -0
  22. package/dist/chunk-3WZEJHUQ.cjs +116 -0
  23. package/dist/chunk-4C57PR42.js +468 -0
  24. package/dist/chunk-4GU5GCIY.js +1384 -0
  25. package/dist/chunk-4N4SXXWF.js +769 -0
  26. package/dist/chunk-4PDEPEQW.cjs +41 -0
  27. package/dist/chunk-4R6SBXDB.js +45 -0
  28. package/dist/chunk-4SDKXQ4C.js +811 -0
  29. package/dist/chunk-4V2E7U7Q.cjs +2015 -0
  30. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  31. package/dist/chunk-5GLCTO44.js +161 -0
  32. package/dist/chunk-5H2G27PK.cjs +627 -0
  33. package/dist/chunk-5JEU52DW.js +382 -0
  34. package/dist/chunk-5NWINHR5.cjs +689 -0
  35. package/dist/chunk-5S7RKFGR.cjs +446 -0
  36. package/dist/chunk-5WUNN6ZN.cjs +428 -0
  37. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  38. package/dist/chunk-6EX3I5P4.cjs +130 -0
  39. package/dist/chunk-6Q7RC2MK.cjs +1418 -0
  40. package/dist/chunk-7H33U5SM.cjs +413 -0
  41. package/dist/chunk-7M3PNU2M.cjs +672 -0
  42. package/dist/chunk-7T25IEZ2.js +449 -0
  43. package/dist/chunk-7V4JI5TB.cjs +6947 -0
  44. package/dist/chunk-A6KINLZJ.js +236 -0
  45. package/dist/chunk-ADADVMXY.js +404 -0
  46. package/dist/chunk-AIA52I7T.cjs +543 -0
  47. package/dist/chunk-ALC6K7GL.cjs +4402 -0
  48. package/dist/chunk-ANXZFVY2.js +113 -0
  49. package/dist/chunk-AOVGZ25K.cjs +56583 -0
  50. package/dist/chunk-AVJHHUC5.cjs +718 -0
  51. package/dist/chunk-BGY3SDG3.js +4396 -0
  52. package/dist/chunk-BOVPWH4H.js +3857 -0
  53. package/dist/chunk-BRQJKJGT.cjs +20 -0
  54. package/dist/chunk-C37BHB7N.cjs +636 -0
  55. package/dist/chunk-CBJY23VL.js +126 -0
  56. package/dist/chunk-CCATWPXM.js +778 -0
  57. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  58. package/dist/chunk-CMT5NMMS.js +669 -0
  59. package/dist/chunk-CR4FMIWL.cjs +1049 -0
  60. package/dist/chunk-CR7XRXRN.cjs +639 -0
  61. package/dist/chunk-CSD27UNQ.js +2176 -0
  62. package/dist/chunk-D3STJ56J.js +714 -0
  63. package/dist/chunk-DAJXW4KX.js +725 -0
  64. package/dist/chunk-DHO2YRIM.js +756 -0
  65. package/dist/chunk-DTGBOSEM.cjs +319 -0
  66. package/dist/chunk-E6XXE66V.js +2252 -0
  67. package/dist/chunk-E7JP3BS3.cjs +61 -0
  68. package/dist/chunk-EKBKLK7P.js +1169 -0
  69. package/dist/chunk-EKYL4PE3.cjs +404 -0
  70. package/dist/chunk-EXKSFGSX.cjs +274 -0
  71. package/dist/chunk-EXUP2BUM.cjs +1173 -0
  72. package/dist/chunk-FDSGHPAK.js +130 -0
  73. package/dist/chunk-FEWUHQNM.cjs +144 -0
  74. package/dist/chunk-FFAOS5HQ.js +70 -0
  75. package/dist/chunk-FGGJQRLZ.js +270 -0
  76. package/dist/chunk-FHP6LXJS.js +415 -0
  77. package/dist/chunk-FJPADH77.cjs +666 -0
  78. package/dist/chunk-FL33V6U7.js +421 -0
  79. package/dist/chunk-FYSPZT4V.cjs +169 -0
  80. package/dist/chunk-GIOYPNTH.js +5575 -0
  81. package/dist/chunk-GJNCFRJU.cjs +125 -0
  82. package/dist/chunk-GMP623FG.cjs +1508 -0
  83. package/dist/chunk-GQHQOPXZ.cjs +5580 -0
  84. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  85. package/dist/chunk-GYZE55MO.js +2007 -0
  86. package/dist/chunk-GZG4KA4E.js +529 -0
  87. package/dist/chunk-H652NHX5.js +600 -0
  88. package/dist/chunk-HCCQLAA4.cjs +74 -0
  89. package/dist/chunk-HKEXJUWS.cjs +4007 -0
  90. package/dist/chunk-HNDK4IQU.cjs +5737 -0
  91. package/dist/chunk-HR2OSYVQ.js +56165 -0
  92. package/dist/chunk-HYNTS5CP.js +422 -0
  93. package/dist/chunk-I6XZ5DZF.cjs +488 -0
  94. package/dist/chunk-ILRBGFVD.cjs +72 -0
  95. package/dist/chunk-IUDGEUDO.cjs +1409 -0
  96. package/dist/chunk-IUTY5WQ2.cjs +424 -0
  97. package/dist/chunk-IVY74O6C.js +247 -0
  98. package/dist/chunk-IWC5DM2M.cjs +611 -0
  99. package/dist/chunk-J32ZJZJH.js +554 -0
  100. package/dist/chunk-J52VSAQ7.js +6884 -0
  101. package/dist/chunk-J6M4FPK5.js +421 -0
  102. package/dist/chunk-J7XZV333.js +844 -0
  103. package/dist/chunk-JBNDTXXV.cjs +2433 -0
  104. package/dist/chunk-JC5YBPSF.cjs +984 -0
  105. package/dist/chunk-JD7CIZ33.js +1949 -0
  106. package/dist/chunk-JIBL5LRK.js +4287 -0
  107. package/dist/chunk-JIYN45TV.cjs +2525 -0
  108. package/dist/chunk-K574J76X.cjs +457 -0
  109. package/dist/chunk-KHDZJE5D.cjs +2196 -0
  110. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  111. package/dist/chunk-KKP7JKN4.cjs +6002 -0
  112. package/dist/chunk-KPJL34Y7.cjs +186 -0
  113. package/dist/chunk-KQCN6AKJ.cjs +3042 -0
  114. package/dist/chunk-L5LKKENW.cjs +424 -0
  115. package/dist/chunk-LHAXPADA.js +882 -0
  116. package/dist/chunk-LM2VU56C.cjs +37 -0
  117. package/dist/chunk-M56JSP4A.js +400 -0
  118. package/dist/chunk-MBOOR7X4.js +18 -0
  119. package/dist/chunk-MQWAT42R.cjs +4310 -0
  120. package/dist/chunk-MXFUTKCO.js +56 -0
  121. package/dist/chunk-MYY4PMWX.cjs +264 -0
  122. package/dist/chunk-N75IH2HY.js +258 -0
  123. package/dist/chunk-NCWCUZNS.cjs +72 -0
  124. package/dist/chunk-NG77ATEW.cjs +778 -0
  125. package/dist/chunk-NW5G5FBQ.js +215 -0
  126. package/dist/chunk-OBIYPYYS.cjs +1993 -0
  127. package/dist/chunk-OH2FAIVU.js +608 -0
  128. package/dist/chunk-OIQYIIO3.cjs +473 -0
  129. package/dist/chunk-OL46QLBJ.js +61 -0
  130. package/dist/chunk-OMXII44L.js +5386 -0
  131. package/dist/chunk-OSYNRVOV.cjs +243 -0
  132. package/dist/chunk-PGANYCAG.cjs +220 -0
  133. package/dist/chunk-PHENW4MQ.js +65 -0
  134. package/dist/chunk-PY37LNDP.js +686 -0
  135. package/dist/chunk-Q56TT7IL.js +483 -0
  136. package/dist/chunk-QD32ADK6.js +1046 -0
  137. package/dist/chunk-QPOQ7VPI.js +1491 -0
  138. package/dist/chunk-QPSKHBJP.js +5963 -0
  139. package/dist/chunk-QXH7QDSZ.js +1989 -0
  140. package/dist/chunk-R24NNAEG.js +1399 -0
  141. package/dist/chunk-R75BSDH7.cjs +50 -0
  142. package/dist/chunk-RARB3MBR.js +207 -0
  143. package/dist/chunk-ROHLEP2W.cjs +847 -0
  144. package/dist/chunk-S3MDHNKB.cjs +490 -0
  145. package/dist/chunk-S6YWHCKV.cjs +410 -0
  146. package/dist/chunk-SIEXCILW.js +229 -0
  147. package/dist/chunk-SLU6UPJI.cjs +410 -0
  148. package/dist/chunk-SMIWS6DE.cjs +212 -0
  149. package/dist/chunk-T5J7ZKP3.cjs +4885 -0
  150. package/dist/chunk-TDCNJHWO.js +341 -0
  151. package/dist/chunk-TG7O4WBC.js +406 -0
  152. package/dist/chunk-THCK6ECW.js +2085 -0
  153. package/dist/chunk-TJHVSBP2.js +439 -0
  154. package/dist/chunk-TVHSPJ4N.cjs +606 -0
  155. package/dist/chunk-TWUXUCEW.cjs +781 -0
  156. package/dist/chunk-U44IKGG7.cjs +5390 -0
  157. package/dist/chunk-UFZZ7TSN.cjs +886 -0
  158. package/dist/chunk-UJXISJBN.js +487 -0
  159. package/dist/chunk-UOIGFQXC.cjs +9750 -0
  160. package/dist/chunk-URG2SJLK.js +2521 -0
  161. package/dist/chunk-UWJHCOH2.js +623 -0
  162. package/dist/chunk-V6MKC2FZ.js +979 -0
  163. package/dist/chunk-VJ3L7CHT.cjs +169 -0
  164. package/dist/chunk-VMLKSV26.js +1216 -0
  165. package/dist/chunk-VVKVQZI6.js +55 -0
  166. package/dist/chunk-W6RW64BB.cjs +1219 -0
  167. package/dist/chunk-WKX5AMOY.js +309 -0
  168. package/dist/chunk-WNNE3PO3.js +34 -0
  169. package/dist/chunk-WRKUDAZJ.js +3038 -0
  170. package/dist/chunk-WRLUBRKS.cjs +1943 -0
  171. package/dist/chunk-WRNEH5MO.js +3169 -0
  172. package/dist/chunk-WRWEX5ZF.js +658 -0
  173. package/dist/chunk-X3GJPRVK.cjs +3246 -0
  174. package/dist/chunk-X3UVCWNL.cjs +2257 -0
  175. package/dist/chunk-XB274MW5.cjs +814 -0
  176. package/dist/chunk-XHIV6326.cjs +793 -0
  177. package/dist/chunk-XIVIE43A.cjs +729 -0
  178. package/dist/chunk-XJAN7CZG.cjs +432 -0
  179. package/dist/chunk-XKTPFXGA.js +164 -0
  180. package/dist/chunk-XL6INWKT.js +121 -0
  181. package/dist/chunk-XSFNHP2E.js +632 -0
  182. package/dist/chunk-XT6JY5W5.js +9684 -0
  183. package/dist/chunk-XUILI4KB.cjs +430 -0
  184. package/dist/chunk-YF2I3MV3.js +46 -0
  185. package/dist/chunk-YIMN575O.js +4847 -0
  186. package/dist/chunk-YIVFJNYV.js +176 -0
  187. package/dist/chunk-YKGPCZEE.cjs +237 -0
  188. package/dist/chunk-YN2YWTXW.js +5731 -0
  189. package/dist/chunk-YN6V7R3L.cjs +327 -0
  190. package/dist/chunk-YQELFNJV.js +39 -0
  191. package/dist/chunk-YVD3CSO3.js +1183 -0
  192. package/dist/chunk-YVOAF4ML.js +623 -0
  193. package/dist/chunk-YWOBW2PV.cjs +759 -0
  194. package/dist/chunk-YYXH45E2.js +426 -0
  195. package/dist/chunk-ZDSYWBIE.cjs +69 -0
  196. package/dist/chunk-ZU7NIRT6.js +325 -0
  197. package/dist/chunk-ZZ7RO2UQ.js +1243 -0
  198. package/dist/cli/holoscript-runner.cjs +2255 -0
  199. package/dist/cli/holoscript-runner.js +2230 -0
  200. package/dist/codebase/index.cjs +336 -0
  201. package/dist/codebase/index.js +331 -0
  202. package/dist/compiler/agent-inference.cjs +31 -0
  203. package/dist/compiler/agent-inference.js +8 -0
  204. package/dist/compiler/android-xr.cjs +24 -0
  205. package/dist/compiler/android-xr.js +14 -0
  206. package/dist/compiler/android.cjs +24 -0
  207. package/dist/compiler/android.js +14 -0
  208. package/dist/compiler/ar.cjs +23 -0
  209. package/dist/compiler/ar.js +11 -0
  210. package/dist/compiler/babylon.cjs +21 -0
  211. package/dist/compiler/babylon.js +15 -0
  212. package/dist/compiler/business-quest.cjs +43 -0
  213. package/dist/compiler/business-quest.js +4 -0
  214. package/dist/compiler/coco.cjs +27 -0
  215. package/dist/compiler/coco.js +4 -0
  216. package/dist/compiler/context.cjs +25 -0
  217. package/dist/compiler/context.d.ts +28 -0
  218. package/dist/compiler/context.js +8 -0
  219. package/dist/compiler/domain-block-utils.cjs +609 -0
  220. package/dist/compiler/domain-block-utils.js +11 -0
  221. package/dist/compiler/dtdl.cjs +27 -0
  222. package/dist/compiler/dtdl.js +11 -0
  223. package/dist/compiler/gltf-pipeline.cjs +39 -0
  224. package/dist/compiler/gltf-pipeline.js +4 -0
  225. package/dist/compiler/godot.cjs +18 -0
  226. package/dist/compiler/godot.js +12 -0
  227. package/dist/compiler/incremental.cjs +34 -0
  228. package/dist/compiler/incremental.js +9 -0
  229. package/dist/compiler/index.cjs +5408 -0
  230. package/dist/compiler/index.d.ts +334 -21
  231. package/dist/compiler/index.js +5069 -0
  232. package/dist/compiler/ios.cjs +23 -0
  233. package/dist/compiler/ios.js +13 -0
  234. package/dist/compiler/llm-provider-capabilities.cjs +25 -0
  235. package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
  236. package/dist/compiler/llm-provider-capabilities.js +8 -0
  237. package/dist/compiler/multi-layer.cjs +24 -0
  238. package/dist/compiler/multi-layer.js +15 -0
  239. package/dist/compiler/nodetoy.cjs +23 -0
  240. package/dist/compiler/nodetoy.d.ts +69 -0
  241. package/dist/compiler/nodetoy.js +4 -0
  242. package/dist/compiler/openxr.cjs +19 -0
  243. package/dist/compiler/openxr.js +13 -0
  244. package/dist/compiler/playcanvas.cjs +19 -0
  245. package/dist/compiler/playcanvas.js +13 -0
  246. package/dist/compiler/r3f.cjs +39 -0
  247. package/dist/compiler/r3f.d.ts +22 -0
  248. package/dist/compiler/r3f.js +17 -0
  249. package/dist/compiler/remotion.cjs +23 -0
  250. package/dist/compiler/remotion.js +4 -0
  251. package/dist/compiler/reproducibility.cjs +39 -0
  252. package/dist/compiler/reproducibility.js +4 -0
  253. package/dist/compiler/sdf.cjs +24 -0
  254. package/dist/compiler/sdf.js +12 -0
  255. package/dist/compiler/semantic-scene.cjs +31 -0
  256. package/dist/compiler/semantic-scene.js +4 -0
  257. package/dist/compiler/state.cjs +21 -0
  258. package/dist/compiler/state.js +11 -0
  259. package/dist/compiler/trait-composition.cjs +30 -0
  260. package/dist/compiler/trait-composition.js +9 -0
  261. package/dist/compiler/unity.cjs +19 -0
  262. package/dist/compiler/unity.js +13 -0
  263. package/dist/compiler/unreal.cjs +23 -0
  264. package/dist/compiler/unreal.js +13 -0
  265. package/dist/compiler/urdf.cjs +52 -0
  266. package/dist/compiler/urdf.js +12 -0
  267. package/dist/compiler/usd-physics.cjs +26 -0
  268. package/dist/compiler/usd-physics.js +9 -0
  269. package/dist/compiler/visionos.cjs +19 -0
  270. package/dist/compiler/visionos.js +13 -0
  271. package/dist/compiler/vrchat.cjs +22 -0
  272. package/dist/compiler/vrchat.js +12 -0
  273. package/dist/compiler/vrr.cjs +24 -0
  274. package/dist/compiler/vrr.js +12 -0
  275. package/dist/compiler/wasm.cjs +36 -0
  276. package/dist/compiler/wasm.js +12 -0
  277. package/dist/compiler/webgpu.cjs +18 -0
  278. package/dist/compiler/webgpu.js +12 -0
  279. package/dist/coordinators/index.cjs +1266 -0
  280. package/dist/coordinators/index.d.ts +72 -1
  281. package/dist/coordinators/index.js +1259 -0
  282. package/dist/debugger.cjs +24 -0
  283. package/dist/debugger.js +11 -0
  284. package/dist/dist-ACXG6IH5.cjs +3113 -0
  285. package/dist/dist-VD4L6V7Q.js +3076 -0
  286. package/dist/entries/interop.cjs +64 -0
  287. package/dist/entries/interop.js +7 -0
  288. package/dist/entries/scripting.cjs +55 -0
  289. package/dist/entries/scripting.js +10 -0
  290. package/dist/hololand/index.cjs +146 -0
  291. package/dist/hololand/index.d.ts +70 -0
  292. package/dist/hololand/index.js +5 -0
  293. package/dist/index.cjs +44660 -0
  294. package/dist/index.d.ts +978 -21
  295. package/dist/index.js +41422 -0
  296. package/dist/math/tropical-spmv.cjs +45 -0
  297. package/dist/math/tropical-spmv.js +4 -0
  298. package/dist/math/vec3.cjs +57 -0
  299. package/dist/math/vec3.js +4 -0
  300. package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
  301. package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
  302. package/dist/paper-0c-spike/index.cjs +150 -0
  303. package/dist/paper-0c-spike/index.js +141 -0
  304. package/dist/parser.cjs +61 -0
  305. package/dist/parser.d.ts +11 -0
  306. package/dist/parser.js +12 -0
  307. package/dist/playwright-3AT3AKTV.cjs +98673 -0
  308. package/dist/playwright-VZPDVUEQ.js +98660 -0
  309. package/dist/reconstruction/index.cjs +153 -0
  310. package/dist/reconstruction/index.d.ts +29 -2
  311. package/dist/reconstruction/index.js +8 -0
  312. package/dist/runtime.cjs +316 -0
  313. package/dist/runtime.d.ts +61 -0
  314. package/dist/runtime.js +31 -0
  315. package/dist/self-improvement/index.cjs +563 -0
  316. package/dist/self-improvement/index.js +545 -0
  317. package/dist/src-4ROC227P.cjs +2094 -0
  318. package/dist/src-HCCCSYP7.js +2073 -0
  319. package/dist/storage/index.cjs +38 -0
  320. package/dist/storage/index.js +5 -0
  321. package/dist/testing.cjs +25 -0
  322. package/dist/testing.d.ts +70 -0
  323. package/dist/testing.js +4 -0
  324. package/dist/traitDocs/traitDocs.cjs +33 -0
  325. package/dist/traitDocs/traitDocs.js +7 -0
  326. package/dist/traits/botanical-lotus.cjs +177 -0
  327. package/dist/traits/botanical-lotus.d.ts +502 -0
  328. package/dist/traits/botanical-lotus.js +7 -0
  329. package/dist/traits/engines/index.cjs +520 -0
  330. package/dist/traits/engines/index.js +380 -0
  331. package/dist/traits/index.cjs +24548 -0
  332. package/dist/traits/index.d.ts +171 -35
  333. package/dist/traits/index.js +21638 -0
  334. package/dist/traits/simulation-solver-factory.cjs +13 -0
  335. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  336. package/dist/traits/simulation-solver-factory.js +4 -0
  337. package/dist/traits/webcam-gaze.cjs +35 -0
  338. package/dist/traits/webcam-gaze.d.ts +17 -0
  339. package/dist/traits/webcam-gaze.js +4 -0
  340. package/dist/type-checker.cjs +19 -0
  341. package/dist/type-checker.js +6 -0
  342. package/dist/world/index.cjs +947 -0
  343. package/dist/world/index.d.ts +147 -0
  344. package/dist/world/index.js +939 -0
  345. package/dist/world-model/index.cjs +1446 -0
  346. package/dist/world-model/index.d.ts +119 -0
  347. package/dist/world-model/index.js +1414 -0
  348. package/dist/wot/index.cjs +29 -0
  349. package/dist/wot/index.js +4 -0
  350. package/package.json +93 -49
@@ -0,0 +1,404 @@
1
+ 'use strict';
2
+
3
+ // src/traits/SkeletonTrait.ts
4
+ var SkeletonTrait = class {
5
+ constructor(config = {}) {
6
+ this.bones = /* @__PURE__ */ new Map();
7
+ this.boneTransforms = /* @__PURE__ */ new Map();
8
+ this.clips = /* @__PURE__ */ new Map();
9
+ this.parameters = /* @__PURE__ */ new Map();
10
+ this.eventListeners = /* @__PURE__ */ new Map();
11
+ this.enabled = true;
12
+ this.config = {
13
+ rigType: config.rigType ?? "custom",
14
+ bones: config.bones,
15
+ humanoidMap: config.humanoidMap,
16
+ clips: config.clips,
17
+ blendTrees: config.blendTrees ?? /* @__PURE__ */ new Map(),
18
+ layers: config.layers ?? [{ name: "base", weight: 1, blendMode: "override" }],
19
+ parameters: config.parameters ?? /* @__PURE__ */ new Map(),
20
+ defaultClip: config.defaultClip,
21
+ speed: config.speed ?? 1,
22
+ rootMotion: config.rootMotion ?? false,
23
+ cullingMode: config.cullingMode ?? "always"
24
+ };
25
+ this.state = {
26
+ currentTime: 0,
27
+ normalizedTime: 0,
28
+ isPlaying: false,
29
+ layerWeights: this.config.layers?.map((l) => l.weight) ?? [1]
30
+ };
31
+ if (config.bones) {
32
+ for (const bone of config.bones) {
33
+ this.bones.set(bone.name, bone);
34
+ this.boneTransforms.set(bone.name, { ...bone.bindPose });
35
+ }
36
+ }
37
+ if (config.clips) {
38
+ for (const clip of config.clips) {
39
+ this.clips.set(clip.name, clip);
40
+ }
41
+ }
42
+ if (config.parameters) {
43
+ this.parameters = new Map(config.parameters);
44
+ }
45
+ }
46
+ // ============================================================================
47
+ // Configuration
48
+ // ============================================================================
49
+ /**
50
+ * Get configuration
51
+ */
52
+ getConfig() {
53
+ return { ...this.config };
54
+ }
55
+ /**
56
+ * Get animation state
57
+ */
58
+ getState() {
59
+ return { ...this.state };
60
+ }
61
+ /**
62
+ * Get bone count
63
+ */
64
+ getBoneCount() {
65
+ return this.bones.size;
66
+ }
67
+ /**
68
+ * Get bone names
69
+ */
70
+ getBoneNames() {
71
+ return Array.from(this.bones.keys());
72
+ }
73
+ /**
74
+ * Get bone transform
75
+ */
76
+ getBoneTransform(boneName) {
77
+ return this.boneTransforms.get(boneName);
78
+ }
79
+ /**
80
+ * Set bone transform (for IK or procedural animation)
81
+ */
82
+ setBoneTransform(boneName, transform) {
83
+ const current = this.boneTransforms.get(boneName);
84
+ if (current) {
85
+ this.boneTransforms.set(boneName, {
86
+ position: transform.position ?? current.position,
87
+ rotation: transform.rotation ?? current.rotation,
88
+ scale: transform.scale ?? current.scale
89
+ });
90
+ }
91
+ }
92
+ // ============================================================================
93
+ // Animation Playback
94
+ // ============================================================================
95
+ /**
96
+ * Play animation clip
97
+ */
98
+ play(clipName, options) {
99
+ const clip = this.clips.get(clipName);
100
+ if (!clip) {
101
+ console.warn(`Animation clip not found: ${clipName}`);
102
+ return;
103
+ }
104
+ const crossfade = options?.crossfade ?? 0;
105
+ if (crossfade > 0 && this.state.currentClip) {
106
+ this.state.crossfadeTarget = clipName;
107
+ this.state.crossfadeProgress = 0;
108
+ } else {
109
+ this.state.currentClip = clipName;
110
+ this.state.currentTime = 0;
111
+ this.state.normalizedTime = 0;
112
+ }
113
+ this.state.isPlaying = true;
114
+ }
115
+ /**
116
+ * Stop animation
117
+ */
118
+ stop() {
119
+ this.state.isPlaying = false;
120
+ this.state.currentTime = 0;
121
+ this.state.normalizedTime = 0;
122
+ }
123
+ /**
124
+ * Pause animation
125
+ */
126
+ pause() {
127
+ this.state.isPlaying = false;
128
+ }
129
+ /**
130
+ * Resume animation
131
+ */
132
+ resume() {
133
+ this.state.isPlaying = true;
134
+ }
135
+ /**
136
+ * Is playing
137
+ */
138
+ isPlaying() {
139
+ return this.state.isPlaying;
140
+ }
141
+ /**
142
+ * Get current clip name
143
+ */
144
+ getCurrentClip() {
145
+ return this.state.currentClip;
146
+ }
147
+ /**
148
+ * Set playback speed
149
+ */
150
+ setSpeed(speed) {
151
+ this.config.speed = speed;
152
+ }
153
+ /**
154
+ * Get playback speed
155
+ */
156
+ getSpeed() {
157
+ return this.config.speed ?? 1;
158
+ }
159
+ // ============================================================================
160
+ // Parameters (for blend trees and state machines)
161
+ // ============================================================================
162
+ /**
163
+ * Set parameter
164
+ */
165
+ setParameter(name, value) {
166
+ this.parameters.set(name, value);
167
+ }
168
+ /**
169
+ * Get parameter
170
+ */
171
+ getParameter(name) {
172
+ return this.parameters.get(name);
173
+ }
174
+ /**
175
+ * Set float parameter
176
+ */
177
+ setFloat(name, value) {
178
+ this.parameters.set(name, value);
179
+ }
180
+ /**
181
+ * Set bool parameter
182
+ */
183
+ setBool(name, value) {
184
+ this.parameters.set(name, value);
185
+ }
186
+ /**
187
+ * Set trigger (auto-resets)
188
+ */
189
+ setTrigger(name) {
190
+ this.parameters.set(name, true);
191
+ }
192
+ // ============================================================================
193
+ // Blend Trees
194
+ // ============================================================================
195
+ /**
196
+ * Add blend tree
197
+ */
198
+ addBlendTree(name, tree) {
199
+ if (!this.config.blendTrees) {
200
+ this.config.blendTrees = /* @__PURE__ */ new Map();
201
+ }
202
+ this.config.blendTrees.set(name, tree);
203
+ }
204
+ /**
205
+ * Activate blend tree
206
+ */
207
+ activateBlendTree(name) {
208
+ if (this.config.blendTrees?.has(name)) {
209
+ this.state.activeBlendTree = name;
210
+ }
211
+ }
212
+ // ============================================================================
213
+ // Layers
214
+ // ============================================================================
215
+ /**
216
+ * Set layer weight
217
+ */
218
+ setLayerWeight(layerIndex, weight) {
219
+ if (this.state.layerWeights[layerIndex] !== void 0) {
220
+ this.state.layerWeights[layerIndex] = Math.max(0, Math.min(1, weight));
221
+ }
222
+ }
223
+ /**
224
+ * Get layer weight
225
+ */
226
+ getLayerWeight(layerIndex) {
227
+ return this.state.layerWeights[layerIndex] ?? 0;
228
+ }
229
+ // ============================================================================
230
+ // Clips
231
+ // ============================================================================
232
+ /**
233
+ * Add animation clip
234
+ */
235
+ addClip(clip) {
236
+ this.clips.set(clip.name, clip);
237
+ if (!this.config.clips) {
238
+ this.config.clips = [];
239
+ }
240
+ this.config.clips.push(clip);
241
+ }
242
+ /**
243
+ * Get clip
244
+ */
245
+ getClip(name) {
246
+ return this.clips.get(name);
247
+ }
248
+ /**
249
+ * Get clip duration
250
+ */
251
+ getClipDuration(name) {
252
+ return this.clips.get(name)?.duration ?? 0;
253
+ }
254
+ /**
255
+ * Get all clip names
256
+ */
257
+ getClipNames() {
258
+ return Array.from(this.clips.keys());
259
+ }
260
+ // ============================================================================
261
+ // Update (called each frame)
262
+ // ============================================================================
263
+ /**
264
+ * Update animation (called by animation system each frame)
265
+ */
266
+ update(deltaTime) {
267
+ if (!this.enabled || !this.state.isPlaying) return;
268
+ const clip = this.state.currentClip ? this.clips.get(this.state.currentClip) : void 0;
269
+ if (!clip) return;
270
+ const speed = this.config.speed ?? 1;
271
+ this.state.currentTime += deltaTime * speed;
272
+ if (clip.loop) {
273
+ this.state.currentTime = this.state.currentTime % clip.duration;
274
+ } else if (this.state.currentTime >= clip.duration) {
275
+ this.state.currentTime = clip.duration;
276
+ this.state.isPlaying = false;
277
+ }
278
+ this.state.normalizedTime = clip.duration > 0 ? this.state.currentTime / clip.duration : 0;
279
+ if (clip.events) {
280
+ for (const event of clip.events) {
281
+ if (Math.abs(this.state.currentTime - event.time) < deltaTime) {
282
+ this.emitEvent(event);
283
+ }
284
+ }
285
+ }
286
+ if (this.state.crossfadeTarget && this.state.crossfadeProgress !== void 0) {
287
+ this.state.crossfadeProgress += deltaTime;
288
+ }
289
+ }
290
+ // ============================================================================
291
+ // Events
292
+ // ============================================================================
293
+ /**
294
+ * Add event listener
295
+ */
296
+ on(event, callback) {
297
+ if (!this.eventListeners.has(event)) {
298
+ this.eventListeners.set(event, []);
299
+ }
300
+ this.eventListeners.get(event).push(callback);
301
+ }
302
+ /**
303
+ * Remove event listener
304
+ */
305
+ off(event, callback) {
306
+ const listeners = this.eventListeners.get(event);
307
+ if (listeners) {
308
+ const index = listeners.indexOf(callback);
309
+ if (index !== -1) {
310
+ listeners.splice(index, 1);
311
+ }
312
+ }
313
+ }
314
+ /**
315
+ * Emit animation event
316
+ */
317
+ emitEvent(event) {
318
+ const listeners = this.eventListeners.get(event.name);
319
+ if (listeners) {
320
+ for (const callback of listeners) {
321
+ callback(event);
322
+ }
323
+ }
324
+ }
325
+ // ============================================================================
326
+ // Enable/Disable
327
+ // ============================================================================
328
+ /**
329
+ * Enable/disable skeleton
330
+ */
331
+ setEnabled(enabled) {
332
+ this.enabled = enabled;
333
+ }
334
+ /**
335
+ * Is enabled
336
+ */
337
+ isEnabled() {
338
+ return this.enabled;
339
+ }
340
+ // ============================================================================
341
+ // Serialization
342
+ // ============================================================================
343
+ /**
344
+ * Serialize for animation system
345
+ */
346
+ serialize() {
347
+ return {
348
+ rigType: this.config.rigType,
349
+ boneCount: this.bones.size,
350
+ clipCount: this.clips.size,
351
+ layerCount: this.config.layers?.length ?? 0,
352
+ currentClip: this.state.currentClip,
353
+ currentTime: this.state.currentTime,
354
+ normalizedTime: this.state.normalizedTime,
355
+ isPlaying: this.state.isPlaying,
356
+ speed: this.config.speed,
357
+ rootMotion: this.config.rootMotion,
358
+ enabled: this.enabled
359
+ };
360
+ }
361
+ };
362
+ function createSkeletonTrait(config = {}) {
363
+ return new SkeletonTrait(config);
364
+ }
365
+ var skeletonHandler = {
366
+ name: "skeleton",
367
+ defaultConfig: {},
368
+ onAttach(node, config, ctx) {
369
+ const instance = new SkeletonTrait(config);
370
+ node.__skeleton_instance = instance;
371
+ ctx.emit("skeleton_attached", { node, config });
372
+ },
373
+ onDetach(node, _config, ctx) {
374
+ const instance = node.__skeleton_instance;
375
+ if (instance) {
376
+ if (typeof instance.onDetach === "function") instance.onDetach(node, ctx);
377
+ else if (typeof instance.dispose === "function") instance.dispose();
378
+ else if (typeof instance.cleanup === "function") instance.cleanup();
379
+ }
380
+ ctx.emit("skeleton_detached", { node });
381
+ delete node.__skeleton_instance;
382
+ },
383
+ onEvent(node, _config, ctx, event) {
384
+ const instance = node.__skeleton_instance;
385
+ if (!instance) return;
386
+ if (typeof instance.onEvent === "function") instance.onEvent(event);
387
+ else if (typeof instance.emit === "function" && event.type) instance.emit(event);
388
+ if (event.type === "skeleton_configure" && event.payload) {
389
+ Object.assign(instance, event.payload);
390
+ ctx.emit("skeleton_configured", { node });
391
+ }
392
+ },
393
+ onUpdate(node, _config, ctx, dt) {
394
+ const instance = node.__skeleton_instance;
395
+ if (!instance) return;
396
+ if (typeof instance.onUpdate === "function") instance.onUpdate(node, ctx, dt);
397
+ }
398
+ };
399
+
400
+ exports.SkeletonTrait = SkeletonTrait;
401
+ exports.createSkeletonTrait = createSkeletonTrait;
402
+ exports.skeletonHandler = skeletonHandler;
403
+ //# sourceMappingURL=chunk-EKYL4PE3.cjs.map
404
+ //# sourceMappingURL=chunk-EKYL4PE3.cjs.map
@@ -0,0 +1,274 @@
1
+ 'use strict';
2
+
3
+ var chunkOSYNRVOV_cjs = require('./chunk-OSYNRVOV.cjs');
4
+
5
+ // src/interop/InteropBindingGenerator.ts
6
+ var InteropBindingGenerator = class {
7
+ /**
8
+ * Extract exports from a HoloScript AST
9
+ */
10
+ extractExports(ast) {
11
+ const exports$1 = [];
12
+ if (!ast.body) return exports$1;
13
+ for (const node of ast.body) {
14
+ const nodeRecord = node;
15
+ const nodeType = nodeRecord.type;
16
+ const nodeName = nodeRecord.name;
17
+ if (nodeType === "FunctionDeclaration" || nodeType === "function") {
18
+ const params = nodeRecord.params || [];
19
+ exports$1.push({
20
+ name: nodeName || "anonymous",
21
+ type: "function",
22
+ parameters: params.map((p) => {
23
+ if (typeof p === "string") {
24
+ return { name: p, type: "any", optional: false };
25
+ }
26
+ return {
27
+ name: p.name || "",
28
+ type: p.type || "any",
29
+ optional: p.optional || false
30
+ };
31
+ }),
32
+ returnType: nodeRecord.returnType || "void"
33
+ });
34
+ }
35
+ if (nodeType === "template" || nodeType === "ClassDeclaration") {
36
+ exports$1.push({
37
+ name: nodeName || "UnnamedTemplate",
38
+ type: "class"
39
+ });
40
+ }
41
+ if (nodeType === "composition") {
42
+ exports$1.push({
43
+ name: nodeName || "default",
44
+ type: "module"
45
+ });
46
+ }
47
+ if (nodeType === "VariableDeclaration" || nodeType === "state") {
48
+ exports$1.push({
49
+ name: nodeName || "unnamed",
50
+ type: "constant",
51
+ value: nodeRecord.value
52
+ });
53
+ }
54
+ }
55
+ return exports$1;
56
+ }
57
+ /**
58
+ * Generate Python bindings from HoloScript AST
59
+ */
60
+ generatePythonBindings(ast, sourceFile) {
61
+ const exports$1 = this.extractExports(ast);
62
+ const lines = [
63
+ '"""',
64
+ `Auto-generated Python bindings for ${sourceFile}`,
65
+ `Generated by HoloScript InteropBindingGenerator`,
66
+ `Do not edit manually \u2014 regenerate with: holoscript compile ${sourceFile} --target python`,
67
+ '"""',
68
+ "",
69
+ "from typing import Any, Optional, Dict, List",
70
+ "import json",
71
+ ""
72
+ ];
73
+ for (const exp of exports$1) {
74
+ switch (exp.type) {
75
+ case "function": {
76
+ const params = (exp.parameters || []).map((p) => {
77
+ const pyType = this.tsPyType(p.type);
78
+ return p.optional ? `${p.name}: ${pyType} = None` : `${p.name}: ${pyType}`;
79
+ }).join(", ");
80
+ const retType = this.tsPyType(exp.returnType || "void");
81
+ lines.push(`def ${exp.name}(${params}) -> ${retType}:`);
82
+ lines.push(` """HoloScript function: ${exp.name}"""`);
83
+ lines.push(` raise NotImplementedError("Bridge to HoloScript runtime required")`);
84
+ lines.push("");
85
+ break;
86
+ }
87
+ case "class": {
88
+ lines.push(`class ${exp.name}:`);
89
+ lines.push(` """HoloScript template: ${exp.name}"""`);
90
+ lines.push(` def __init__(self, **kwargs: Any) -> None:`);
91
+ lines.push(` self._props = kwargs`);
92
+ lines.push("");
93
+ break;
94
+ }
95
+ case "constant": {
96
+ lines.push(`${exp.name} = ${JSON.stringify(exp.value ?? "None")}`);
97
+ lines.push("");
98
+ break;
99
+ }
100
+ case "module": {
101
+ lines.push(`class ${exp.name}Module:`);
102
+ lines.push(` """HoloScript composition: ${exp.name}"""`);
103
+ lines.push(` pass`);
104
+ lines.push("");
105
+ break;
106
+ }
107
+ }
108
+ }
109
+ lines.push(`__all__ = [${exports$1.map((e) => `"${e.name}"`).join(", ")}]`);
110
+ return {
111
+ language: "python",
112
+ code: lines.join("\n"),
113
+ exports: exports$1.map((e) => e.name),
114
+ metadata: {
115
+ sourceFile,
116
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
117
+ holoScriptVersion: "5.0.0"
118
+ }
119
+ };
120
+ }
121
+ /**
122
+ * Generate JavaScript (ESM) bindings from HoloScript AST
123
+ */
124
+ generateJSBindings(ast, sourceFile) {
125
+ const exports$1 = this.extractExports(ast);
126
+ const lines = [
127
+ `// Auto-generated JS bindings for ${sourceFile}`,
128
+ `// Generated by HoloScript InteropBindingGenerator`,
129
+ `// Do not edit manually`,
130
+ ""
131
+ ];
132
+ for (const exp of exports$1) {
133
+ switch (exp.type) {
134
+ case "function": {
135
+ const params = (exp.parameters || []).map((p) => p.name).join(", ");
136
+ lines.push(`export function ${exp.name}(${params}) {`);
137
+ lines.push(` throw new Error("Bridge to HoloScript runtime required");`);
138
+ lines.push(`}`);
139
+ lines.push("");
140
+ break;
141
+ }
142
+ case "class": {
143
+ lines.push(`export class ${exp.name} {`);
144
+ lines.push(` constructor(props = {}) { this._props = props; }`);
145
+ lines.push(`}`);
146
+ lines.push("");
147
+ break;
148
+ }
149
+ case "constant": {
150
+ lines.push(`export const ${exp.name} = ${JSON.stringify(exp.value ?? null)};`);
151
+ lines.push("");
152
+ break;
153
+ }
154
+ case "module": {
155
+ lines.push(`export const ${exp.name} = { /* HoloScript composition */ };`);
156
+ lines.push("");
157
+ break;
158
+ }
159
+ }
160
+ }
161
+ return {
162
+ language: "javascript",
163
+ code: lines.join("\n"),
164
+ exports: exports$1.map((e) => e.name),
165
+ metadata: {
166
+ sourceFile,
167
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
168
+ holoScriptVersion: "5.0.0"
169
+ }
170
+ };
171
+ }
172
+ /**
173
+ * Map TypeScript types to Python types
174
+ */
175
+ tsPyType(tsType) {
176
+ const mapping = {
177
+ string: "str",
178
+ number: "float",
179
+ int: "int",
180
+ boolean: "bool",
181
+ void: "None",
182
+ any: "Any",
183
+ unknown: "Any",
184
+ "string[]": "List[str]",
185
+ "number[]": "List[float]"
186
+ };
187
+ return mapping[tsType] || "Any";
188
+ }
189
+ };
190
+
191
+ // src/mcp/MCPCircuitBreaker.ts
192
+ var MCPCircuitBreaker = class {
193
+ constructor(config = {}) {
194
+ this.breaker = new chunkOSYNRVOV_cjs.CircuitBreaker({
195
+ failureThreshold: config.failureThreshold ?? 5,
196
+ successThreshold: config.successThreshold ?? 2,
197
+ resetTimeoutMs: config.resetTimeoutMs ?? 3e4,
198
+ windowMs: config.windowMs ?? 6e4
199
+ });
200
+ this.baseUrl = config.baseUrl ?? "http://localhost:3000";
201
+ }
202
+ /**
203
+ * Call an MCP tool with circuit breaker protection + retry + timeout
204
+ */
205
+ async callTool(tool, args, timeoutMs = 15e3) {
206
+ try {
207
+ const result = await this.breaker.execute(async () => {
208
+ return chunkOSYNRVOV_cjs.retryWithBackoff(
209
+ async () => {
210
+ const response = await chunkOSYNRVOV_cjs.withTimeout(
211
+ fetch(`${this.baseUrl}/api/mcp/tools/${tool}`, {
212
+ method: "POST",
213
+ headers: { "Content-Type": "application/json" },
214
+ body: JSON.stringify({ arguments: args })
215
+ }),
216
+ timeoutMs
217
+ );
218
+ if (!response.ok) {
219
+ throw new Error(`MCP tool ${tool} failed: ${response.status} ${response.statusText}`);
220
+ }
221
+ return response.json();
222
+ },
223
+ {
224
+ maxAttempts: 2,
225
+ initialBackoffMs: 500,
226
+ maxBackoffMs: 3e3
227
+ }
228
+ );
229
+ });
230
+ return {
231
+ success: true,
232
+ content: result,
233
+ circuitState: this.breaker.getState()
234
+ };
235
+ } catch (error) {
236
+ return {
237
+ success: false,
238
+ error: error instanceof Error ? error.message : String(error),
239
+ circuitState: this.breaker.getState()
240
+ };
241
+ }
242
+ }
243
+ /**
244
+ * Get current circuit breaker state
245
+ */
246
+ getState() {
247
+ return this.breaker.getState();
248
+ }
249
+ /**
250
+ * Get circuit breaker metrics
251
+ */
252
+ getMetrics() {
253
+ return this.breaker.getMetrics();
254
+ }
255
+ /**
256
+ * Check if MCP server is available (circuit not open)
257
+ */
258
+ isAvailable() {
259
+ return this.breaker.getState() !== "OPEN" /* OPEN */;
260
+ }
261
+ };
262
+ var defaultInstance = null;
263
+ function getMCPCircuitBreaker(config) {
264
+ if (!defaultInstance) {
265
+ defaultInstance = new MCPCircuitBreaker(config);
266
+ }
267
+ return defaultInstance;
268
+ }
269
+
270
+ exports.InteropBindingGenerator = InteropBindingGenerator;
271
+ exports.MCPCircuitBreaker = MCPCircuitBreaker;
272
+ exports.getMCPCircuitBreaker = getMCPCircuitBreaker;
273
+ //# sourceMappingURL=chunk-EXKSFGSX.cjs.map
274
+ //# sourceMappingURL=chunk-EXKSFGSX.cjs.map