@holoscript/core 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/README.md +2 -2
  2. package/bin/holoscript.cjs +3 -0
  3. package/dist/GLTFPipeline-276GE64O.js +16 -0
  4. package/dist/GLTFPipeline-M7WSSJED.cjs +37 -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-3URVTKPJ.js +10 -0
  10. package/dist/HoloScriptRuntime-SXEAEU2N.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-23J755AR.js +1046 -0
  17. package/dist/chunk-253GBQZY.cjs +627 -0
  18. package/dist/chunk-25IQCHTO.cjs +781 -0
  19. package/dist/chunk-2BSMSUCE.js +1941 -0
  20. package/dist/chunk-2M2DPHKB.js +762 -0
  21. package/dist/chunk-2YSNA2F2.cjs +1274 -0
  22. package/dist/chunk-3AO425MZ.cjs +886 -0
  23. package/dist/chunk-3FOKASKO.cjs +348 -0
  24. package/dist/chunk-3HYYMEXI.cjs +56578 -0
  25. package/dist/chunk-3NFFOWGG.js +4287 -0
  26. package/dist/chunk-3WZEJHUQ.cjs +116 -0
  27. package/dist/chunk-4C57PR42.js +468 -0
  28. package/dist/chunk-4N4SXXWF.js +769 -0
  29. package/dist/chunk-4PDEPEQW.cjs +41 -0
  30. package/dist/chunk-4R6SBXDB.js +45 -0
  31. package/dist/chunk-4V2E7U7Q.cjs +2015 -0
  32. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  33. package/dist/chunk-5GLCTO44.js +161 -0
  34. package/dist/chunk-5JEU52DW.js +382 -0
  35. package/dist/chunk-5S7RKFGR.cjs +446 -0
  36. package/dist/chunk-5WUNN6ZN.cjs +428 -0
  37. package/dist/chunk-62FBK3B7.js +70 -0
  38. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  39. package/dist/chunk-6DPSFNJB.cjs +847 -0
  40. package/dist/chunk-6EX3I5P4.cjs +130 -0
  41. package/dist/chunk-73FELZVJ.cjs +611 -0
  42. package/dist/chunk-7CUEMLDZ.cjs +6445 -0
  43. package/dist/chunk-7HIASF7S.cjs +814 -0
  44. package/dist/chunk-A6KINLZJ.js +236 -0
  45. package/dist/chunk-AIA52I7T.cjs +543 -0
  46. package/dist/chunk-ANXZFVY2.js +113 -0
  47. package/dist/chunk-AYBXB26F.js +2176 -0
  48. package/dist/chunk-B4TFTDG4.js +449 -0
  49. package/dist/chunk-BE4UJCQT.js +623 -0
  50. package/dist/chunk-BRQJKJGT.cjs +20 -0
  51. package/dist/chunk-C2A5DUMF.cjs +689 -0
  52. package/dist/chunk-C37BHB7N.cjs +636 -0
  53. package/dist/chunk-CBJY23VL.js +126 -0
  54. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  55. package/dist/chunk-CXFDRBQU.cjs +672 -0
  56. package/dist/chunk-D54CNIAJ.cjs +413 -0
  57. package/dist/chunk-DAJXW4KX.js +725 -0
  58. package/dist/chunk-DTGBOSEM.cjs +319 -0
  59. package/dist/chunk-E7JP3BS3.cjs +61 -0
  60. package/dist/chunk-EKBKLK7P.js +1169 -0
  61. package/dist/chunk-EKYL4PE3.cjs +404 -0
  62. package/dist/chunk-EUDQTK7N.cjs +4310 -0
  63. package/dist/chunk-EXKSFGSX.cjs +274 -0
  64. package/dist/chunk-EXUP2BUM.cjs +1173 -0
  65. package/dist/chunk-F43YAA34.js +623 -0
  66. package/dist/chunk-FDSGHPAK.js +130 -0
  67. package/dist/chunk-FEWUHQNM.cjs +144 -0
  68. package/dist/chunk-FGGJQRLZ.js +270 -0
  69. package/dist/chunk-FHP6LXJS.js +415 -0
  70. package/dist/chunk-FJPADH77.cjs +666 -0
  71. package/dist/chunk-FYSPZT4V.cjs +169 -0
  72. package/dist/chunk-GIOYPNTH.js +5575 -0
  73. package/dist/chunk-GJNCFRJU.cjs +125 -0
  74. package/dist/chunk-GMP623FG.cjs +1508 -0
  75. package/dist/chunk-GQHQOPXZ.cjs +5580 -0
  76. package/dist/chunk-GQT4TYKY.cjs +4381 -0
  77. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  78. package/dist/chunk-GYZE55MO.js +2007 -0
  79. package/dist/chunk-GZG4KA4E.js +529 -0
  80. package/dist/chunk-H652NHX5.js +600 -0
  81. package/dist/chunk-HCCQLAA4.cjs +74 -0
  82. package/dist/chunk-HINXWAOD.cjs +1049 -0
  83. package/dist/chunk-HYNTS5CP.js +422 -0
  84. package/dist/chunk-HZSPDCXV.cjs +457 -0
  85. package/dist/chunk-HZTDET3N.js +1399 -0
  86. package/dist/chunk-I6XZ5DZF.cjs +488 -0
  87. package/dist/chunk-ILRBGFVD.cjs +72 -0
  88. package/dist/chunk-IPWSXCCN.js +1183 -0
  89. package/dist/chunk-IUTY5WQ2.cjs +424 -0
  90. package/dist/chunk-IVSZDECV.js +882 -0
  91. package/dist/chunk-IVY74O6C.js +247 -0
  92. package/dist/chunk-IZM5VQZD.js +714 -0
  93. package/dist/chunk-J32ZJZJH.js +554 -0
  94. package/dist/chunk-J6M4FPK5.js +421 -0
  95. package/dist/chunk-JC5YBPSF.cjs +984 -0
  96. package/dist/chunk-JCLBKPMX.js +3813 -0
  97. package/dist/chunk-JD7CIZ33.js +1949 -0
  98. package/dist/chunk-JIYN45TV.cjs +2525 -0
  99. package/dist/chunk-JJBE3TIH.cjs +1189 -0
  100. package/dist/chunk-JX7YL6ZE.js +2252 -0
  101. package/dist/chunk-K4VVR7CN.cjs +2433 -0
  102. package/dist/chunk-KEFNV2WM.cjs +2257 -0
  103. package/dist/chunk-KH4CNH66.cjs +424 -0
  104. package/dist/chunk-KJLB4OPV.js +5731 -0
  105. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  106. package/dist/chunk-KKP7JKN4.cjs +6002 -0
  107. package/dist/chunk-KPJL34Y7.cjs +186 -0
  108. package/dist/chunk-KQCN6AKJ.cjs +3042 -0
  109. package/dist/chunk-KVRSTFNH.cjs +72 -0
  110. package/dist/chunk-LICPB5HZ.cjs +1409 -0
  111. package/dist/chunk-LM2VU56C.cjs +37 -0
  112. package/dist/chunk-M56JSP4A.js +400 -0
  113. package/dist/chunk-MBOOR7X4.js +18 -0
  114. package/dist/chunk-MGE5Z4GS.js +608 -0
  115. package/dist/chunk-MXFUTKCO.js +56 -0
  116. package/dist/chunk-MYY4PMWX.cjs +264 -0
  117. package/dist/chunk-N75IH2HY.js +258 -0
  118. package/dist/chunk-NBMHU6SW.js +669 -0
  119. package/dist/chunk-NG77ATEW.cjs +778 -0
  120. package/dist/chunk-NGKREZ36.js +6384 -0
  121. package/dist/chunk-NHWSN2SD.cjs +718 -0
  122. package/dist/chunk-NV4VMVXU.js +421 -0
  123. package/dist/chunk-NW5G5FBQ.js +215 -0
  124. package/dist/chunk-NXZFOPVD.cjs +5737 -0
  125. package/dist/chunk-OBIYPYYS.cjs +1993 -0
  126. package/dist/chunk-OIQYIIO3.cjs +473 -0
  127. package/dist/chunk-OL46QLBJ.js +61 -0
  128. package/dist/chunk-OMXII44L.js +5386 -0
  129. package/dist/chunk-OR4Q2BGL.cjs +759 -0
  130. package/dist/chunk-OSYNRVOV.cjs +243 -0
  131. package/dist/chunk-PGANYCAG.cjs +220 -0
  132. package/dist/chunk-PHENW4MQ.js +65 -0
  133. package/dist/chunk-PHVRG4I2.js +844 -0
  134. package/dist/chunk-Q56TT7IL.js +483 -0
  135. package/dist/chunk-QPOQ7VPI.js +1491 -0
  136. package/dist/chunk-QPSKHBJP.js +5963 -0
  137. package/dist/chunk-QXH7QDSZ.js +1989 -0
  138. package/dist/chunk-R75BSDH7.cjs +50 -0
  139. package/dist/chunk-RARB3MBR.js +207 -0
  140. package/dist/chunk-RVBHAXFG.js +56160 -0
  141. package/dist/chunk-S3MDHNKB.cjs +490 -0
  142. package/dist/chunk-S4W6Z2MN.js +2426 -0
  143. package/dist/chunk-S6YWHCKV.cjs +410 -0
  144. package/dist/chunk-SIEXCILW.js +229 -0
  145. package/dist/chunk-SJBGLS25.cjs +2196 -0
  146. package/dist/chunk-SLU6UPJI.cjs +410 -0
  147. package/dist/chunk-SMIWS6DE.cjs +212 -0
  148. package/dist/chunk-T2QCTZMO.js +811 -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-U44IKGG7.cjs +5390 -0
  156. package/dist/chunk-UJXISJBN.js +487 -0
  157. package/dist/chunk-UM6C3CGK.js +4375 -0
  158. package/dist/chunk-UMABK6SI.js +686 -0
  159. package/dist/chunk-UOIGFQXC.cjs +9750 -0
  160. package/dist/chunk-URG2SJLK.js +2521 -0
  161. package/dist/chunk-V6MKC2FZ.js +979 -0
  162. package/dist/chunk-VECQYRXL.js +474 -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-W7VDOASB.cjs +639 -0
  168. package/dist/chunk-WDT3JTGM.cjs +483 -0
  169. package/dist/chunk-WJIHFLMJ.js +404 -0
  170. package/dist/chunk-WKX5AMOY.js +309 -0
  171. package/dist/chunk-WNNE3PO3.js +34 -0
  172. package/dist/chunk-WRKUDAZJ.js +3038 -0
  173. package/dist/chunk-WRLUBRKS.cjs +1943 -0
  174. package/dist/chunk-WRNEH5MO.js +3169 -0
  175. package/dist/chunk-WRWEX5ZF.js +658 -0
  176. package/dist/chunk-X3GJPRVK.cjs +3246 -0
  177. package/dist/chunk-XHIV6326.cjs +793 -0
  178. package/dist/chunk-XIVIE43A.cjs +729 -0
  179. package/dist/chunk-XJAN7CZG.cjs +432 -0
  180. package/dist/chunk-XKTPFXGA.js +164 -0
  181. package/dist/chunk-XL6INWKT.js +121 -0
  182. package/dist/chunk-XSFNHP2E.js +632 -0
  183. package/dist/chunk-XT6JY5W5.js +9684 -0
  184. package/dist/chunk-XUILI4KB.cjs +430 -0
  185. package/dist/chunk-XUUVDHIF.cjs +3962 -0
  186. package/dist/chunk-YF2I3MV3.js +46 -0
  187. package/dist/chunk-YIMN575O.js +4847 -0
  188. package/dist/chunk-YIVFJNYV.js +176 -0
  189. package/dist/chunk-YKGPCZEE.cjs +237 -0
  190. package/dist/chunk-YN6V7R3L.cjs +327 -0
  191. package/dist/chunk-YQELFNJV.js +39 -0
  192. package/dist/chunk-YYXH45E2.js +426 -0
  193. package/dist/chunk-ZBQXLH2L.js +756 -0
  194. package/dist/chunk-ZDSYWBIE.cjs +69 -0
  195. package/dist/chunk-ZU7NIRT6.js +325 -0
  196. package/dist/chunk-ZZ7RO2UQ.js +1243 -0
  197. package/dist/chunk-ZZEI7MV4.js +778 -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 +605 -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 +5860 -0
  230. package/dist/compiler/index.d.ts +322 -21
  231. package/dist/compiler/index.js +5525 -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.js +4 -0
  241. package/dist/compiler/openxr.cjs +19 -0
  242. package/dist/compiler/openxr.js +13 -0
  243. package/dist/compiler/playcanvas.cjs +19 -0
  244. package/dist/compiler/playcanvas.js +13 -0
  245. package/dist/compiler/r3f.cjs +38 -0
  246. package/dist/compiler/r3f.d.ts +22 -0
  247. package/dist/compiler/r3f.js +16 -0
  248. package/dist/compiler/remotion.cjs +23 -0
  249. package/dist/compiler/remotion.js +4 -0
  250. package/dist/compiler/reproducibility.cjs +39 -0
  251. package/dist/compiler/reproducibility.js +4 -0
  252. package/dist/compiler/sdf.cjs +24 -0
  253. package/dist/compiler/sdf.js +12 -0
  254. package/dist/compiler/semantic-scene.cjs +31 -0
  255. package/dist/compiler/semantic-scene.js +4 -0
  256. package/dist/compiler/state.cjs +21 -0
  257. package/dist/compiler/state.js +11 -0
  258. package/dist/compiler/trait-composition.cjs +30 -0
  259. package/dist/compiler/trait-composition.js +9 -0
  260. package/dist/compiler/unity.cjs +19 -0
  261. package/dist/compiler/unity.js +13 -0
  262. package/dist/compiler/unreal.cjs +23 -0
  263. package/dist/compiler/unreal.js +13 -0
  264. package/dist/compiler/urdf.cjs +52 -0
  265. package/dist/compiler/urdf.js +12 -0
  266. package/dist/compiler/usd-physics.cjs +26 -0
  267. package/dist/compiler/usd-physics.js +9 -0
  268. package/dist/compiler/visionos.cjs +19 -0
  269. package/dist/compiler/visionos.js +13 -0
  270. package/dist/compiler/vrchat.cjs +22 -0
  271. package/dist/compiler/vrchat.js +12 -0
  272. package/dist/compiler/vrr.cjs +24 -0
  273. package/dist/compiler/vrr.js +12 -0
  274. package/dist/compiler/wasm.cjs +36 -0
  275. package/dist/compiler/wasm.js +12 -0
  276. package/dist/compiler/webgpu.cjs +18 -0
  277. package/dist/compiler/webgpu.js +12 -0
  278. package/dist/coordinators/index.cjs +1266 -0
  279. package/dist/coordinators/index.d.ts +72 -1
  280. package/dist/coordinators/index.js +1259 -0
  281. package/dist/debugger.cjs +24 -0
  282. package/dist/debugger.js +11 -0
  283. package/dist/entries/interop.cjs +64 -0
  284. package/dist/entries/interop.js +7 -0
  285. package/dist/entries/scripting.cjs +55 -0
  286. package/dist/entries/scripting.js +10 -0
  287. package/dist/hololand/index.cjs +146 -0
  288. package/dist/hololand/index.d.ts +70 -0
  289. package/dist/hololand/index.js +5 -0
  290. package/dist/index.cjs +43233 -0
  291. package/dist/index.d.ts +976 -21
  292. package/dist/index.js +39995 -0
  293. package/dist/math/tropical-spmv.cjs +45 -0
  294. package/dist/math/tropical-spmv.js +4 -0
  295. package/dist/math/vec3.cjs +57 -0
  296. package/dist/math/vec3.js +4 -0
  297. package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
  298. package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
  299. package/dist/paper-0c-spike/index.cjs +150 -0
  300. package/dist/paper-0c-spike/index.js +141 -0
  301. package/dist/parser.cjs +61 -0
  302. package/dist/parser.d.ts +11 -0
  303. package/dist/parser.js +12 -0
  304. package/dist/playwright-3AT3AKTV.cjs +98673 -0
  305. package/dist/playwright-VZPDVUEQ.js +98660 -0
  306. package/dist/reconstruction/index.cjs +153 -0
  307. package/dist/reconstruction/index.d.ts +29 -2
  308. package/dist/reconstruction/index.js +8 -0
  309. package/dist/runtime.cjs +316 -0
  310. package/dist/runtime.d.ts +61 -0
  311. package/dist/runtime.js +31 -0
  312. package/dist/self-improvement/index.cjs +563 -0
  313. package/dist/self-improvement/index.js +545 -0
  314. package/dist/storage/index.cjs +38 -0
  315. package/dist/storage/index.js +5 -0
  316. package/dist/testing.cjs +25 -0
  317. package/dist/testing.d.ts +70 -0
  318. package/dist/testing.js +4 -0
  319. package/dist/traitDocs/traitDocs.cjs +33 -0
  320. package/dist/traitDocs/traitDocs.js +7 -0
  321. package/dist/traits/botanical-lotus.cjs +41 -0
  322. package/dist/traits/botanical-lotus.d.ts +172 -0
  323. package/dist/traits/botanical-lotus.js +4 -0
  324. package/dist/traits/engines/index.cjs +520 -0
  325. package/dist/traits/engines/index.js +380 -0
  326. package/dist/traits/index.cjs +24409 -0
  327. package/dist/traits/index.d.ts +171 -35
  328. package/dist/traits/index.js +21634 -0
  329. package/dist/traits/simulation-solver-factory.cjs +13 -0
  330. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  331. package/dist/traits/simulation-solver-factory.js +4 -0
  332. package/dist/traits/webcam-gaze.cjs +35 -0
  333. package/dist/traits/webcam-gaze.d.ts +17 -0
  334. package/dist/traits/webcam-gaze.js +4 -0
  335. package/dist/type-checker.cjs +19 -0
  336. package/dist/type-checker.js +6 -0
  337. package/dist/world/index.cjs +947 -0
  338. package/dist/world/index.d.ts +147 -0
  339. package/dist/world/index.js +939 -0
  340. package/dist/world-model/index.cjs +1446 -0
  341. package/dist/world-model/index.d.ts +119 -0
  342. package/dist/world-model/index.js +1414 -0
  343. package/dist/wot/index.cjs +29 -0
  344. package/dist/wot/index.js +4 -0
  345. package/package.json +93 -49
@@ -0,0 +1,264 @@
1
+ 'use strict';
2
+
3
+ // src/traits/engines/motion-matching.ts
4
+ var TRAJECTORY_HORIZON_FRAMES = 12;
5
+ var TRAJECTORY_FRAME_DT = 1 / 30;
6
+ function magnitude(v) {
7
+ return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
8
+ }
9
+ function classifyGait(speed, energyEfficiency) {
10
+ const efficiencyPenalty = energyEfficiency > 1 ? 0.85 : 1;
11
+ const adjusted = speed * efficiencyPenalty;
12
+ if (adjusted < 0.05) return "idle";
13
+ if (adjusted < 1.4) return "walk";
14
+ if (adjusted < 3) return "trot";
15
+ return "run";
16
+ }
17
+ function projectLinearTrajectory(velocity) {
18
+ const trajectory = [];
19
+ for (let i = 1; i <= TRAJECTORY_HORIZON_FRAMES; i++) {
20
+ const t = i * TRAJECTORY_FRAME_DT;
21
+ trajectory.push([velocity.x * t, velocity.y * t, velocity.z * t]);
22
+ }
23
+ return trajectory;
24
+ }
25
+ var NullMotionMatchingEngine = class {
26
+ constructor(modelId) {
27
+ this.loaded = false;
28
+ this.modelId = modelId;
29
+ }
30
+ async load() {
31
+ this.loaded = true;
32
+ }
33
+ infer(input) {
34
+ const speed = magnitude(input.targetVelocity);
35
+ const energyEfficiency = input.energyEfficiency ?? 1;
36
+ const phaseAdvance = (speed * 0.3 + 0.5) * input.delta;
37
+ const phase = (input.currentPhase + phaseAdvance) % 1;
38
+ const leftFootContact = phase < 0.5;
39
+ const rightFootContact = phase >= 0.5;
40
+ return {
41
+ pose: { joints: {}, timestamp: Date.now() },
42
+ phase,
43
+ trajectory: projectLinearTrajectory(input.targetVelocity),
44
+ stability: 1,
45
+ contactFeatures: { leftFoot: leftFootContact, rightFoot: rightFootContact },
46
+ gait: classifyGait(speed, energyEfficiency),
47
+ kineticEnergyProxy: speed * speed * energyEfficiency
48
+ };
49
+ }
50
+ dispose() {
51
+ this.loaded = false;
52
+ }
53
+ };
54
+ function createNullMotionMatchingEngine(modelId) {
55
+ return new NullMotionMatchingEngine(modelId);
56
+ }
57
+
58
+ // src/traits/engines/synthetic-walk-cycle.ts
59
+ var STRIDE_AMPLITUDE_RAD = 0.6;
60
+ var KNEE_FLEXION_AMPLITUDE_RAD = 0.5;
61
+ var HIP_BOB_AMPLITUDE = 0.04;
62
+ var SYNTHETIC_WALK_JOINTS = [
63
+ "hip",
64
+ "left_thigh",
65
+ "right_thigh",
66
+ "left_knee",
67
+ "right_knee",
68
+ "left_foot",
69
+ "right_foot"
70
+ ];
71
+ function buildSyntheticBipedPose(phase, speed) {
72
+ const leftSwing = Math.sin(phase * 2 * Math.PI);
73
+ const rightSwing = Math.sin((phase + 0.5) * 2 * Math.PI);
74
+ const speedScale = Math.min(speed, 6) / 6;
75
+ const hipY = 1 + Math.cos(phase * 4 * Math.PI) * HIP_BOB_AMPLITUDE * speedScale;
76
+ const hipYawRad = leftSwing * 0.05 * speedScale;
77
+ const hipQuat = [0, Math.sin(hipYawRad / 2), 0, Math.cos(hipYawRad / 2)];
78
+ const leftThighPitchRad = leftSwing * STRIDE_AMPLITUDE_RAD * speedScale;
79
+ const rightThighPitchRad = rightSwing * STRIDE_AMPLITUDE_RAD * speedScale;
80
+ const leftThighQuat = [Math.sin(leftThighPitchRad / 2), 0, 0, Math.cos(leftThighPitchRad / 2)];
81
+ const rightThighQuat = [Math.sin(rightThighPitchRad / 2), 0, 0, Math.cos(rightThighPitchRad / 2)];
82
+ const leftKneeRad = Math.max(0, leftSwing) * KNEE_FLEXION_AMPLITUDE_RAD * speedScale;
83
+ const rightKneeRad = Math.max(0, rightSwing) * KNEE_FLEXION_AMPLITUDE_RAD * speedScale;
84
+ const leftKneeQuat = [Math.sin(leftKneeRad / 2), 0, 0, Math.cos(leftKneeRad / 2)];
85
+ const rightKneeQuat = [Math.sin(rightKneeRad / 2), 0, 0, Math.cos(rightKneeRad / 2)];
86
+ const leftFootRad = -leftThighPitchRad * 0.5;
87
+ const rightFootRad = -rightThighPitchRad * 0.5;
88
+ const leftFootQuat = [Math.sin(leftFootRad / 2), 0, 0, Math.cos(leftFootRad / 2)];
89
+ const rightFootQuat = [Math.sin(rightFootRad / 2), 0, 0, Math.cos(rightFootRad / 2)];
90
+ return {
91
+ hip: { position: [0, hipY, 0], rotation: hipQuat },
92
+ left_thigh: { position: [0.1, hipY - 0.4, 0], rotation: leftThighQuat },
93
+ right_thigh: { position: [-0.1, hipY - 0.4, 0], rotation: rightThighQuat },
94
+ left_knee: { position: [0.1, hipY - 0.8, 0], rotation: leftKneeQuat },
95
+ right_knee: { position: [-0.1, hipY - 0.8, 0], rotation: rightKneeQuat },
96
+ left_foot: { position: [0.1, hipY - 1, 0], rotation: leftFootQuat },
97
+ right_foot: { position: [-0.1, hipY - 1, 0], rotation: rightFootQuat }
98
+ };
99
+ }
100
+ var SyntheticWalkCycleEngine = class {
101
+ constructor(modelId = "synthetic_biped_walk") {
102
+ this.loaded = false;
103
+ this.modelId = modelId;
104
+ }
105
+ async load() {
106
+ this.loaded = true;
107
+ }
108
+ infer(input) {
109
+ const speed = magnitude(input.targetVelocity);
110
+ const energyEfficiency = input.energyEfficiency ?? 1;
111
+ const phaseAdvance = Math.max(speed, 0.1) * 0.5 * input.delta;
112
+ const phase = (input.currentPhase + phaseAdvance) % 1;
113
+ const joints = buildSyntheticBipedPose(phase, speed);
114
+ const pose = { joints, timestamp: Date.now() };
115
+ const leftFoot = speed < 0.05 || phase < 0.5;
116
+ const rightFoot = speed < 0.05 || phase >= 0.5;
117
+ const contactFeatures = { leftFoot, rightFoot };
118
+ return {
119
+ pose,
120
+ phase,
121
+ trajectory: projectLinearTrajectory(input.targetVelocity),
122
+ stability: speed > 5 ? Math.max(0.1, 1 - (speed - 5) * 0.2) : 1,
123
+ contactFeatures,
124
+ gait: classifyGait(speed, energyEfficiency),
125
+ kineticEnergyProxy: speed * speed * energyEfficiency
126
+ };
127
+ }
128
+ dispose() {
129
+ this.loaded = false;
130
+ }
131
+ };
132
+ function createSyntheticWalkCycleEngine(modelId) {
133
+ return new SyntheticWalkCycleEngine(modelId);
134
+ }
135
+
136
+ // src/traits/engines/motion-data-schema.ts
137
+ var MOTION_DATA_SCHEMA_VERSION = 1;
138
+ function validateTrainingFrame(frame) {
139
+ if (typeof frame.frameIndex !== "number" || frame.frameIndex < 0) {
140
+ throw new Error(`TrainingFrame: frameIndex must be a non-negative number, got ${frame.frameIndex}`);
141
+ }
142
+ if (typeof frame.phase !== "number" || frame.phase < 0 || frame.phase >= 1) {
143
+ throw new Error(`TrainingFrame: phase must be in [0, 1), got ${frame.phase}`);
144
+ }
145
+ if (!frame.pose || typeof frame.pose !== "object" || !frame.pose.joints) {
146
+ throw new Error("TrainingFrame: pose.joints required");
147
+ }
148
+ if (!frame.contactFeatures || typeof frame.contactFeatures !== "object") {
149
+ throw new Error("TrainingFrame: contactFeatures required");
150
+ }
151
+ const validGaits = ["idle", "walk", "trot", "run", "crouch"];
152
+ if (!validGaits.includes(frame.gait)) {
153
+ throw new Error(`TrainingFrame: gait must be one of ${validGaits.join(", ")}, got ${frame.gait}`);
154
+ }
155
+ }
156
+ function validateMotionCapture(capture) {
157
+ if (capture.schemaVersion !== MOTION_DATA_SCHEMA_VERSION) {
158
+ throw new Error(
159
+ `MotionCapture: schemaVersion ${capture.schemaVersion} unsupported (current=${MOTION_DATA_SCHEMA_VERSION})`
160
+ );
161
+ }
162
+ if (!capture.captureId || typeof capture.captureId !== "string") {
163
+ throw new Error("MotionCapture: captureId required");
164
+ }
165
+ if (!capture.skeletonId || typeof capture.skeletonId !== "string") {
166
+ throw new Error("MotionCapture: skeletonId required");
167
+ }
168
+ if (capture.fps <= 0 || capture.fps > 240) {
169
+ throw new Error(`MotionCapture: fps must be in (0, 240], got ${capture.fps}`);
170
+ }
171
+ if (!capture.license || !capture.license.spdx) {
172
+ throw new Error(
173
+ "MotionCapture: license.spdx required \u2014 every training capture must declare a commercial-use-compatible license (refuses CC BY-NC, GPL viral, proprietary without explicit grant)"
174
+ );
175
+ }
176
+ const blockedSpdx = ["CC-BY-NC-4.0", "CC-BY-NC-SA-4.0", "CC-BY-NC-ND-4.0", "GPL-3.0", "AGPL-3.0"];
177
+ if (blockedSpdx.includes(capture.license.spdx)) {
178
+ throw new Error(
179
+ `MotionCapture: license ${capture.license.spdx} is incompatible with @holoscript/core commercial distribution. Permitted: MIT, Apache-2.0, BSD-3-Clause, CC-BY-4.0 (with attribution), proprietary-with-grant.`
180
+ );
181
+ }
182
+ if (!Array.isArray(capture.frames) || capture.frames.length === 0) {
183
+ throw new Error("MotionCapture: frames must be a non-empty array");
184
+ }
185
+ for (const frame of capture.frames) validateTrainingFrame(frame);
186
+ }
187
+ function validateTrainingCorpus(corpus) {
188
+ if (corpus.schemaVersion !== MOTION_DATA_SCHEMA_VERSION) {
189
+ throw new Error(`TrainingCorpus: schemaVersion ${corpus.schemaVersion} unsupported`);
190
+ }
191
+ if (!corpus.corpusId) throw new Error("TrainingCorpus: corpusId required");
192
+ if (!corpus.skeletonId) throw new Error("TrainingCorpus: skeletonId required");
193
+ if (!corpus.splits) throw new Error("TrainingCorpus: splits required");
194
+ const captureIds = new Set(corpus.captures.map((c) => c.captureId));
195
+ const splitIds = [...corpus.splits.train, ...corpus.splits.val, ...corpus.splits.test];
196
+ for (const id of splitIds) {
197
+ if (!captureIds.has(id)) {
198
+ throw new Error(`TrainingCorpus: split references unknown captureId ${id}`);
199
+ }
200
+ }
201
+ const seenInSplit = /* @__PURE__ */ new Set();
202
+ for (const id of splitIds) {
203
+ if (seenInSplit.has(id)) {
204
+ throw new Error(`TrainingCorpus: captureId ${id} appears in multiple splits \u2014 data leakage`);
205
+ }
206
+ seenInSplit.add(id);
207
+ }
208
+ for (const cap of corpus.captures) {
209
+ if (cap.skeletonId !== corpus.skeletonId) {
210
+ throw new Error(
211
+ `TrainingCorpus: capture ${cap.captureId} skeleton ${cap.skeletonId} differs from corpus skeleton ${corpus.skeletonId}`
212
+ );
213
+ }
214
+ validateMotionCapture(cap);
215
+ }
216
+ }
217
+ function inferenceFrameToTensor(frame, sortedJointNames) {
218
+ const headerLen = 8;
219
+ const jointLen = sortedJointNames.length * 7;
220
+ const out = new Float32Array(headerLen + jointLen);
221
+ out[0] = frame.phase;
222
+ out[1] = frame.rootVelocity.x;
223
+ out[2] = frame.rootVelocity.y;
224
+ out[3] = frame.rootVelocity.z;
225
+ out[4] = frame.rootAngularVelocity;
226
+ const terrain = frame.terrainNormal ?? { x: 0, y: 1, z: 0 };
227
+ out[5] = terrain.x;
228
+ out[6] = terrain.y;
229
+ out[7] = terrain.z;
230
+ for (let i = 0; i < sortedJointNames.length; i++) {
231
+ const jointName = sortedJointNames[i];
232
+ const joint = frame.pose.joints[jointName];
233
+ const base = headerLen + i * 7;
234
+ if (joint) {
235
+ out[base + 0] = joint.position[0];
236
+ out[base + 1] = joint.position[1];
237
+ out[base + 2] = joint.position[2];
238
+ out[base + 3] = joint.rotation[0];
239
+ out[base + 4] = joint.rotation[1];
240
+ out[base + 5] = joint.rotation[2];
241
+ out[base + 6] = joint.rotation[3];
242
+ }
243
+ }
244
+ return out;
245
+ }
246
+
247
+ exports.MOTION_DATA_SCHEMA_VERSION = MOTION_DATA_SCHEMA_VERSION;
248
+ exports.NullMotionMatchingEngine = NullMotionMatchingEngine;
249
+ exports.SYNTHETIC_WALK_JOINTS = SYNTHETIC_WALK_JOINTS;
250
+ exports.SyntheticWalkCycleEngine = SyntheticWalkCycleEngine;
251
+ exports.TRAJECTORY_FRAME_DT = TRAJECTORY_FRAME_DT;
252
+ exports.TRAJECTORY_HORIZON_FRAMES = TRAJECTORY_HORIZON_FRAMES;
253
+ exports.buildSyntheticBipedPose = buildSyntheticBipedPose;
254
+ exports.classifyGait = classifyGait;
255
+ exports.createNullMotionMatchingEngine = createNullMotionMatchingEngine;
256
+ exports.createSyntheticWalkCycleEngine = createSyntheticWalkCycleEngine;
257
+ exports.inferenceFrameToTensor = inferenceFrameToTensor;
258
+ exports.magnitude = magnitude;
259
+ exports.projectLinearTrajectory = projectLinearTrajectory;
260
+ exports.validateMotionCapture = validateMotionCapture;
261
+ exports.validateTrainingCorpus = validateTrainingCorpus;
262
+ exports.validateTrainingFrame = validateTrainingFrame;
263
+ //# sourceMappingURL=chunk-MYY4PMWX.cjs.map
264
+ //# sourceMappingURL=chunk-MYY4PMWX.cjs.map
@@ -0,0 +1,258 @@
1
+ import { __esm } from './chunk-OL46QLBJ.js';
2
+
3
+ // src/compiler/identity/AgentRiskRegistry.ts
4
+ function getAgentRiskRegistry(config) {
5
+ if (!globalRegistry) {
6
+ globalRegistry = new AgentRiskRegistry(config);
7
+ }
8
+ return globalRegistry;
9
+ }
10
+ function isDangerousOperation(operation) {
11
+ return DANGEROUS_OPERATIONS.includes(operation);
12
+ }
13
+ var DEFAULT_THRESHOLDS, AgentRiskRegistry, globalRegistry, DANGEROUS_OPERATIONS, TIER_COMPOSITION_RISK_CAP;
14
+ var init_AgentRiskRegistry = __esm({
15
+ "src/compiler/identity/AgentRiskRegistry.ts"() {
16
+ DEFAULT_THRESHOLDS = {
17
+ medium: 15,
18
+ high: 40,
19
+ quarantined: 75
20
+ };
21
+ AgentRiskRegistry = class {
22
+ constructor(config = {}) {
23
+ /** agentId -> ring of recent events (oldest first). */
24
+ this.events = /* @__PURE__ */ new Map();
25
+ /** Lifetime counters (not decayed). */
26
+ this.lifetimeEvents = /* @__PURE__ */ new Map();
27
+ this.lifetimeSuccesses = /* @__PURE__ */ new Map();
28
+ this.halfLifeMs = config.halfLifeMs ?? 60 * 60 * 1e3;
29
+ this.tierThresholds = {
30
+ medium: config.tierThresholds?.medium ?? DEFAULT_THRESHOLDS.medium,
31
+ high: config.tierThresholds?.high ?? DEFAULT_THRESHOLDS.high,
32
+ quarantined: config.tierThresholds?.quarantined ?? DEFAULT_THRESHOLDS.quarantined
33
+ };
34
+ this.successCreditPerOp = config.successCreditPerOp ?? 5;
35
+ this.maxEventsPerAgent = config.maxEventsPerAgent ?? 256;
36
+ this.now = config.now ?? (() => Date.now());
37
+ if (this.tierThresholds.medium >= this.tierThresholds.high) {
38
+ throw new Error("AgentRiskRegistry: tierThresholds.medium must be < high");
39
+ }
40
+ if (this.tierThresholds.high >= this.tierThresholds.quarantined) {
41
+ throw new Error("AgentRiskRegistry: tierThresholds.high must be < quarantined");
42
+ }
43
+ if (this.halfLifeMs <= 0) {
44
+ throw new Error("AgentRiskRegistry: halfLifeMs must be > 0");
45
+ }
46
+ }
47
+ /**
48
+ * Record a confabulation event from a `ConfabulationValidationResult`.
49
+ *
50
+ * Severity is taken from the result's `riskScore`. If the result is `valid`
51
+ * (no errors) this records a *success*, not a confabulation event — clean
52
+ * passes lower the agent's running score.
53
+ */
54
+ recordValidation(agentId, result) {
55
+ if (result.valid && result.errors.length === 0) {
56
+ this.recordSuccess(agentId);
57
+ return;
58
+ }
59
+ const severity = Math.max(1, Math.min(100, Math.round(result.riskScore)));
60
+ const reason = this.summarizeErrors(result.errors);
61
+ this.recordEvent({
62
+ agentId,
63
+ severity,
64
+ reason,
65
+ timestamp: this.now()
66
+ });
67
+ }
68
+ /**
69
+ * Record a custom risk event (e.g. from a downstream consumer that detected
70
+ * confabulation outside the standard validator path).
71
+ */
72
+ recordEvent(event) {
73
+ const ring = this.events.get(event.agentId) ?? [];
74
+ ring.push(event);
75
+ if (ring.length > this.maxEventsPerAgent) {
76
+ ring.shift();
77
+ }
78
+ this.events.set(event.agentId, ring);
79
+ this.lifetimeEvents.set(
80
+ event.agentId,
81
+ (this.lifetimeEvents.get(event.agentId) ?? 0) + 1
82
+ );
83
+ }
84
+ /**
85
+ * Record a successful (clean) operation. Reduces the agent's accrued score
86
+ * by `successCreditPerOp` (post-decay, floored at 0).
87
+ *
88
+ * Implemented as a synthetic *negative* event so that decay still applies:
89
+ * we push a sentinel with negative severity. `getScore` clamps to >=0.
90
+ */
91
+ recordSuccess(agentId) {
92
+ if (this.successCreditPerOp <= 0) {
93
+ this.lifetimeSuccesses.set(
94
+ agentId,
95
+ (this.lifetimeSuccesses.get(agentId) ?? 0) + 1
96
+ );
97
+ return;
98
+ }
99
+ const ring = this.events.get(agentId) ?? [];
100
+ ring.push({
101
+ agentId,
102
+ severity: -this.successCreditPerOp,
103
+ reason: "clean-validation",
104
+ timestamp: this.now()
105
+ });
106
+ if (ring.length > this.maxEventsPerAgent) {
107
+ ring.shift();
108
+ }
109
+ this.events.set(agentId, ring);
110
+ this.lifetimeSuccesses.set(
111
+ agentId,
112
+ (this.lifetimeSuccesses.get(agentId) ?? 0) + 1
113
+ );
114
+ }
115
+ /**
116
+ * Compute the current decayed risk score for an agent (0-100).
117
+ *
118
+ * Each event contributes `severity * 0.5 ^ (age / halfLifeMs)`. Negative
119
+ * (success) events reduce the running total. Final score is clamped to
120
+ * [0, 100].
121
+ */
122
+ getScore(agentId) {
123
+ const ring = this.events.get(agentId);
124
+ if (!ring || ring.length === 0) return 0;
125
+ const now = this.now();
126
+ let score = 0;
127
+ for (const ev of ring) {
128
+ const ageMs = Math.max(0, now - ev.timestamp);
129
+ const decay = Math.pow(0.5, ageMs / this.halfLifeMs);
130
+ score += ev.severity * decay;
131
+ }
132
+ return Math.max(0, Math.min(100, score));
133
+ }
134
+ /**
135
+ * Classify an agent into a `RiskTier`. Pure function of `getScore`.
136
+ */
137
+ getTier(agentId) {
138
+ const score = this.getScore(agentId);
139
+ if (score >= this.tierThresholds.quarantined) return "quarantined" /* QUARANTINED */;
140
+ if (score >= this.tierThresholds.high) return "high" /* HIGH */;
141
+ if (score >= this.tierThresholds.medium) return "medium" /* MEDIUM */;
142
+ return "low" /* LOW */;
143
+ }
144
+ /**
145
+ * Snapshot of an agent's current state (for diagnostics / dashboards).
146
+ */
147
+ getSnapshot(agentId) {
148
+ const ring = this.events.get(agentId) ?? [];
149
+ const positiveEvents = ring.filter((e) => e.severity > 0);
150
+ const lastPositive = positiveEvents[positiveEvents.length - 1];
151
+ return {
152
+ agentId,
153
+ score: this.getScore(agentId),
154
+ tier: this.getTier(agentId),
155
+ recentEventCount: positiveEvents.length,
156
+ lifetimeEventCount: this.lifetimeEvents.get(agentId) ?? 0,
157
+ lifetimeSuccessCount: this.lifetimeSuccesses.get(agentId) ?? 0,
158
+ lastEventAt: lastPositive ? lastPositive.timestamp : null
159
+ };
160
+ }
161
+ /**
162
+ * Force-set an agent's tier by clearing history and inserting a calibration
163
+ * event. Used by orchestrators to quarantine a known-bad agent or to
164
+ * reinstate a rehabilitated one.
165
+ *
166
+ * Note: this is an *administrative* operation, not a normal flow. The
167
+ * caller is responsible for authorization.
168
+ *
169
+ * The inserted event is severity = midpoint of the requested tier band
170
+ * so that small amounts of decay between `setTier` and the next read
171
+ * don't bump the agent into a lower tier.
172
+ */
173
+ setTier(agentId, tier) {
174
+ this.events.delete(agentId);
175
+ if (tier === "low" /* LOW */) {
176
+ return;
177
+ }
178
+ let severity;
179
+ switch (tier) {
180
+ case "medium" /* MEDIUM */:
181
+ severity = (this.tierThresholds.medium + this.tierThresholds.high) / 2;
182
+ break;
183
+ case "high" /* HIGH */:
184
+ severity = (this.tierThresholds.high + this.tierThresholds.quarantined) / 2;
185
+ break;
186
+ case "quarantined" /* QUARANTINED */:
187
+ severity = Math.min(100, this.tierThresholds.quarantined + 10);
188
+ break;
189
+ }
190
+ this.recordEvent({
191
+ agentId,
192
+ severity,
193
+ reason: `administrative:set-tier:${tier}`,
194
+ timestamp: this.now()
195
+ });
196
+ }
197
+ /**
198
+ * Clear all history for an agent. Resets to LOW tier.
199
+ */
200
+ clear(agentId) {
201
+ this.events.delete(agentId);
202
+ this.lifetimeEvents.delete(agentId);
203
+ this.lifetimeSuccesses.delete(agentId);
204
+ }
205
+ /**
206
+ * Clear all state in the registry. Useful for tests.
207
+ */
208
+ clearAll() {
209
+ this.events.clear();
210
+ this.lifetimeEvents.clear();
211
+ this.lifetimeSuccesses.clear();
212
+ }
213
+ /**
214
+ * List all agents currently tracked (have at least one event).
215
+ */
216
+ listAgents() {
217
+ return Array.from(this.events.keys());
218
+ }
219
+ /**
220
+ * Configured tier thresholds (read-only view).
221
+ */
222
+ getThresholds() {
223
+ return { ...this.tierThresholds };
224
+ }
225
+ /**
226
+ * Configured half-life in ms (read-only).
227
+ */
228
+ getHalfLifeMs() {
229
+ return this.halfLifeMs;
230
+ }
231
+ // ---------------------------------------------------------------------------
232
+ // PRIVATE HELPERS
233
+ // ---------------------------------------------------------------------------
234
+ summarizeErrors(errors) {
235
+ if (errors.length === 0) return "no-errors";
236
+ if (errors.length === 1) return errors[0].code;
237
+ return `${errors[0].code}+${errors.length - 1}-more`;
238
+ }
239
+ };
240
+ globalRegistry = null;
241
+ DANGEROUS_OPERATIONS = [
242
+ "write",
243
+ "transform",
244
+ "execute"
245
+ ];
246
+ TIER_COMPOSITION_RISK_CAP = {
247
+ ["low" /* LOW */]: 50,
248
+ ["medium" /* MEDIUM */]: 25,
249
+ ["high" /* HIGH */]: 10,
250
+ ["quarantined" /* QUARANTINED */]: -1
251
+ // sentinel: any composition denied
252
+ };
253
+ }
254
+ });
255
+
256
+ export { TIER_COMPOSITION_RISK_CAP, getAgentRiskRegistry, init_AgentRiskRegistry, isDangerousOperation };
257
+ //# sourceMappingURL=chunk-N75IH2HY.js.map
258
+ //# sourceMappingURL=chunk-N75IH2HY.js.map