@elizaos/app-core 2.0.0-alpha.85 → 2.0.0-beta.2

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 (1882) hide show
  1. package/account-pool.d.ts +6 -0
  2. package/account-pool.d.ts.map +1 -0
  3. package/account-pool.js +5 -0
  4. package/api/__tests__/sandbox-test-helpers.d.ts +10 -0
  5. package/api/__tests__/sandbox-test-helpers.d.ts.map +1 -0
  6. package/api/__tests__/sandbox-test-helpers.js +15 -0
  7. package/api/auth/audit.d.ts +52 -0
  8. package/api/auth/audit.d.ts.map +1 -0
  9. package/api/auth/audit.js +126 -0
  10. package/api/auth/auth-context.d.ts +40 -0
  11. package/api/auth/auth-context.d.ts.map +1 -0
  12. package/api/auth/auth-context.js +68 -0
  13. package/api/auth/bootstrap-token.d.ts +50 -0
  14. package/api/auth/bootstrap-token.d.ts.map +1 -0
  15. package/api/auth/bootstrap-token.js +157 -0
  16. package/api/auth/index.d.ts +14 -0
  17. package/api/auth/index.d.ts.map +1 -0
  18. package/api/auth/index.js +13 -0
  19. package/api/auth/passwords.d.ts +65 -0
  20. package/api/auth/passwords.d.ts.map +1 -0
  21. package/api/auth/passwords.js +87 -0
  22. package/api/auth/sensitive-rate-limit.d.ts +56 -0
  23. package/api/auth/sensitive-rate-limit.d.ts.map +1 -0
  24. package/api/auth/sensitive-rate-limit.js +95 -0
  25. package/api/auth/sessions.d.ts +152 -0
  26. package/api/auth/sessions.d.ts.map +1 -0
  27. package/api/auth/sessions.js +298 -0
  28. package/api/auth/tokens.d.ts +3 -0
  29. package/api/auth/tokens.d.ts.map +1 -0
  30. package/api/auth/tokens.js +13 -0
  31. package/api/auth-bootstrap-routes.d.ts +32 -0
  32. package/api/auth-bootstrap-routes.d.ts.map +1 -0
  33. package/api/auth-bootstrap-routes.js +179 -0
  34. package/api/auth-pairing-compat-routes.d.ts +17 -0
  35. package/api/auth-pairing-compat-routes.d.ts.map +1 -0
  36. package/api/auth-pairing-compat-routes.js +301 -0
  37. package/api/auth-session-routes.d.ts +31 -0
  38. package/api/auth-session-routes.d.ts.map +1 -0
  39. package/api/auth-session-routes.js +560 -0
  40. package/api/auth.d.ts +153 -0
  41. package/api/auth.d.ts.map +1 -0
  42. package/api/auth.js +290 -0
  43. package/api/automation-node-contributors.d.ts +14 -0
  44. package/api/automation-node-contributors.d.ts.map +1 -0
  45. package/api/automation-node-contributors.js +14 -0
  46. package/api/automations-compat-routes.d.ts +18 -0
  47. package/api/automations-compat-routes.d.ts.map +1 -0
  48. package/api/automations-compat-routes.js +274 -0
  49. package/api/catalog-routes.d.ts +4 -0
  50. package/api/catalog-routes.d.ts.map +1 -0
  51. package/api/catalog-routes.js +61 -0
  52. package/api/compat-route-shared.d.ts +29 -0
  53. package/api/compat-route-shared.d.ts.map +1 -0
  54. package/api/compat-route-shared.js +298 -0
  55. package/api/credential-resolver.d.ts +31 -0
  56. package/api/credential-resolver.d.ts.map +1 -0
  57. package/api/credential-resolver.js +199 -0
  58. package/api/database-rows-compat-routes.d.ts +4 -0
  59. package/api/database-rows-compat-routes.d.ts.map +1 -0
  60. package/api/database-rows-compat-routes.js +100 -0
  61. package/api/dev-compat-routes.d.ts +11 -0
  62. package/api/dev-compat-routes.d.ts.map +1 -0
  63. package/api/dev-compat-routes.js +144 -0
  64. package/api/dev-console-log.d.ts +21 -0
  65. package/api/dev-console-log.d.ts.map +1 -0
  66. package/api/dev-console-log.js +65 -0
  67. package/api/dev-stack.d.ts +49 -0
  68. package/api/dev-stack.d.ts.map +1 -0
  69. package/api/dev-stack.js +60 -0
  70. package/api/local-inference-compat-routes.d.ts +16 -0
  71. package/api/local-inference-compat-routes.d.ts.map +1 -0
  72. package/api/local-inference-compat-routes.js +617 -0
  73. package/api/onboarding-compat-routes.d.ts +4 -0
  74. package/api/onboarding-compat-routes.d.ts.map +1 -0
  75. package/api/onboarding-compat-routes.js +207 -0
  76. package/api/plugins-compat-routes.d.ts +103 -0
  77. package/api/plugins-compat-routes.d.ts.map +1 -0
  78. package/api/plugins-compat-routes.js +1181 -0
  79. package/api/response.d.ts +4 -0
  80. package/api/response.d.ts.map +1 -0
  81. package/api/response.js +28 -0
  82. package/api/runtime-mode-routes.d.ts +13 -0
  83. package/api/runtime-mode-routes.d.ts.map +1 -0
  84. package/api/runtime-mode-routes.js +32 -0
  85. package/api/secrets-inventory-routes.d.ts +39 -0
  86. package/api/secrets-inventory-routes.d.ts.map +1 -0
  87. package/api/secrets-inventory-routes.js +487 -0
  88. package/api/secrets-manager-routes.d.ts +9 -0
  89. package/api/secrets-manager-routes.d.ts.map +1 -0
  90. package/api/secrets-manager-routes.js +476 -0
  91. package/api/sensitive-request-routes.d.ts +20 -0
  92. package/api/sensitive-request-routes.d.ts.map +1 -0
  93. package/api/sensitive-request-routes.js +489 -0
  94. package/api/sensitive-request-store.d.ts +39 -0
  95. package/api/sensitive-request-store.d.ts.map +1 -0
  96. package/api/sensitive-request-store.js +204 -0
  97. package/api/server-config-filter.d.ts +14 -0
  98. package/api/server-config-filter.d.ts.map +1 -0
  99. package/api/server-config-filter.js +77 -0
  100. package/api/server-cors.d.ts +30 -0
  101. package/api/server-cors.d.ts.map +1 -0
  102. package/api/server-cors.js +128 -0
  103. package/api/server-html.d.ts +4 -0
  104. package/api/server-html.d.ts.map +1 -0
  105. package/api/server-html.js +5 -0
  106. package/api/server-onboarding-compat.d.ts +31 -0
  107. package/api/server-onboarding-compat.d.ts.map +1 -0
  108. package/api/server-onboarding-compat.js +283 -0
  109. package/api/server-security.d.ts +11 -0
  110. package/api/server-security.d.ts.map +1 -0
  111. package/api/server-security.js +29 -0
  112. package/api/server-startup.d.ts +5 -0
  113. package/api/server-startup.d.ts.map +1 -0
  114. package/api/server-startup.js +74 -0
  115. package/api/server-wallet-trade.d.ts +10 -0
  116. package/api/server-wallet-trade.d.ts.map +1 -0
  117. package/api/server-wallet-trade.js +240 -0
  118. package/api/server.d.ts +32 -0
  119. package/api/server.d.ts.map +1 -0
  120. package/api/server.js +768 -0
  121. package/api/workbench-compat-routes.d.ts +11 -0
  122. package/api/workbench-compat-routes.d.ts.map +1 -0
  123. package/api/workbench-compat-routes.js +325 -0
  124. package/benchmark/cua-routes.d.ts +10 -0
  125. package/benchmark/cua-routes.d.ts.map +1 -0
  126. package/benchmark/cua-routes.js +179 -0
  127. package/benchmark/lifeops-bench-handler.d.ts +94 -0
  128. package/benchmark/lifeops-bench-handler.d.ts.map +1 -0
  129. package/benchmark/lifeops-bench-handler.js +280 -0
  130. package/benchmark/lifeops-fake-backend.d.ts +227 -0
  131. package/benchmark/lifeops-fake-backend.d.ts.map +1 -0
  132. package/benchmark/lifeops-fake-backend.js +499 -0
  133. package/benchmark/mock-plugin-base.d.ts +9 -0
  134. package/benchmark/mock-plugin-base.d.ts.map +1 -0
  135. package/benchmark/mock-plugin-base.js +325 -0
  136. package/benchmark/mock-plugin.d.ts +3 -0
  137. package/benchmark/mock-plugin.d.ts.map +1 -0
  138. package/benchmark/mock-plugin.js +504 -0
  139. package/benchmark/params.d.ts +2 -0
  140. package/benchmark/params.d.ts.map +1 -0
  141. package/benchmark/params.js +18 -0
  142. package/benchmark/plugin.d.ts +42 -0
  143. package/benchmark/plugin.d.ts.map +1 -0
  144. package/benchmark/plugin.js +422 -0
  145. package/benchmark/replay-capture.d.ts +73 -0
  146. package/benchmark/replay-capture.d.ts.map +1 -0
  147. package/benchmark/replay-capture.js +223 -0
  148. package/benchmark/server-utils.d.ts +100 -0
  149. package/benchmark/server-utils.d.ts.map +1 -0
  150. package/benchmark/server-utils.js +289 -0
  151. package/benchmark/server.d.ts +2 -0
  152. package/benchmark/server.d.ts.map +1 -0
  153. package/benchmark/server.js +1176 -0
  154. package/browser.d.ts +13 -0
  155. package/browser.d.ts.map +1 -0
  156. package/browser.js +15 -0
  157. package/cli/argv.d.ts +17 -0
  158. package/cli/argv.d.ts.map +1 -0
  159. package/cli/argv.js +140 -0
  160. package/cli/banner.d.ts +11 -0
  161. package/cli/banner.d.ts.map +1 -0
  162. package/cli/banner.js +36 -0
  163. package/cli/cli-name.d.ts +5 -0
  164. package/cli/cli-name.d.ts.map +1 -0
  165. package/cli/cli-name.js +21 -0
  166. package/cli/cli-utils.d.ts +5 -0
  167. package/cli/cli-utils.d.ts.map +1 -0
  168. package/cli/cli-utils.js +13 -0
  169. package/cli/command-format.d.ts +2 -0
  170. package/cli/command-format.d.ts.map +1 -0
  171. package/cli/command-format.js +20 -0
  172. package/cli/doctor/checks.d.ts +96 -0
  173. package/cli/doctor/checks.d.ts.map +1 -0
  174. package/cli/doctor/checks.js +483 -0
  175. package/cli/git-commit.d.ts +5 -0
  176. package/cli/git-commit.d.ts.map +1 -0
  177. package/cli/git-commit.js +106 -0
  178. package/cli/parse-duration.d.ts +5 -0
  179. package/cli/parse-duration.d.ts.map +1 -0
  180. package/cli/parse-duration.js +27 -0
  181. package/cli/plugins-cli.d.ts +26 -0
  182. package/cli/plugins-cli.d.ts.map +1 -0
  183. package/cli/plugins-cli.js +892 -0
  184. package/cli/profile-utils.d.ts +3 -0
  185. package/cli/profile-utils.d.ts.map +1 -0
  186. package/cli/profile-utils.js +21 -0
  187. package/cli/profile.d.ts +15 -0
  188. package/cli/profile.d.ts.map +1 -0
  189. package/cli/profile.js +93 -0
  190. package/cli/program/build-program.d.ts +3 -0
  191. package/cli/program/build-program.d.ts.map +1 -0
  192. package/cli/program/build-program.js +12 -0
  193. package/cli/program/command-registry.d.ts +3 -0
  194. package/cli/program/command-registry.d.ts.map +1 -0
  195. package/cli/program/command-registry.js +24 -0
  196. package/cli/program/help.d.ts +3 -0
  197. package/cli/program/help.d.ts.map +1 -0
  198. package/cli/program/help.js +57 -0
  199. package/cli/program/preaction.d.ts +3 -0
  200. package/cli/program/preaction.d.ts.map +1 -0
  201. package/cli/program/preaction.js +40 -0
  202. package/cli/program/register.auth.d.ts +51 -0
  203. package/cli/program/register.auth.d.ts.map +1 -0
  204. package/cli/program/register.auth.js +203 -0
  205. package/cli/program/register.benchmark.d.ts +3 -0
  206. package/cli/program/register.benchmark.d.ts.map +1 -0
  207. package/cli/program/register.benchmark.js +12 -0
  208. package/cli/program/register.config.d.ts +3 -0
  209. package/cli/program/register.config.d.ts.map +1 -0
  210. package/cli/program/register.config.js +150 -0
  211. package/cli/program/register.configure.d.ts +3 -0
  212. package/cli/program/register.configure.d.ts.map +1 -0
  213. package/cli/program/register.configure.js +18 -0
  214. package/cli/program/register.dashboard.d.ts +3 -0
  215. package/cli/program/register.dashboard.d.ts.map +1 -0
  216. package/cli/program/register.dashboard.js +124 -0
  217. package/cli/program/register.db.d.ts +3 -0
  218. package/cli/program/register.db.d.ts.map +1 -0
  219. package/cli/program/register.db.js +45 -0
  220. package/cli/program/register.doctor.d.ts +3 -0
  221. package/cli/program/register.doctor.d.ts.map +1 -0
  222. package/cli/program/register.doctor.js +170 -0
  223. package/cli/program/register.models.d.ts +3 -0
  224. package/cli/program/register.models.d.ts.map +1 -0
  225. package/cli/program/register.models.js +32 -0
  226. package/cli/program/register.setup.d.ts +16 -0
  227. package/cli/program/register.setup.d.ts.map +1 -0
  228. package/cli/program/register.setup.js +333 -0
  229. package/cli/program/register.start.d.ts +3 -0
  230. package/cli/program/register.start.d.ts.map +1 -0
  231. package/cli/program/register.start.js +95 -0
  232. package/cli/program/register.subclis.d.ts +4 -0
  233. package/cli/program/register.subclis.d.ts.map +1 -0
  234. package/cli/program/register.subclis.js +87 -0
  235. package/cli/program/register.update.d.ts +12 -0
  236. package/cli/program/register.update.d.ts.map +1 -0
  237. package/cli/program/register.update.js +173 -0
  238. package/cli/program.d.ts +2 -0
  239. package/cli/program.d.ts.map +1 -0
  240. package/cli/program.js +1 -0
  241. package/cli/run-main.d.ts +2 -0
  242. package/cli/run-main.d.ts.map +1 -0
  243. package/cli/run-main.js +71 -0
  244. package/cli/version.d.ts +2 -0
  245. package/cli/version.d.ts.map +1 -0
  246. package/cli/version.js +2 -0
  247. package/connectors/capacitor-jsc.d.ts +66 -0
  248. package/connectors/capacitor-jsc.d.ts.map +1 -0
  249. package/connectors/capacitor-jsc.js +39 -0
  250. package/connectors/capacitor-quickjs.d.ts +64 -0
  251. package/connectors/capacitor-quickjs.d.ts.map +1 -0
  252. package/connectors/capacitor-quickjs.js +50 -0
  253. package/connectors/capacitor-sqlite.d.ts +41 -0
  254. package/connectors/capacitor-sqlite.d.ts.map +1 -0
  255. package/connectors/capacitor-sqlite.js +87 -0
  256. package/diagnostics/integration-observability.d.ts +40 -0
  257. package/diagnostics/integration-observability.d.ts.map +1 -0
  258. package/diagnostics/integration-observability.js +68 -0
  259. package/entry.d.ts +10 -0
  260. package/entry.d.ts.map +1 -0
  261. package/entry.js +66 -0
  262. package/index.d.ts +34 -4
  263. package/index.d.ts.map +1 -1
  264. package/index.js +42 -6
  265. package/package.json +81 -151
  266. package/packaging/PUBLISHING_GUIDE.md +707 -0
  267. package/packaging/debian/changelog +9 -0
  268. package/packaging/debian/control +26 -0
  269. package/packaging/debian/copyright +27 -0
  270. package/packaging/debian/elizaos-app.service +15 -0
  271. package/packaging/debian/install +4 -0
  272. package/packaging/debian/postinst +28 -0
  273. package/packaging/debian/prerm +14 -0
  274. package/packaging/debian/rules +44 -0
  275. package/packaging/debian/source/format +1 -0
  276. package/packaging/flatpak/README.md +150 -0
  277. package/packaging/flatpak/ai.elizaos.App.desktop +11 -0
  278. package/packaging/flatpak/ai.elizaos.App.metainfo.xml +81 -0
  279. package/packaging/flatpak/ai.elizaos.App.store.yml +142 -0
  280. package/packaging/flatpak/ai.elizaos.App.yml +142 -0
  281. package/packaging/flatpak/elizaos-app-wrapper.sh +5 -0
  282. package/packaging/flatpak/elizaos-app-wrapper.store.sh +16 -0
  283. package/packaging/flatpak/icons/128x128/ai.elizaos.App.png +0 -0
  284. package/packaging/flatpak/icons/256x256/ai.elizaos.App.png +0 -0
  285. package/packaging/flatpak/icons/512x512/ai.elizaos.App.png +0 -0
  286. package/packaging/homebrew/README.md +80 -0
  287. package/packaging/homebrew/elizaos-app.cask.rb +60 -0
  288. package/packaging/homebrew/elizaos-app.rb +49 -0
  289. package/packaging/inno/ElizaOSApp.iss +53 -0
  290. package/packaging/inno/build-inno.ps1 +231 -0
  291. package/packaging/msix/AppxManifest.store.xml +79 -0
  292. package/packaging/msix/AppxManifest.xml +53 -0
  293. package/packaging/msix/README.md +201 -0
  294. package/packaging/msix/assets/LargeTile.png +0 -0
  295. package/packaging/msix/assets/Square150x150Logo.png +0 -0
  296. package/packaging/msix/assets/Square44x44Logo.png +0 -0
  297. package/packaging/msix/assets/StoreLogo.png +0 -0
  298. package/packaging/msix/assets/Wide310x150Logo.png +0 -0
  299. package/packaging/msix/build-msix.ps1 +206 -0
  300. package/packaging/msix/generate-placeholder-assets.ps1 +49 -0
  301. package/packaging/msix/store/description.md +31 -0
  302. package/packaging/msix/store/listing.json +27 -0
  303. package/packaging/pypi/README.md +14 -0
  304. package/packaging/pypi/elizaos_app/__init__.py +7 -0
  305. package/packaging/pypi/elizaos_app/__main__.py +6 -0
  306. package/packaging/pypi/elizaos_app/cli.py +21 -0
  307. package/packaging/pypi/elizaos_app/loader.py +127 -0
  308. package/packaging/pypi/elizaos_app/py.typed +1 -0
  309. package/packaging/pypi/pyproject.toml +38 -0
  310. package/packaging/snap/snapcraft.yaml +560 -0
  311. package/packaging/test-packaging.sh +309 -0
  312. package/patches/@noble%2Fcurves@2.0.1.patch +33 -0
  313. package/patches/@pixiv%2Fthree-vrm@3.5.2.patch +26 -0
  314. package/patches/coding-agent-adapters@0.16.3.patch +44 -0
  315. package/patches/electrobun@1.16.0.patch +13 -0
  316. package/patches/llama-cpp-capacitor@0.1.5.patch +2387 -0
  317. package/patches/proper-lockfile@4.1.2.patch +14 -0
  318. package/patches/pty-manager@1.11.0.patch +194 -0
  319. package/permissions/types.d.ts +8 -0
  320. package/permissions/types.d.ts.map +1 -0
  321. package/permissions/types.js +7 -0
  322. package/platform/agent-browser-stub.d.ts +27 -0
  323. package/platform/agent-browser-stub.d.ts.map +1 -0
  324. package/platform/agent-browser-stub.js +16 -0
  325. package/platform/empty-node-module.d.ts +31 -0
  326. package/platform/empty-node-module.d.ts.map +1 -0
  327. package/platform/empty-node-module.js +22 -0
  328. package/platforms/android/Gemfile +6 -0
  329. package/platforms/android/README.md +79 -0
  330. package/platforms/android/app/build.gradle +124 -0
  331. package/platforms/android/app/capacitor.build.gradle +32 -0
  332. package/platforms/android/app/proguard-rules.pro +46 -0
  333. package/platforms/android/app/src/androidTest/java/ai/elizaos/app/ElizaOsInstrumentedTest.java +162 -0
  334. package/platforms/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
  335. package/platforms/android/app/src/main/AndroidManifest.xml +83 -0
  336. package/platforms/android/app/src/main/java/ai/elizaos/app/AgentPlugin.java +232 -0
  337. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +1514 -0
  338. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAssistActivity.java +21 -0
  339. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBootReceiver.java +61 -0
  340. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBrowserActivity.java +39 -0
  341. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCalendarActivity.java +75 -0
  342. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCameraActivity.java +54 -0
  343. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaClockActivity.java +70 -0
  344. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaContactsActivity.java +56 -0
  345. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaDialActivity.java +83 -0
  346. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaInCallService.java +168 -0
  347. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaMmsReceiver.java +70 -0
  348. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +38 -0
  349. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaRespondViaMessageService.java +119 -0
  350. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsComposeActivity.java +50 -0
  351. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsReceiver.java +84 -0
  352. package/platforms/android/app/src/main/java/ai/elizaos/app/GatewayConnectionService.java +211 -0
  353. package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +202 -0
  354. package/platforms/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  355. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  356. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  357. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  358. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  359. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  360. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  361. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  362. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  363. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  364. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  365. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  366. package/platforms/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
  367. package/platforms/android/app/src/main/res/layout/activity_main.xml +12 -0
  368. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  369. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
  370. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  371. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  372. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  373. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  374. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  375. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  376. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  377. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  378. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  379. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  380. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  381. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  382. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  383. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  384. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  385. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
  386. package/platforms/android/app/src/main/res/values/strings.xml +7 -0
  387. package/platforms/android/app/src/main/res/values/styles.xml +22 -0
  388. package/platforms/android/app/src/main/res/xml/file_paths.xml +5 -0
  389. package/platforms/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
  390. package/platforms/android/build.gradle +63 -0
  391. package/platforms/android/capacitor-cordova-android-plugins/build.gradle +53 -0
  392. package/platforms/android/capacitor-cordova-android-plugins/cordova.variables.gradle +3 -0
  393. package/platforms/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml +3 -0
  394. package/platforms/android/capacitor-cordova-android-plugins/src/main/java/.gitkeep +1 -0
  395. package/platforms/android/capacitor-cordova-android-plugins/src/main/res/.gitkeep +1 -0
  396. package/platforms/android/capacitor.settings.gradle +45 -0
  397. package/platforms/android/fastlane/Appfile +2 -0
  398. package/platforms/android/fastlane/Fastfile +59 -0
  399. package/platforms/android/fastlane/metadata/android/en-US/full_description.txt +24 -0
  400. package/platforms/android/fastlane/metadata/android/en-US/short_description.txt +1 -0
  401. package/platforms/android/fastlane/metadata/android/en-US/title.txt +1 -0
  402. package/platforms/android/fastlane/metadata/android/en-US/video.txt +0 -0
  403. package/platforms/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  404. package/platforms/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  405. package/platforms/android/gradle.properties +27 -0
  406. package/platforms/android/gradlew +251 -0
  407. package/platforms/android/gradlew.bat +94 -0
  408. package/platforms/android/settings.gradle +13 -0
  409. package/platforms/android/variables.gradle +17 -0
  410. package/platforms/electrobun/.generated/brand-config.json +8 -0
  411. package/platforms/electrobun/README.md +44 -0
  412. package/platforms/electrobun/assets/appIcon.ico +0 -0
  413. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128.png +0 -0
  414. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128@2x.png +0 -0
  415. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16.png +0 -0
  416. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16@2x.png +0 -0
  417. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256.png +0 -0
  418. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256@2x.png +0 -0
  419. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32.png +0 -0
  420. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32@2x.png +0 -0
  421. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512.png +0 -0
  422. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512@2x.png +0 -0
  423. package/platforms/electrobun/assets/appIcon.png +0 -0
  424. package/platforms/electrobun/assets/brand-config.json +8 -0
  425. package/platforms/electrobun/biome.json +11 -0
  426. package/platforms/electrobun/electrobun.config.ts +435 -0
  427. package/platforms/electrobun/entitlements/README.md +54 -0
  428. package/platforms/electrobun/entitlements/mas-child.entitlements +10 -0
  429. package/platforms/electrobun/entitlements/mas.entitlements +41 -0
  430. package/platforms/electrobun/native/macos/window-effects.mm +1030 -0
  431. package/platforms/electrobun/package.json +42 -0
  432. package/platforms/electrobun/scripts/bin/zip +2 -0
  433. package/platforms/electrobun/scripts/build-macos-effects.sh +31 -0
  434. package/platforms/electrobun/scripts/build-whisper-universal.sh +137 -0
  435. package/platforms/electrobun/scripts/build-whisper.sh +95 -0
  436. package/platforms/electrobun/scripts/ensure-whisper-model.sh +93 -0
  437. package/platforms/electrobun/scripts/hdiutil-wrapper.sh +33 -0
  438. package/platforms/electrobun/scripts/lib/app-dir.mjs +74 -0
  439. package/platforms/electrobun/scripts/lib/repo-root.mjs +77 -0
  440. package/platforms/electrobun/scripts/local-adhoc-sign-macos.ts +214 -0
  441. package/platforms/electrobun/scripts/macos-direct-launcher.c +84 -0
  442. package/platforms/electrobun/scripts/postwrap-diagnostics.ts +423 -0
  443. package/platforms/electrobun/scripts/postwrap-sign-runtime-macos.ts +352 -0
  444. package/platforms/electrobun/scripts/sign-windows.ps1 +121 -0
  445. package/platforms/electrobun/scripts/smoke-test-windows.ps1 +907 -0
  446. package/platforms/electrobun/scripts/smoke-test.sh +1186 -0
  447. package/platforms/electrobun/scripts/stage-macos-release-artifacts.sh +491 -0
  448. package/platforms/electrobun/scripts/sync-web-assets.mjs +48 -0
  449. package/platforms/electrobun/scripts/verify-rpc-handlers.ts +162 -0
  450. package/platforms/electrobun/scripts/verify-windows-installer-proof.ps1 +203 -0
  451. package/platforms/electrobun/scripts/xcrun-wrapper.sh +80 -0
  452. package/platforms/electrobun/scripts/zip-wrapper.sh +6 -0
  453. package/platforms/electrobun/src/__stubs__/bun-ffi.ts +51 -0
  454. package/platforms/electrobun/src/__stubs__/electrobun-bun.ts +20 -0
  455. package/platforms/electrobun/src/agent-ready-state.ts +35 -0
  456. package/platforms/electrobun/src/agent-reset-from-main.ts +87 -0
  457. package/platforms/electrobun/src/api-base.ts +169 -0
  458. package/platforms/electrobun/src/application-menu-action-registry.ts +21 -0
  459. package/platforms/electrobun/src/application-menu.ts +418 -0
  460. package/platforms/electrobun/src/background-notice.ts +65 -0
  461. package/platforms/electrobun/src/brand-config.ts +184 -0
  462. package/platforms/electrobun/src/bridge/browser-tabs-renderer-registry.ts +60 -0
  463. package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +430 -0
  464. package/platforms/electrobun/src/bridge/electrobun-preload.ts +1 -0
  465. package/platforms/electrobun/src/bridge/electrobun-stub.ts +21 -0
  466. package/platforms/electrobun/src/browser-workspace-bridge-server.ts +284 -0
  467. package/platforms/electrobun/src/cloud-auth-window.ts +216 -0
  468. package/platforms/electrobun/src/cloud-disconnect-from-main.ts +118 -0
  469. package/platforms/electrobun/src/constants.ts +2 -0
  470. package/platforms/electrobun/src/desktop-http-request.test.ts +85 -0
  471. package/platforms/electrobun/src/desktop-http-request.ts +103 -0
  472. package/platforms/electrobun/src/desktop-test-bridge-server.ts +248 -0
  473. package/platforms/electrobun/src/devtools-layout.ts +63 -0
  474. package/platforms/electrobun/src/diagnostic-format.ts +65 -0
  475. package/platforms/electrobun/src/fatal-shutdown.test.ts +30 -0
  476. package/platforms/electrobun/src/fatal-shutdown.ts +10 -0
  477. package/platforms/electrobun/src/floating-chat-window.ts +239 -0
  478. package/platforms/electrobun/src/index.ts +2510 -0
  479. package/platforms/electrobun/src/libMacWindowEffects.dylib +0 -0
  480. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +119 -0
  481. package/platforms/electrobun/src/lifecycle/desktop-session-prime.ts +77 -0
  482. package/platforms/electrobun/src/logger.ts +23 -0
  483. package/platforms/electrobun/src/main-window-runtime.ts +117 -0
  484. package/platforms/electrobun/src/main-window-session.ts +88 -0
  485. package/platforms/electrobun/src/menu-reset-from-main.ts +211 -0
  486. package/platforms/electrobun/src/native/agent.ts +1963 -0
  487. package/platforms/electrobun/src/native/auth-bridge.ts +525 -0
  488. package/platforms/electrobun/src/native/browser-workspace.ts +574 -0
  489. package/platforms/electrobun/src/native/camera.ts +68 -0
  490. package/platforms/electrobun/src/native/canvas.ts +504 -0
  491. package/platforms/electrobun/src/native/credentials.ts +765 -0
  492. package/platforms/electrobun/src/native/desktop.ts +2317 -0
  493. package/platforms/electrobun/src/native/editor-bridge.ts +292 -0
  494. package/platforms/electrobun/src/native/file-watcher.ts +220 -0
  495. package/platforms/electrobun/src/native/gateway.ts +218 -0
  496. package/platforms/electrobun/src/native/gpu-window.ts +301 -0
  497. package/platforms/electrobun/src/native/index.ts +105 -0
  498. package/platforms/electrobun/src/native/location.ts +110 -0
  499. package/platforms/electrobun/src/native/loopback-port.ts +81 -0
  500. package/platforms/electrobun/src/native/mac-window-effects.ts +178 -0
  501. package/platforms/electrobun/src/native/music-player.ts +61 -0
  502. package/platforms/electrobun/src/native/permissions-shared.ts +171 -0
  503. package/platforms/electrobun/src/native/permissions.ts +242 -0
  504. package/platforms/electrobun/src/native/power-state.ts +195 -0
  505. package/platforms/electrobun/src/native/screencapture.ts +654 -0
  506. package/platforms/electrobun/src/native/steward.ts +343 -0
  507. package/platforms/electrobun/src/native/swabble.ts +349 -0
  508. package/platforms/electrobun/src/native/talkmode.ts +441 -0
  509. package/platforms/electrobun/src/native/webgpu-browser-support.ts +220 -0
  510. package/platforms/electrobun/src/native/whisper.ts +280 -0
  511. package/platforms/electrobun/src/preload-validation.ts +65 -0
  512. package/platforms/electrobun/src/preload.js +1 -0
  513. package/platforms/electrobun/src/print-electrobun-dev-settings-banner.ts +140 -0
  514. package/platforms/electrobun/src/renderer-static.ts +77 -0
  515. package/platforms/electrobun/src/rpc-handlers.ts +1079 -0
  516. package/platforms/electrobun/src/rpc-schema.ts +1870 -0
  517. package/platforms/electrobun/src/runtime-layout.ts +150 -0
  518. package/platforms/electrobun/src/runtime-permissions.ts +131 -0
  519. package/platforms/electrobun/src/screenshot-dev-server.ts +125 -0
  520. package/platforms/electrobun/src/startup-trace.ts +351 -0
  521. package/platforms/electrobun/src/surface-windows.ts +475 -0
  522. package/platforms/electrobun/src/types/web-speech.d.ts +52 -0
  523. package/platforms/electrobun/src/types.ts +18 -0
  524. package/platforms/electrobun/src/windows-cef-profile.ts +124 -0
  525. package/platforms/electrobun/tsconfig.json +75 -0
  526. package/platforms/electrobun/vitest.electrobun.config.ts +54 -0
  527. package/platforms/ios/App/App/App.entitlements +18 -0
  528. package/platforms/ios/App/App/AppDelegate.swift +93 -0
  529. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ios-marketing-1024.png +0 -0
  530. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@1x.png +0 -0
  531. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@2x.png +0 -0
  532. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@1x.png +0 -0
  533. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@2x.png +0 -0
  534. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@1x.png +0 -0
  535. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@2x.png +0 -0
  536. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@1x.png +0 -0
  537. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@2x.png +0 -0
  538. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-83_5x83_5@2x.png +0 -0
  539. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@2x.png +0 -0
  540. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@3x.png +0 -0
  541. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@2x.png +0 -0
  542. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@3x.png +0 -0
  543. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@2x.png +0 -0
  544. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@3x.png +0 -0
  545. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@2x.png +0 -0
  546. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@3x.png +0 -0
  547. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +116 -0
  548. package/platforms/ios/App/App/Assets.xcassets/Contents.json +6 -0
  549. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +23 -0
  550. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  551. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  552. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  553. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +32 -0
  554. package/platforms/ios/App/App/Base.lproj/Main.storyboard +19 -0
  555. package/platforms/ios/App/App/ElizaIntentPlugin.swift +185 -0
  556. package/platforms/ios/App/App/Info.plist +123 -0
  557. package/platforms/ios/App/App/PrivacyInfo.xcprivacy +55 -0
  558. package/platforms/ios/App/App/SceneDelegate.swift +77 -0
  559. package/platforms/ios/App/App/WebsiteBlockerContentExtension/ActionRequestHandler.swift +142 -0
  560. package/platforms/ios/App/App/WebsiteBlockerContentExtension/Info.plist +29 -0
  561. package/platforms/ios/App/App/WebsiteBlockerContentExtension/PrivacyInfo.xcprivacy +23 -0
  562. package/platforms/ios/App/App/WebsiteBlockerContentExtension/WebsiteBlockerContentExtension.entitlements +10 -0
  563. package/platforms/ios/App/App.xcodeproj/project.pbxproj +596 -0
  564. package/platforms/ios/App/App.xcworkspace/contents.xcworkspacedata +10 -0
  565. package/platforms/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  566. package/platforms/ios/App/ExportOptions.plist +18 -0
  567. package/platforms/ios/App/Podfile +51 -0
  568. package/platforms/ios/App/Podfile.lock +131 -0
  569. package/platforms/ios/Gemfile +6 -0
  570. package/platforms/ios/fastlane/Appfile +4 -0
  571. package/platforms/ios/fastlane/Fastfile +94 -0
  572. package/platforms/ios/fastlane/Matchfile +12 -0
  573. package/platforms/ios/fastlane/metadata/en-US/description.txt +22 -0
  574. package/platforms/ios/fastlane/metadata/en-US/keywords.txt +1 -0
  575. package/platforms/ios/fastlane/metadata/en-US/marketing_url.txt +1 -0
  576. package/platforms/ios/fastlane/metadata/en-US/name.txt +1 -0
  577. package/platforms/ios/fastlane/metadata/en-US/privacy_url.txt +1 -0
  578. package/platforms/ios/fastlane/metadata/en-US/promotional_text.txt +1 -0
  579. package/platforms/ios/fastlane/metadata/en-US/subtitle.txt +1 -0
  580. package/platforms/ios/fastlane/metadata/en-US/support_url.txt +1 -0
  581. package/register-runtime-hooks.d.ts +2 -0
  582. package/register-runtime-hooks.d.ts.map +1 -0
  583. package/register-runtime-hooks.js +13 -0
  584. package/registry/generate-apps.d.ts +2 -0
  585. package/registry/generate-apps.d.ts.map +1 -0
  586. package/registry/generate-apps.js +338 -0
  587. package/registry/generate.d.ts +2 -0
  588. package/registry/generate.d.ts.map +1 -0
  589. package/registry/generate.js +506 -0
  590. package/registry/index.d.ts +6 -0
  591. package/registry/index.d.ts.map +1 -0
  592. package/registry/index.js +68 -0
  593. package/registry/loader.d.ts +27 -0
  594. package/registry/loader.d.ts.map +1 -0
  595. package/registry/loader.js +111 -0
  596. package/registry/schema.d.ts +989 -0
  597. package/registry/schema.d.ts.map +1 -0
  598. package/registry/schema.js +264 -0
  599. package/runtime/api-dev-settings-banner.d.ts +7 -0
  600. package/runtime/api-dev-settings-banner.d.ts.map +1 -0
  601. package/runtime/api-dev-settings-banner.js +104 -0
  602. package/runtime/app-route-plugin-registry.d.ts +3 -0
  603. package/runtime/app-route-plugin-registry.d.ts.map +1 -0
  604. package/runtime/app-route-plugin-registry.js +1 -0
  605. package/runtime/build-character-from-config.d.ts +3 -0
  606. package/runtime/build-character-from-config.d.ts.map +1 -0
  607. package/runtime/build-character-from-config.js +59 -0
  608. package/runtime/build-variant.d.ts +8 -0
  609. package/runtime/build-variant.d.ts.map +1 -0
  610. package/runtime/build-variant.js +7 -0
  611. package/runtime/channel-plugin-map.d.ts +6 -0
  612. package/runtime/channel-plugin-map.d.ts.map +1 -0
  613. package/runtime/channel-plugin-map.js +38 -0
  614. package/runtime/dev-server.d.ts +2 -0
  615. package/runtime/dev-server.d.ts.map +1 -0
  616. package/runtime/dev-server.js +383 -0
  617. package/runtime/dev-settings-figlet-heading.d.ts +22 -0
  618. package/runtime/dev-settings-figlet-heading.d.ts.map +1 -0
  619. package/runtime/dev-settings-figlet-heading.js +55 -0
  620. package/runtime/eliza.d.ts +21 -0
  621. package/runtime/eliza.d.ts.map +1 -0
  622. package/runtime/eliza.js +863 -0
  623. package/runtime/embedding-manager-support.d.ts +77 -0
  624. package/runtime/embedding-manager-support.d.ts.map +1 -0
  625. package/runtime/embedding-manager-support.js +309 -0
  626. package/runtime/embedding-presets.d.ts +5 -0
  627. package/runtime/embedding-presets.d.ts.map +1 -0
  628. package/runtime/embedding-presets.js +47 -0
  629. package/runtime/embedding-warmup-policy.d.ts +13 -0
  630. package/runtime/embedding-warmup-policy.d.ts.map +1 -0
  631. package/runtime/embedding-warmup-policy.js +33 -0
  632. package/runtime/ensure-local-inference-handler.d.ts +25 -0
  633. package/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  634. package/runtime/ensure-local-inference-handler.js +389 -0
  635. package/runtime/ensure-text-to-speech-handler.d.ts +18 -0
  636. package/runtime/ensure-text-to-speech-handler.d.ts.map +1 -0
  637. package/runtime/ensure-text-to-speech-handler.js +50 -0
  638. package/runtime/error-handlers.d.ts +12 -0
  639. package/runtime/error-handlers.d.ts.map +1 -0
  640. package/runtime/error-handlers.js +49 -0
  641. package/runtime/mobile-local-inference-gate.d.ts +21 -0
  642. package/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  643. package/runtime/mobile-local-inference-gate.js +24 -0
  644. package/runtime/mobile-safe-runtime.d.ts +123 -0
  645. package/runtime/mobile-safe-runtime.d.ts.map +1 -0
  646. package/runtime/mobile-safe-runtime.js +290 -0
  647. package/runtime/mode/remote-forwarder.d.ts +35 -0
  648. package/runtime/mode/remote-forwarder.d.ts.map +1 -0
  649. package/runtime/mode/remote-forwarder.js +119 -0
  650. package/runtime/mode/route-mode-guard.d.ts +21 -0
  651. package/runtime/mode/route-mode-guard.d.ts.map +1 -0
  652. package/runtime/mode/route-mode-guard.js +30 -0
  653. package/runtime/mode/route-mode-matrix.d.ts +64 -0
  654. package/runtime/mode/route-mode-matrix.d.ts.map +1 -0
  655. package/runtime/mode/route-mode-matrix.js +125 -0
  656. package/runtime/mode/runtime-mode.d.ts +72 -0
  657. package/runtime/mode/runtime-mode.d.ts.map +1 -0
  658. package/runtime/mode/runtime-mode.js +167 -0
  659. package/runtime/runtime-bootstrap-policy.d.ts +17 -0
  660. package/runtime/runtime-bootstrap-policy.d.ts.map +1 -0
  661. package/runtime/runtime-bootstrap-policy.js +37 -0
  662. package/runtime/sandbox-policy.d.ts +8 -0
  663. package/runtime/sandbox-policy.d.ts.map +1 -0
  664. package/runtime/sandbox-policy.js +7 -0
  665. package/runtime/startup-overlay.d.ts +14 -0
  666. package/runtime/startup-overlay.d.ts.map +1 -0
  667. package/runtime/startup-overlay.js +55 -0
  668. package/runtime/telegram-standalone-handler.d.ts +34 -0
  669. package/runtime/telegram-standalone-handler.d.ts.map +1 -0
  670. package/runtime/telegram-standalone-handler.js +195 -0
  671. package/runtime/telegram-standalone-policy.d.ts +2 -0
  672. package/runtime/telegram-standalone-policy.d.ts.map +1 -0
  673. package/runtime/telegram-standalone-policy.js +14 -0
  674. package/scripts/README.md +27 -0
  675. package/scripts/align-electrobun-version.mjs +37 -0
  676. package/scripts/aosp/README.md +66 -0
  677. package/scripts/aosp/avd-test.mjs +403 -0
  678. package/scripts/aosp/boot-validate.mjs +536 -0
  679. package/scripts/aosp/build-aosp.mjs +448 -0
  680. package/scripts/aosp/build-bootanimation.mjs +178 -0
  681. package/scripts/aosp/capture-screens.mjs +325 -0
  682. package/scripts/aosp/compile-libllama.mjs +1333 -0
  683. package/scripts/aosp/compile-shim.mjs +328 -0
  684. package/scripts/aosp/e2e-validate.mjs +225 -0
  685. package/scripts/aosp/lib/load-variant-config.mjs +182 -0
  686. package/scripts/aosp/lint-init-rc.mjs +258 -0
  687. package/scripts/aosp/llama-cpp-patches/README.md +49 -0
  688. package/scripts/aosp/llama-cpp-patches/apply-patches.mjs +198 -0
  689. package/scripts/aosp/llama-cpp-patches/polarquant/0001-Q4_POLAR-register-GGML_TYPE_Q4_POLAR-45-and-block_q4.patch +108 -0
  690. package/scripts/aosp/llama-cpp-patches/polarquant/0002-Q4_POLAR-vendor-PolarQuant-ref-kernels-into-ggml-bas.patch +460 -0
  691. package/scripts/aosp/llama-cpp-patches/polarquant/0003-tests-cover-Q4_POLAR-fix-latent-buffer-overflow.patch +102 -0
  692. package/scripts/aosp/llama-cpp-patches/polarquant/0004-Q4_POLAR-gate-QJL-residual-on-runtime-flag-default-o.patch +97 -0
  693. package/scripts/aosp/llama-cpp-patches/qjl/0001-ggml-add-GGML_TYPE_QJL1_256-GGML_OP_ATTN_SCORE_QJL-e.patch +120 -0
  694. package/scripts/aosp/llama-cpp-patches/qjl/0002-ggml-register-QJL1_256-type-traits-ATTN_SCORE_QJL-op.patch +1392 -0
  695. package/scripts/aosp/llama-cpp-patches/qjl/0003-ggml-set-QJL1_256-blck_size-to-head_dim-128-not-sket.patch +56 -0
  696. package/scripts/aosp/llama-cpp-patches/qjl/0004-tests-add-test-qjl-cache-verifying-type-traits-score.patch +335 -0
  697. package/scripts/aosp/llama-cpp-patches/qjl/0005-ggml-flip-block_qjl1_256-to-signs-then-norm.patch +69 -0
  698. package/scripts/aosp/llama-shim/eliza_llama_shim.c +276 -0
  699. package/scripts/aosp/seccomp-shim/loader-wrap.c +141 -0
  700. package/scripts/aosp/seccomp-shim/sigsys-handler.c +338 -0
  701. package/scripts/aosp/sim.mjs +277 -0
  702. package/scripts/aosp/smoke-cuttlefish.mjs +673 -0
  703. package/scripts/aosp/stage-default-models.mjs +340 -0
  704. package/scripts/aosp/stage-models-dfm.mjs +384 -0
  705. package/scripts/aosp/sync-to-aosp.mjs +134 -0
  706. package/scripts/aosp/validate.mjs +1273 -0
  707. package/scripts/aosp/variant-config-schema.ts +10 -0
  708. package/scripts/audit-live-test-surface.mjs +590 -0
  709. package/scripts/audit-server-test-surface.mjs +163 -0
  710. package/scripts/benchmark-preflight.mjs +170 -0
  711. package/scripts/bin/.gitkeep +0 -0
  712. package/scripts/build-bundled-agent-skills-artifact.mjs +58 -0
  713. package/scripts/build-bundled-orchestrator-artifact.mjs +66 -0
  714. package/scripts/build-capacitor-app.mjs +122 -0
  715. package/scripts/build-electrobun-preload.mjs +117 -0
  716. package/scripts/build-flatpak.mjs +125 -0
  717. package/scripts/build-image.sh +461 -0
  718. package/scripts/build-llama-cpp-dflash.mjs +1866 -0
  719. package/scripts/build-native-plugins.mjs +153 -0
  720. package/scripts/build-patched-electrobun-cli.mjs +424 -0
  721. package/scripts/build-win.mjs +82 -0
  722. package/scripts/bump-elizaos.sh +438 -0
  723. package/scripts/check-i18n.mjs +328 -0
  724. package/scripts/check-secret-hygiene.mjs +344 -0
  725. package/scripts/check-upstream-drift.mjs +102 -0
  726. package/scripts/clean-repo.mjs +187 -0
  727. package/scripts/codesign-mas.mjs +297 -0
  728. package/scripts/container-entrypoint.mjs +101 -0
  729. package/scripts/coordinator-cross-platform-review.mjs +192 -0
  730. package/scripts/copy-package-assets.mjs +31 -0
  731. package/scripts/copy-runtime-node-modules.ts +1782 -0
  732. package/scripts/coverage-policy.d.mts +16 -0
  733. package/scripts/coverage-policy.mjs +38 -0
  734. package/scripts/css-coverage.mjs +241 -0
  735. package/scripts/deploy-image.sh +318 -0
  736. package/scripts/desktop-build.mjs +867 -0
  737. package/scripts/desktop-stack-status.mjs +80 -0
  738. package/scripts/dev-platform.mjs +975 -0
  739. package/scripts/dev-ui.mjs +1178 -0
  740. package/scripts/dev-win.mjs +25 -0
  741. package/scripts/disable-local-eliza-workspace.mjs +420 -0
  742. package/scripts/docker-ci-smoke.sh +500 -0
  743. package/scripts/docker-entrypoint.sh +11 -0
  744. package/scripts/docker-runtime-review.mjs +230 -0
  745. package/scripts/docs-list.js +206 -0
  746. package/scripts/ensure-avatars.mjs +335 -0
  747. package/scripts/ensure-bundled-workspaces.mjs +143 -0
  748. package/scripts/ensure-capacitor-platform.mjs +58 -0
  749. package/scripts/ensure-electrobun-core.mjs +318 -0
  750. package/scripts/ensure-generated-core-proto-js.mjs +125 -0
  751. package/scripts/ensure-shared-i18n-data.mjs +67 -0
  752. package/scripts/ensure-skills.mjs +177 -0
  753. package/scripts/ensure-type-package-aliases.mjs +246 -0
  754. package/scripts/ensure-vision-deps.mjs +196 -0
  755. package/scripts/entry.ts +11 -0
  756. package/scripts/find-collisions.mjs +765 -0
  757. package/scripts/find-duplicate-components.mjs +203 -0
  758. package/scripts/fix-workspace-deps.mjs +328 -0
  759. package/scripts/generate-onboarding-voicelines.mjs +194 -0
  760. package/scripts/generate-plugin-index.js +1055 -0
  761. package/scripts/generate-static-asset-manifest.mjs +15 -0
  762. package/scripts/generated/static-asset-manifest.json +4 -0
  763. package/scripts/i18n-dynamic-keys.json +128 -0
  764. package/scripts/init-submodules.mjs +425 -0
  765. package/scripts/ios-xcframework/README.md +233 -0
  766. package/scripts/ios-xcframework/build-xcframework.mjs +487 -0
  767. package/scripts/kernel-patches/metal-kernels.mjs +656 -0
  768. package/scripts/kernel-patches/vulkan-dispatch-patches/01-vulkan-shaders-gen.patch +41 -0
  769. package/scripts/kernel-patches/vulkan-dispatch-patches/02-ggml-vulkan-pipelines.patch +86 -0
  770. package/scripts/kernel-patches/vulkan-kernels.mjs +281 -0
  771. package/scripts/lib/allocate-loopback-port.mjs +58 -0
  772. package/scripts/lib/api-supervisor.mjs +115 -0
  773. package/scripts/lib/app-dir.mjs +74 -0
  774. package/scripts/lib/asset-cdn.mjs +118 -0
  775. package/scripts/lib/bun-version-guard.mjs +44 -0
  776. package/scripts/lib/capacitor-platform-templates.mjs +306 -0
  777. package/scripts/lib/capacitor-plugin-build-needed.mjs +79 -0
  778. package/scripts/lib/capacitor-plugin-names.mjs +35 -0
  779. package/scripts/lib/desktop-preflight.mjs +122 -0
  780. package/scripts/lib/desktop-stack-status.mjs +151 -0
  781. package/scripts/lib/dev-ui-onchain.mjs +22 -0
  782. package/scripts/lib/dev-ui-vision.mjs +15 -0
  783. package/scripts/lib/kill-process-tree.mjs +87 -0
  784. package/scripts/lib/kill-ui-listen-port.mjs +74 -0
  785. package/scripts/lib/node-path-env.mjs +11 -0
  786. package/scripts/lib/orchestrator-desktop-dev-banner.mjs +285 -0
  787. package/scripts/lib/patch-bun-exports.mjs +1446 -0
  788. package/scripts/lib/read-app-identity.mjs +54 -0
  789. package/scripts/lib/release-check-pack-dry-run.ts +34 -0
  790. package/scripts/lib/repo-root.mjs +77 -0
  791. package/scripts/lib/stage-android-agent.mjs +704 -0
  792. package/scripts/lib/static-asset-manifest.mjs +151 -0
  793. package/scripts/lib/sync-eliza-env-aliases.mjs +37 -0
  794. package/scripts/lib/vite-renderer-dist-stale.mjs +141 -0
  795. package/scripts/lib/workspace-discovery.mjs +108 -0
  796. package/scripts/lifeops-prompt-benchmark.ts +206 -0
  797. package/scripts/link-browser-server.mjs +157 -0
  798. package/scripts/link-docker-local-app-packages.mjs +345 -0
  799. package/scripts/link-external-plugins.mjs +195 -0
  800. package/scripts/mobile-auth-simulator-smoke.mjs +373 -0
  801. package/scripts/normalize-parallax-capture.ts +97 -0
  802. package/scripts/omnivoice-fuse/Makefile +44 -0
  803. package/scripts/omnivoice-fuse/README.md +266 -0
  804. package/scripts/omnivoice-fuse/cmake-graft.mjs +180 -0
  805. package/scripts/omnivoice-fuse/ffi-stub.c +222 -0
  806. package/scripts/omnivoice-fuse/ffi.h +158 -0
  807. package/scripts/omnivoice-fuse/libelizainference_stub.dylib +0 -0
  808. package/scripts/omnivoice-fuse/prepare.mjs +263 -0
  809. package/scripts/omnivoice-fuse/verify-symbols.mjs +138 -0
  810. package/scripts/pack-upstreams.mjs +392 -0
  811. package/scripts/patch-deps.mjs +597 -0
  812. package/scripts/patch-workspace-plugins.mjs +148 -0
  813. package/scripts/playwright-ui-live-stack.ts +667 -0
  814. package/scripts/playwright-ui-smoke-api-stub.mjs +1838 -0
  815. package/scripts/plugin-index-local-additions.json +12 -0
  816. package/scripts/plugin-metadata-overrides.json +165 -0
  817. package/scripts/pre-review-local.mjs +599 -0
  818. package/scripts/prepare-ios-cocoapods.sh +30 -0
  819. package/scripts/prepare-package-dist.mjs +358 -0
  820. package/scripts/process-vrms.mjs +203 -0
  821. package/scripts/prune-cdn-local-assets.mjs +44 -0
  822. package/scripts/publish-local-plugins-next.mjs +122 -0
  823. package/scripts/release-check.ts +1402 -0
  824. package/scripts/relink-workspace-packages-to-dist.mjs +115 -0
  825. package/scripts/replace-workspace-versions.mjs +128 -0
  826. package/scripts/report-coverage-surfaces.mjs +121 -0
  827. package/scripts/restore-workspace-refs.mjs +128 -0
  828. package/scripts/rt.mjs +29 -0
  829. package/scripts/rt.sh +4 -0
  830. package/scripts/run-biome-check.mjs +191 -0
  831. package/scripts/run-coding-agent-e2e.mjs +46 -0
  832. package/scripts/run-desktop-playwright.mjs +35 -0
  833. package/scripts/run-local-plugin-live-smoke.mjs +185 -0
  834. package/scripts/run-mobile-build.mjs +3308 -0
  835. package/scripts/run-node-runtime.mjs +75 -0
  836. package/scripts/run-node-tsx.mjs +62 -0
  837. package/scripts/run-node.mjs +294 -0
  838. package/scripts/run-playwright.mjs +66 -0
  839. package/scripts/run-production-build.mjs +138 -0
  840. package/scripts/run-release-contract-suite.mjs +57 -0
  841. package/scripts/run-repo-setup.mjs +230 -0
  842. package/scripts/run-screenshotter.mjs +140 -0
  843. package/scripts/run-ui-smoke-playwright-suite.mjs +96 -0
  844. package/scripts/run-windows-smoke-launcher.ps1 +35 -0
  845. package/scripts/run-with-env.mjs +60 -0
  846. package/scripts/runtime-package-manifest.ts +107 -0
  847. package/scripts/sandbox-setup.sh +7 -0
  848. package/scripts/sanitize-npm-package-metadata.mjs +165 -0
  849. package/scripts/set-package-version.mjs +13 -0
  850. package/scripts/setup-upstreams.mjs +838 -0
  851. package/scripts/smoke-api-status.mjs +113 -0
  852. package/scripts/smoke-lifeops.mjs +305 -0
  853. package/scripts/startup-integration-script-drift.test.ts +94 -0
  854. package/scripts/sync-desktop-renderer.mjs +308 -0
  855. package/scripts/sync-dod-gap-issues-lib.mjs +214 -0
  856. package/scripts/sync-dod-gap-issues.mjs +218 -0
  857. package/scripts/type-audit.mjs +606 -0
  858. package/scripts/validate-cdn-assets.mjs +307 -0
  859. package/scripts/validate-regression-matrix.mjs +360 -0
  860. package/scripts/workspace-plugin-patches/plugin-anthropic-elizaos-core-api-compat.patch +34 -0
  861. package/scripts/workspace-prepare.mjs +192 -0
  862. package/scripts/worktree-env.sh +41 -0
  863. package/scripts/write-build-info.ts +69 -0
  864. package/scripts/write-homepage-release-data.mjs +393 -0
  865. package/security/agent-vault-id.d.ts +16 -0
  866. package/security/agent-vault-id.d.ts.map +1 -0
  867. package/security/agent-vault-id.js +32 -0
  868. package/security/cloud-secret-store.d.ts +34 -0
  869. package/security/cloud-secret-store.d.ts.map +1 -0
  870. package/security/cloud-secret-store.js +65 -0
  871. package/security/export-guard.d.ts +34 -0
  872. package/security/export-guard.d.ts.map +1 -0
  873. package/security/export-guard.js +127 -0
  874. package/security/hydrate-wallet-keys-from-platform-store.d.ts +13 -0
  875. package/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -0
  876. package/security/hydrate-wallet-keys-from-platform-store.js +116 -0
  877. package/security/platform-secure-store-node.d.ts +13 -0
  878. package/security/platform-secure-store-node.d.ts.map +1 -0
  879. package/security/platform-secure-store-node.js +311 -0
  880. package/security/platform-secure-store.d.ts +47 -0
  881. package/security/platform-secure-store.d.ts.map +1 -0
  882. package/security/platform-secure-store.js +10 -0
  883. package/security/wallet-os-store-actions.d.ts +45 -0
  884. package/security/wallet-os-store-actions.d.ts.map +1 -0
  885. package/security/wallet-os-store-actions.js +125 -0
  886. package/services/account-pool.d.ts +134 -0
  887. package/services/account-pool.d.ts.map +1 -0
  888. package/services/account-pool.js +693 -0
  889. package/services/account-usage.d.ts +75 -0
  890. package/services/account-usage.d.ts.map +1 -0
  891. package/services/account-usage.js +179 -0
  892. package/services/auth-store.d.ts +179 -0
  893. package/services/auth-store.d.ts.map +1 -0
  894. package/services/auth-store.js +404 -0
  895. package/services/cloud-jwks-store.d.ts +62 -0
  896. package/services/cloud-jwks-store.d.ts.map +1 -0
  897. package/services/cloud-jwks-store.js +118 -0
  898. package/services/connector-target-catalog.d.ts +78 -0
  899. package/services/connector-target-catalog.d.ts.map +1 -0
  900. package/services/connector-target-catalog.js +64 -0
  901. package/services/discord-target-source.d.ts +53 -0
  902. package/services/discord-target-source.d.ts.map +1 -0
  903. package/services/discord-target-source.js +116 -0
  904. package/services/github-credentials.d.ts +95 -0
  905. package/services/github-credentials.d.ts.map +1 -0
  906. package/services/github-credentials.js +144 -0
  907. package/services/local-inference/__stress__/cache-stress-helpers.d.ts +76 -0
  908. package/services/local-inference/__stress__/cache-stress-helpers.d.ts.map +1 -0
  909. package/services/local-inference/__stress__/cache-stress-helpers.js +238 -0
  910. package/services/local-inference/active-model.d.ts +180 -0
  911. package/services/local-inference/active-model.d.ts.map +1 -0
  912. package/services/local-inference/active-model.js +362 -0
  913. package/services/local-inference/assignments.d.ts +58 -0
  914. package/services/local-inference/assignments.d.ts.map +1 -0
  915. package/services/local-inference/assignments.js +179 -0
  916. package/services/local-inference/backend.d.ts +200 -0
  917. package/services/local-inference/backend.d.ts.map +1 -0
  918. package/services/local-inference/backend.js +242 -0
  919. package/services/local-inference/bundled-models.d.ts +34 -0
  920. package/services/local-inference/bundled-models.d.ts.map +1 -0
  921. package/services/local-inference/bundled-models.js +104 -0
  922. package/services/local-inference/cache-bridge.d.ts +184 -0
  923. package/services/local-inference/cache-bridge.d.ts.map +1 -0
  924. package/services/local-inference/cache-bridge.js +333 -0
  925. package/services/local-inference/catalog.d.ts +57 -0
  926. package/services/local-inference/catalog.d.ts.map +1 -0
  927. package/services/local-inference/catalog.js +262 -0
  928. package/services/local-inference/conversation-registry.d.ts +122 -0
  929. package/services/local-inference/conversation-registry.d.ts.map +1 -0
  930. package/services/local-inference/conversation-registry.js +182 -0
  931. package/services/local-inference/device-bridge.d.ts +139 -0
  932. package/services/local-inference/device-bridge.d.ts.map +1 -0
  933. package/services/local-inference/device-bridge.js +774 -0
  934. package/services/local-inference/dflash-doctor.d.ts +27 -0
  935. package/services/local-inference/dflash-doctor.d.ts.map +1 -0
  936. package/services/local-inference/dflash-doctor.js +149 -0
  937. package/services/local-inference/dflash-server.d.ts +248 -0
  938. package/services/local-inference/dflash-server.d.ts.map +1 -0
  939. package/services/local-inference/dflash-server.js +1076 -0
  940. package/services/local-inference/downloader.d.ts +48 -0
  941. package/services/local-inference/downloader.d.ts.map +1 -0
  942. package/services/local-inference/downloader.js +688 -0
  943. package/services/local-inference/engine.d.ts +282 -0
  944. package/services/local-inference/engine.d.ts.map +1 -0
  945. package/services/local-inference/engine.js +743 -0
  946. package/services/local-inference/external-scanner.d.ts +17 -0
  947. package/services/local-inference/external-scanner.d.ts.map +1 -0
  948. package/services/local-inference/external-scanner.js +261 -0
  949. package/services/local-inference/handler-registry.d.ts +72 -0
  950. package/services/local-inference/handler-registry.d.ts.map +1 -0
  951. package/services/local-inference/handler-registry.js +159 -0
  952. package/services/local-inference/hardware.d.ts +26 -0
  953. package/services/local-inference/hardware.d.ts.map +1 -0
  954. package/services/local-inference/hardware.js +139 -0
  955. package/services/local-inference/hf-search.d.ts +19 -0
  956. package/services/local-inference/hf-search.d.ts.map +1 -0
  957. package/services/local-inference/hf-search.js +169 -0
  958. package/services/local-inference/index.d.ts +10 -0
  959. package/services/local-inference/index.d.ts.map +1 -0
  960. package/services/local-inference/index.js +7 -0
  961. package/services/local-inference/llama-server-metrics.d.ts +108 -0
  962. package/services/local-inference/llama-server-metrics.d.ts.map +1 -0
  963. package/services/local-inference/llama-server-metrics.js +175 -0
  964. package/services/local-inference/manifest/index.d.ts +4 -0
  965. package/services/local-inference/manifest/index.d.ts.map +1 -0
  966. package/services/local-inference/manifest/index.js +5 -0
  967. package/services/local-inference/manifest/schema.d.ts +419 -0
  968. package/services/local-inference/manifest/schema.d.ts.map +1 -0
  969. package/services/local-inference/manifest/schema.js +227 -0
  970. package/services/local-inference/manifest/types.d.ts +23 -0
  971. package/services/local-inference/manifest/types.d.ts.map +1 -0
  972. package/services/local-inference/manifest/types.js +5 -0
  973. package/services/local-inference/manifest/validator.d.ts +43 -0
  974. package/services/local-inference/manifest/validator.d.ts.map +1 -0
  975. package/services/local-inference/manifest/validator.js +180 -0
  976. package/services/local-inference/paths.d.ts +8 -0
  977. package/services/local-inference/paths.d.ts.map +1 -0
  978. package/services/local-inference/paths.js +7 -0
  979. package/services/local-inference/providers.d.ts +61 -0
  980. package/services/local-inference/providers.d.ts.map +1 -0
  981. package/services/local-inference/providers.js +334 -0
  982. package/services/local-inference/ram-budget.d.ts +57 -0
  983. package/services/local-inference/ram-budget.d.ts.map +1 -0
  984. package/services/local-inference/ram-budget.js +107 -0
  985. package/services/local-inference/readiness.d.ts +9 -0
  986. package/services/local-inference/readiness.d.ts.map +1 -0
  987. package/services/local-inference/readiness.js +153 -0
  988. package/services/local-inference/recommendation.d.ts +62 -0
  989. package/services/local-inference/recommendation.d.ts.map +1 -0
  990. package/services/local-inference/recommendation.js +309 -0
  991. package/services/local-inference/registry.d.ts +35 -0
  992. package/services/local-inference/registry.d.ts.map +1 -0
  993. package/services/local-inference/registry.js +117 -0
  994. package/services/local-inference/router-handler.d.ts +51 -0
  995. package/services/local-inference/router-handler.d.ts.map +1 -0
  996. package/services/local-inference/router-handler.js +165 -0
  997. package/services/local-inference/routing-policy.d.ts +55 -0
  998. package/services/local-inference/routing-policy.d.ts.map +1 -0
  999. package/services/local-inference/routing-policy.js +195 -0
  1000. package/services/local-inference/routing-preferences.d.ts +8 -0
  1001. package/services/local-inference/routing-preferences.d.ts.map +1 -0
  1002. package/services/local-inference/routing-preferences.js +7 -0
  1003. package/services/local-inference/service.d.ts +88 -0
  1004. package/services/local-inference/service.d.ts.map +1 -0
  1005. package/services/local-inference/service.js +210 -0
  1006. package/services/local-inference/session-pool.d.ts +72 -0
  1007. package/services/local-inference/session-pool.d.ts.map +1 -0
  1008. package/services/local-inference/session-pool.js +125 -0
  1009. package/services/local-inference/types.d.ts +309 -0
  1010. package/services/local-inference/types.d.ts.map +1 -0
  1011. package/services/local-inference/types.js +23 -0
  1012. package/services/local-inference/verify.d.ts +8 -0
  1013. package/services/local-inference/verify.d.ts.map +1 -0
  1014. package/services/local-inference/verify.js +7 -0
  1015. package/services/local-inference/voice/barge-in.d.ts +15 -0
  1016. package/services/local-inference/voice/barge-in.d.ts.map +1 -0
  1017. package/services/local-inference/voice/barge-in.js +20 -0
  1018. package/services/local-inference/voice/engine-bridge.d.ts +256 -0
  1019. package/services/local-inference/voice/engine-bridge.d.ts.map +1 -0
  1020. package/services/local-inference/voice/engine-bridge.js +398 -0
  1021. package/services/local-inference/voice/ffi-bindings.d.ts +114 -0
  1022. package/services/local-inference/voice/ffi-bindings.d.ts.map +1 -0
  1023. package/services/local-inference/voice/ffi-bindings.js +281 -0
  1024. package/services/local-inference/voice/index.d.ts +51 -0
  1025. package/services/local-inference/voice/index.d.ts.map +1 -0
  1026. package/services/local-inference/voice/index.js +50 -0
  1027. package/services/local-inference/voice/lifecycle.d.ts +135 -0
  1028. package/services/local-inference/voice/lifecycle.d.ts.map +1 -0
  1029. package/services/local-inference/voice/lifecycle.js +189 -0
  1030. package/services/local-inference/voice/phoneme-tokenizer.d.ts +58 -0
  1031. package/services/local-inference/voice/phoneme-tokenizer.d.ts.map +1 -0
  1032. package/services/local-inference/voice/phoneme-tokenizer.js +53 -0
  1033. package/services/local-inference/voice/phrase-cache.d.ts +24 -0
  1034. package/services/local-inference/voice/phrase-cache.d.ts.map +1 -0
  1035. package/services/local-inference/voice/phrase-cache.js +32 -0
  1036. package/services/local-inference/voice/phrase-chunker.d.ts +20 -0
  1037. package/services/local-inference/voice/phrase-chunker.d.ts.map +1 -0
  1038. package/services/local-inference/voice/phrase-chunker.js +85 -0
  1039. package/services/local-inference/voice/ring-buffer.d.ts +40 -0
  1040. package/services/local-inference/voice/ring-buffer.d.ts.map +1 -0
  1041. package/services/local-inference/voice/ring-buffer.js +85 -0
  1042. package/services/local-inference/voice/rollback-queue.d.ts +24 -0
  1043. package/services/local-inference/voice/rollback-queue.d.ts.map +1 -0
  1044. package/services/local-inference/voice/rollback-queue.js +49 -0
  1045. package/services/local-inference/voice/scheduler.d.ts +47 -0
  1046. package/services/local-inference/voice/scheduler.d.ts.map +1 -0
  1047. package/services/local-inference/voice/scheduler.js +123 -0
  1048. package/services/local-inference/voice/shared-resources.d.ts +119 -0
  1049. package/services/local-inference/voice/shared-resources.d.ts.map +1 -0
  1050. package/services/local-inference/voice/shared-resources.js +83 -0
  1051. package/services/local-inference/voice/speaker-preset-cache.d.ts +28 -0
  1052. package/services/local-inference/voice/speaker-preset-cache.d.ts.map +1 -0
  1053. package/services/local-inference/voice/speaker-preset-cache.js +44 -0
  1054. package/services/local-inference/voice/types.d.ts +80 -0
  1055. package/services/local-inference/voice/types.d.ts.map +1 -0
  1056. package/services/local-inference/voice/voice-preset-format.d.ts +56 -0
  1057. package/services/local-inference/voice/voice-preset-format.d.ts.map +1 -0
  1058. package/services/local-inference/voice/voice-preset-format.js +184 -0
  1059. package/services/persistence.d.ts +48 -0
  1060. package/services/persistence.d.ts.map +1 -0
  1061. package/services/persistence.js +128 -0
  1062. package/services/plugin-installer.d.ts +22 -0
  1063. package/services/plugin-installer.d.ts.map +1 -0
  1064. package/services/plugin-installer.js +41 -0
  1065. package/services/secrets-manager-installer.d.ts +140 -0
  1066. package/services/secrets-manager-installer.d.ts.map +1 -0
  1067. package/services/secrets-manager-installer.js +374 -0
  1068. package/services/steward-credentials.d.ts +37 -0
  1069. package/services/steward-credentials.d.ts.map +1 -0
  1070. package/services/steward-credentials.js +93 -0
  1071. package/services/steward-sidecar/health-check.d.ts +9 -0
  1072. package/services/steward-sidecar/health-check.d.ts.map +1 -0
  1073. package/services/steward-sidecar/health-check.js +34 -0
  1074. package/services/steward-sidecar/helpers.d.ts +21 -0
  1075. package/services/steward-sidecar/helpers.d.ts.map +1 -0
  1076. package/services/steward-sidecar/helpers.js +71 -0
  1077. package/services/steward-sidecar/process-management.d.ts +9 -0
  1078. package/services/steward-sidecar/process-management.d.ts.map +1 -0
  1079. package/services/steward-sidecar/process-management.js +53 -0
  1080. package/services/steward-sidecar/types.d.ts +60 -0
  1081. package/services/steward-sidecar/types.d.ts.map +1 -0
  1082. package/services/steward-sidecar/types.js +17 -0
  1083. package/services/steward-sidecar/wallet-setup.d.ts +9 -0
  1084. package/services/steward-sidecar/wallet-setup.d.ts.map +1 -0
  1085. package/services/steward-sidecar/wallet-setup.js +114 -0
  1086. package/services/steward-sidecar.d.ts +70 -0
  1087. package/services/steward-sidecar.d.ts.map +1 -0
  1088. package/services/steward-sidecar.js +385 -0
  1089. package/services/tool-call-cache/index.d.ts +13 -0
  1090. package/services/tool-call-cache/index.d.ts.map +1 -0
  1091. package/services/tool-call-cache/index.js +11 -0
  1092. package/services/trigger-event-bridge.d.ts +52 -0
  1093. package/services/trigger-event-bridge.d.ts.map +1 -0
  1094. package/services/trigger-event-bridge.js +217 -0
  1095. package/services/update-notifier.d.ts +6 -0
  1096. package/services/update-notifier.d.ts.map +1 -0
  1097. package/services/update-notifier.js +33 -0
  1098. package/services/vault-bootstrap.d.ts +31 -0
  1099. package/services/vault-bootstrap.d.ts.map +1 -0
  1100. package/services/vault-bootstrap.js +209 -0
  1101. package/services/vault-mirror.d.ts +44 -0
  1102. package/services/vault-mirror.d.ts.map +1 -0
  1103. package/services/vault-mirror.js +80 -0
  1104. package/styles/electrobun-mac-window-drag.css +66 -0
  1105. package/test/helpers/__tests__/live-agent-test.smoke.test.ts +105 -0
  1106. package/test/helpers/action-assertions.ts +364 -0
  1107. package/test/helpers/action-spy.ts +354 -0
  1108. package/test/helpers/browser-launch.ts +103 -0
  1109. package/test/helpers/browser-mocks.ts +275 -0
  1110. package/test/helpers/conditional-tests.ts +42 -0
  1111. package/test/helpers/conversation-harness.ts +334 -0
  1112. package/test/helpers/http.ts +150 -0
  1113. package/test/helpers/i18n.ts +5 -0
  1114. package/test/helpers/isolated-config.ts +34 -0
  1115. package/test/helpers/live-agent-test.ts +660 -0
  1116. package/test/helpers/live-child-env.ts +72 -0
  1117. package/test/helpers/live-provider.test.ts +124 -0
  1118. package/test/helpers/live-provider.ts +362 -0
  1119. package/test/helpers/live-runtime-server.ts +88 -0
  1120. package/test/helpers/loopback.ts +33 -0
  1121. package/test/helpers/pglite-runtime.ts +173 -0
  1122. package/test/helpers/react-test.ts +40 -0
  1123. package/test/helpers/real-connector.ts +250 -0
  1124. package/test/helpers/real-runtime.ts +543 -0
  1125. package/test/helpers/skip-without.ts +53 -0
  1126. package/test/helpers/stochastic-test.ts +186 -0
  1127. package/test/helpers/test-utils.ts +94 -0
  1128. package/test/helpers/trajectory-assertions.ts +168 -0
  1129. package/test/helpers/trajectory-harness.test.ts +101 -0
  1130. package/test/helpers/trajectory-harness.ts +988 -0
  1131. package/test/scripts/managed-test-command.mjs +632 -0
  1132. package/test/scripts/task-agent-live-smoke.ts +1335 -0
  1133. package/test/scripts/test-parallel.mjs +237 -0
  1134. package/test/scripts/test-root-unit.mjs +169 -0
  1135. package/test/scripts/test-runner.mjs +78 -0
  1136. package/test/scripts/validate-all-features.sh +541 -0
  1137. package/test-support/test-helpers.d.ts +111 -0
  1138. package/test-support/test-helpers.d.ts.map +1 -0
  1139. package/test-support/test-helpers.js +410 -0
  1140. package/ui-compat.d.ts +3 -0
  1141. package/ui-compat.d.ts.map +1 -0
  1142. package/ui-compat.js +3 -0
  1143. package/utils/eliza-root.d.ts +9 -0
  1144. package/utils/eliza-root.d.ts.map +1 -0
  1145. package/utils/eliza-root.js +101 -0
  1146. package/utils/globals.d.ts +7 -0
  1147. package/utils/globals.d.ts.map +1 -0
  1148. package/utils/globals.js +47 -0
  1149. package/App.d.ts +0 -5
  1150. package/App.d.ts.map +0 -1
  1151. package/App.js +0 -220
  1152. package/LICENSE +0 -21
  1153. package/actions/character.d.ts +0 -39
  1154. package/actions/character.d.ts.map +0 -1
  1155. package/actions/character.js +0 -247
  1156. package/actions/chat-helpers.d.ts +0 -47
  1157. package/actions/chat-helpers.d.ts.map +0 -1
  1158. package/actions/chat-helpers.js +0 -79
  1159. package/actions/cloud.d.ts +0 -17
  1160. package/actions/cloud.d.ts.map +0 -1
  1161. package/actions/cloud.js +0 -43
  1162. package/actions/index.d.ts +0 -12
  1163. package/actions/index.d.ts.map +0 -1
  1164. package/actions/index.js +0 -11
  1165. package/actions/lifecycle.d.ts +0 -43
  1166. package/actions/lifecycle.d.ts.map +0 -1
  1167. package/actions/lifecycle.js +0 -118
  1168. package/actions/onboarding.d.ts +0 -13
  1169. package/actions/onboarding.d.ts.map +0 -1
  1170. package/actions/onboarding.js +0 -26
  1171. package/actions/triggers.d.ts +0 -23
  1172. package/actions/triggers.d.ts.map +0 -1
  1173. package/actions/triggers.js +0 -148
  1174. package/api/client.d.ts +0 -2742
  1175. package/api/client.d.ts.map +0 -1
  1176. package/api/client.js +0 -2520
  1177. package/api/index.d.ts +0 -2
  1178. package/api/index.d.ts.map +0 -1
  1179. package/api/index.js +0 -1
  1180. package/autonomy/index.d.ts +0 -48
  1181. package/autonomy/index.d.ts.map +0 -1
  1182. package/autonomy/index.js +0 -330
  1183. package/bridge/capacitor-bridge.d.ts +0 -153
  1184. package/bridge/capacitor-bridge.d.ts.map +0 -1
  1185. package/bridge/capacitor-bridge.js +0 -193
  1186. package/bridge/electrobun-rpc.d.ts +0 -28
  1187. package/bridge/electrobun-rpc.d.ts.map +0 -1
  1188. package/bridge/electrobun-rpc.js +0 -35
  1189. package/bridge/electrobun-runtime.d.ts +0 -3
  1190. package/bridge/electrobun-runtime.d.ts.map +0 -1
  1191. package/bridge/electrobun-runtime.js +0 -17
  1192. package/bridge/index.d.ts +0 -6
  1193. package/bridge/index.d.ts.map +0 -1
  1194. package/bridge/index.js +0 -5
  1195. package/bridge/native-plugins.d.ts +0 -82
  1196. package/bridge/native-plugins.d.ts.map +0 -1
  1197. package/bridge/native-plugins.js +0 -39
  1198. package/bridge/plugin-bridge.d.ts +0 -116
  1199. package/bridge/plugin-bridge.d.ts.map +0 -1
  1200. package/bridge/plugin-bridge.js +0 -203
  1201. package/bridge/storage-bridge.d.ts +0 -39
  1202. package/bridge/storage-bridge.d.ts.map +0 -1
  1203. package/bridge/storage-bridge.js +0 -135
  1204. package/chat/index.d.ts +0 -57
  1205. package/chat/index.d.ts.map +0 -1
  1206. package/chat/index.js +0 -160
  1207. package/coding/index.d.ts +0 -25
  1208. package/coding/index.d.ts.map +0 -1
  1209. package/coding/index.js +0 -25
  1210. package/components/AdvancedPageView.d.ts +0 -17
  1211. package/components/AdvancedPageView.d.ts.map +0 -1
  1212. package/components/AdvancedPageView.js +0 -146
  1213. package/components/AgentActivityBox.d.ts +0 -7
  1214. package/components/AgentActivityBox.d.ts.map +0 -1
  1215. package/components/AgentActivityBox.js +0 -25
  1216. package/components/ApiKeyConfig.d.ts +0 -26
  1217. package/components/ApiKeyConfig.d.ts.map +0 -1
  1218. package/components/ApiKeyConfig.js +0 -119
  1219. package/components/AppsPageView.d.ts +0 -7
  1220. package/components/AppsPageView.d.ts.map +0 -1
  1221. package/components/AppsPageView.js +0 -31
  1222. package/components/AppsView.d.ts +0 -8
  1223. package/components/AppsView.d.ts.map +0 -1
  1224. package/components/AppsView.js +0 -149
  1225. package/components/AvatarLoader.d.ts +0 -13
  1226. package/components/AvatarLoader.d.ts.map +0 -1
  1227. package/components/AvatarLoader.js +0 -53
  1228. package/components/AvatarSelector.d.ts +0 -23
  1229. package/components/AvatarSelector.d.ts.map +0 -1
  1230. package/components/AvatarSelector.js +0 -105
  1231. package/components/BscTradePanel.d.ts +0 -22
  1232. package/components/BscTradePanel.d.ts.map +0 -1
  1233. package/components/BscTradePanel.js +0 -221
  1234. package/components/BugReportModal.d.ts +0 -2
  1235. package/components/BugReportModal.d.ts.map +0 -1
  1236. package/components/BugReportModal.js +0 -219
  1237. package/components/CharacterRoster.d.ts +0 -31
  1238. package/components/CharacterRoster.d.ts.map +0 -1
  1239. package/components/CharacterRoster.js +0 -41
  1240. package/components/CharacterView.d.ts +0 -8
  1241. package/components/CharacterView.d.ts.map +0 -1
  1242. package/components/CharacterView.js +0 -685
  1243. package/components/ChatAvatar.d.ts +0 -8
  1244. package/components/ChatAvatar.d.ts.map +0 -1
  1245. package/components/ChatAvatar.js +0 -89
  1246. package/components/ChatComposer.d.ts +0 -37
  1247. package/components/ChatComposer.d.ts.map +0 -1
  1248. package/components/ChatComposer.js +0 -136
  1249. package/components/ChatMessage.d.ts +0 -24
  1250. package/components/ChatMessage.d.ts.map +0 -1
  1251. package/components/ChatMessage.js +0 -187
  1252. package/components/ChatModalView.d.ts +0 -10
  1253. package/components/ChatModalView.d.ts.map +0 -1
  1254. package/components/ChatModalView.js +0 -57
  1255. package/components/ChatView.d.ts +0 -14
  1256. package/components/ChatView.d.ts.map +0 -1
  1257. package/components/ChatView.js +0 -526
  1258. package/components/CloudOnboarding.d.ts +0 -7
  1259. package/components/CloudOnboarding.d.ts.map +0 -1
  1260. package/components/CloudOnboarding.js +0 -22
  1261. package/components/CloudSourceControls.d.ts +0 -13
  1262. package/components/CloudSourceControls.d.ts.map +0 -1
  1263. package/components/CloudSourceControls.js +0 -16
  1264. package/components/CodingAgentSettingsSection.d.ts +0 -8
  1265. package/components/CodingAgentSettingsSection.d.ts.map +0 -1
  1266. package/components/CodingAgentSettingsSection.js +0 -292
  1267. package/components/CommandPalette.d.ts +0 -2
  1268. package/components/CommandPalette.d.ts.map +0 -1
  1269. package/components/CommandPalette.js +0 -181
  1270. package/components/CompanionSceneHost.d.ts +0 -14
  1271. package/components/CompanionSceneHost.d.ts.map +0 -1
  1272. package/components/CompanionSceneHost.js +0 -362
  1273. package/components/CompanionShell.d.ts +0 -17
  1274. package/components/CompanionShell.d.ts.map +0 -1
  1275. package/components/CompanionShell.js +0 -15
  1276. package/components/CompanionView.d.ts +0 -2
  1277. package/components/CompanionView.d.ts.map +0 -1
  1278. package/components/CompanionView.js +0 -22
  1279. package/components/ConfigPageView.d.ts +0 -11
  1280. package/components/ConfigPageView.d.ts.map +0 -1
  1281. package/components/ConfigPageView.js +0 -311
  1282. package/components/ConfigSaveFooter.d.ts +0 -8
  1283. package/components/ConfigSaveFooter.d.ts.map +0 -1
  1284. package/components/ConfigSaveFooter.js +0 -10
  1285. package/components/ConfirmModal.d.ts +0 -61
  1286. package/components/ConfirmModal.d.ts.map +0 -1
  1287. package/components/ConfirmModal.js +0 -164
  1288. package/components/ConnectionFailedBanner.d.ts +0 -6
  1289. package/components/ConnectionFailedBanner.d.ts.map +0 -1
  1290. package/components/ConnectionFailedBanner.js +0 -22
  1291. package/components/ConnectorsPageView.d.ts +0 -7
  1292. package/components/ConnectorsPageView.d.ts.map +0 -1
  1293. package/components/ConnectorsPageView.js +0 -8
  1294. package/components/ConversationsSidebar.d.ts +0 -9
  1295. package/components/ConversationsSidebar.d.ts.map +0 -1
  1296. package/components/ConversationsSidebar.js +0 -116
  1297. package/components/CustomActionEditor.d.ts +0 -10
  1298. package/components/CustomActionEditor.d.ts.map +0 -1
  1299. package/components/CustomActionEditor.js +0 -596
  1300. package/components/CustomActionsPanel.d.ts +0 -9
  1301. package/components/CustomActionsPanel.d.ts.map +0 -1
  1302. package/components/CustomActionsPanel.js +0 -107
  1303. package/components/CustomActionsView.d.ts +0 -2
  1304. package/components/CustomActionsView.d.ts.map +0 -1
  1305. package/components/CustomActionsView.js +0 -134
  1306. package/components/DatabasePageView.d.ts +0 -5
  1307. package/components/DatabasePageView.d.ts.map +0 -1
  1308. package/components/DatabasePageView.js +0 -28
  1309. package/components/DatabaseView.d.ts +0 -9
  1310. package/components/DatabaseView.d.ts.map +0 -1
  1311. package/components/DatabaseView.js +0 -311
  1312. package/components/ElizaCloudDashboard.d.ts +0 -2
  1313. package/components/ElizaCloudDashboard.d.ts.map +0 -1
  1314. package/components/ElizaCloudDashboard.js +0 -657
  1315. package/components/EmotePicker.d.ts +0 -2
  1316. package/components/EmotePicker.d.ts.map +0 -1
  1317. package/components/EmotePicker.js +0 -343
  1318. package/components/ErrorBoundary.d.ts +0 -22
  1319. package/components/ErrorBoundary.d.ts.map +0 -1
  1320. package/components/ErrorBoundary.js +0 -31
  1321. package/components/FineTuningView.d.ts +0 -2
  1322. package/components/FineTuningView.d.ts.map +0 -1
  1323. package/components/FineTuningView.js +0 -433
  1324. package/components/FlaminaGuide.d.ts +0 -10
  1325. package/components/FlaminaGuide.d.ts.map +0 -1
  1326. package/components/FlaminaGuide.js +0 -64
  1327. package/components/GameView.d.ts +0 -11
  1328. package/components/GameView.d.ts.map +0 -1
  1329. package/components/GameView.js +0 -294
  1330. package/components/GameViewOverlay.d.ts +0 -8
  1331. package/components/GameViewOverlay.d.ts.map +0 -1
  1332. package/components/GameViewOverlay.js +0 -70
  1333. package/components/GlobalEmoteOverlay.d.ts +0 -2
  1334. package/components/GlobalEmoteOverlay.d.ts.map +0 -1
  1335. package/components/GlobalEmoteOverlay.js +0 -112
  1336. package/components/Header.d.ts +0 -9
  1337. package/components/Header.d.ts.map +0 -1
  1338. package/components/Header.js +0 -123
  1339. package/components/HeartbeatsView.d.ts +0 -2
  1340. package/components/HeartbeatsView.d.ts.map +0 -1
  1341. package/components/HeartbeatsView.js +0 -378
  1342. package/components/InventoryView.d.ts +0 -10
  1343. package/components/InventoryView.d.ts.map +0 -1
  1344. package/components/InventoryView.js +0 -176
  1345. package/components/KnowledgeView.d.ts +0 -20
  1346. package/components/KnowledgeView.d.ts.map +0 -1
  1347. package/components/KnowledgeView.js +0 -483
  1348. package/components/LanguageDropdown.d.ts +0 -30
  1349. package/components/LanguageDropdown.d.ts.map +0 -1
  1350. package/components/LanguageDropdown.js +0 -99
  1351. package/components/LifoMonitorPanel.d.ts +0 -21
  1352. package/components/LifoMonitorPanel.d.ts.map +0 -1
  1353. package/components/LifoMonitorPanel.js +0 -24
  1354. package/components/LifoSandboxView.d.ts +0 -5
  1355. package/components/LifoSandboxView.d.ts.map +0 -1
  1356. package/components/LifoSandboxView.js +0 -333
  1357. package/components/LoadingScreen.d.ts +0 -13
  1358. package/components/LoadingScreen.d.ts.map +0 -1
  1359. package/components/LoadingScreen.js +0 -70
  1360. package/components/LogsPageView.d.ts +0 -2
  1361. package/components/LogsPageView.d.ts.map +0 -1
  1362. package/components/LogsPageView.js +0 -7
  1363. package/components/LogsView.d.ts +0 -5
  1364. package/components/LogsView.d.ts.map +0 -1
  1365. package/components/LogsView.js +0 -71
  1366. package/components/MediaGalleryView.d.ts +0 -9
  1367. package/components/MediaGalleryView.d.ts.map +0 -1
  1368. package/components/MediaGalleryView.js +0 -236
  1369. package/components/MediaSettingsSection.d.ts +0 -11
  1370. package/components/MediaSettingsSection.d.ts.map +0 -1
  1371. package/components/MediaSettingsSection.js +0 -329
  1372. package/components/MessageContent.d.ts +0 -51
  1373. package/components/MessageContent.d.ts.map +0 -1
  1374. package/components/MessageContent.js +0 -553
  1375. package/components/OnboardingWizard.d.ts +0 -2
  1376. package/components/OnboardingWizard.d.ts.map +0 -1
  1377. package/components/OnboardingWizard.js +0 -86
  1378. package/components/PairingView.d.ts +0 -5
  1379. package/components/PairingView.d.ts.map +0 -1
  1380. package/components/PairingView.js +0 -29
  1381. package/components/PermissionsSection.d.ts +0 -20
  1382. package/components/PermissionsSection.d.ts.map +0 -1
  1383. package/components/PermissionsSection.js +0 -573
  1384. package/components/PluginsPageView.d.ts +0 -5
  1385. package/components/PluginsPageView.d.ts.map +0 -1
  1386. package/components/PluginsPageView.js +0 -8
  1387. package/components/PluginsView.d.ts +0 -21
  1388. package/components/PluginsView.d.ts.map +0 -1
  1389. package/components/PluginsView.js +0 -1534
  1390. package/components/ProviderSwitcher.d.ts +0 -42
  1391. package/components/ProviderSwitcher.d.ts.map +0 -1
  1392. package/components/ProviderSwitcher.js +0 -493
  1393. package/components/RestartBanner.d.ts +0 -2
  1394. package/components/RestartBanner.d.ts.map +0 -1
  1395. package/components/RestartBanner.js +0 -36
  1396. package/components/RuntimeView.d.ts +0 -10
  1397. package/components/RuntimeView.d.ts.map +0 -1
  1398. package/components/RuntimeView.js +0 -165
  1399. package/components/SaveCommandModal.d.ts +0 -12
  1400. package/components/SaveCommandModal.d.ts.map +0 -1
  1401. package/components/SaveCommandModal.js +0 -84
  1402. package/components/SecretsView.d.ts +0 -9
  1403. package/components/SecretsView.d.ts.map +0 -1
  1404. package/components/SecretsView.js +0 -249
  1405. package/components/SettingsView.d.ts +0 -9
  1406. package/components/SettingsView.d.ts.map +0 -1
  1407. package/components/SettingsView.js +0 -230
  1408. package/components/ShellOverlays.d.ts +0 -8
  1409. package/components/ShellOverlays.d.ts.map +0 -1
  1410. package/components/ShellOverlays.js +0 -10
  1411. package/components/ShortcutsOverlay.d.ts +0 -2
  1412. package/components/ShortcutsOverlay.d.ts.map +0 -1
  1413. package/components/ShortcutsOverlay.js +0 -79
  1414. package/components/SkillsView.d.ts +0 -11
  1415. package/components/SkillsView.d.ts.map +0 -1
  1416. package/components/SkillsView.js +0 -358
  1417. package/components/StartupFailureView.d.ts +0 -8
  1418. package/components/StartupFailureView.d.ts.map +0 -1
  1419. package/components/StartupFailureView.js +0 -16
  1420. package/components/StreamView.d.ts +0 -16
  1421. package/components/StreamView.d.ts.map +0 -1
  1422. package/components/StreamView.js +0 -300
  1423. package/components/StripeEmbeddedCheckout.d.ts +0 -24
  1424. package/components/StripeEmbeddedCheckout.d.ts.map +0 -1
  1425. package/components/StripeEmbeddedCheckout.js +0 -101
  1426. package/components/SubscriptionStatus.d.ts +0 -23
  1427. package/components/SubscriptionStatus.d.ts.map +0 -1
  1428. package/components/SubscriptionStatus.js +0 -301
  1429. package/components/SystemWarningBanner.d.ts +0 -6
  1430. package/components/SystemWarningBanner.d.ts.map +0 -1
  1431. package/components/SystemWarningBanner.js +0 -46
  1432. package/components/ThemeToggle.d.ts +0 -21
  1433. package/components/ThemeToggle.d.ts.map +0 -1
  1434. package/components/ThemeToggle.js +0 -24
  1435. package/components/TrajectoriesView.d.ts +0 -12
  1436. package/components/TrajectoriesView.d.ts.map +0 -1
  1437. package/components/TrajectoriesView.js +0 -183
  1438. package/components/TrajectoryDetailView.d.ts +0 -13
  1439. package/components/TrajectoryDetailView.d.ts.map +0 -1
  1440. package/components/TrajectoryDetailView.js +0 -112
  1441. package/components/TriggersView.d.ts +0 -2
  1442. package/components/TriggersView.d.ts.map +0 -1
  1443. package/components/TriggersView.js +0 -1
  1444. package/components/VectorBrowserView.d.ts +0 -10
  1445. package/components/VectorBrowserView.d.ts.map +0 -1
  1446. package/components/VectorBrowserView.js +0 -1000
  1447. package/components/VoiceConfigView.d.ts +0 -11
  1448. package/components/VoiceConfigView.d.ts.map +0 -1
  1449. package/components/VoiceConfigView.js +0 -331
  1450. package/components/VrmStage.d.ts +0 -28
  1451. package/components/VrmStage.d.ts.map +0 -1
  1452. package/components/VrmStage.js +0 -178
  1453. package/components/WhatsAppQrOverlay.d.ts +0 -8
  1454. package/components/WhatsAppQrOverlay.d.ts.map +0 -1
  1455. package/components/WhatsAppQrOverlay.js +0 -63
  1456. package/components/apps/AppDetailPane.d.ts +0 -15
  1457. package/components/apps/AppDetailPane.d.ts.map +0 -1
  1458. package/components/apps/AppDetailPane.js +0 -13
  1459. package/components/apps/AppsCatalogGrid.d.ts +0 -20
  1460. package/components/apps/AppsCatalogGrid.d.ts.map +0 -1
  1461. package/components/apps/AppsCatalogGrid.js +0 -18
  1462. package/components/apps/extensions/registry.d.ts +0 -4
  1463. package/components/apps/extensions/registry.d.ts.map +0 -1
  1464. package/components/apps/extensions/registry.js +0 -7
  1465. package/components/apps/extensions/types.d.ts +0 -7
  1466. package/components/apps/extensions/types.d.ts.map +0 -1
  1467. package/components/apps/helpers.d.ts +0 -7
  1468. package/components/apps/helpers.d.ts.map +0 -1
  1469. package/components/apps/helpers.js +0 -44
  1470. package/components/avatar/VrmAnimationLoader.d.ts +0 -30
  1471. package/components/avatar/VrmAnimationLoader.d.ts.map +0 -1
  1472. package/components/avatar/VrmAnimationLoader.js +0 -99
  1473. package/components/avatar/VrmBlinkController.d.ts +0 -37
  1474. package/components/avatar/VrmBlinkController.d.ts.map +0 -1
  1475. package/components/avatar/VrmBlinkController.js +0 -98
  1476. package/components/avatar/VrmCameraManager.d.ts +0 -57
  1477. package/components/avatar/VrmCameraManager.d.ts.map +0 -1
  1478. package/components/avatar/VrmCameraManager.js +0 -277
  1479. package/components/avatar/VrmEngine.d.ts +0 -246
  1480. package/components/avatar/VrmEngine.d.ts.map +0 -1
  1481. package/components/avatar/VrmEngine.js +0 -2087
  1482. package/components/avatar/VrmFootShadow.d.ts +0 -18
  1483. package/components/avatar/VrmFootShadow.d.ts.map +0 -1
  1484. package/components/avatar/VrmFootShadow.js +0 -83
  1485. package/components/avatar/VrmViewer.d.ts +0 -60
  1486. package/components/avatar/VrmViewer.d.ts.map +0 -1
  1487. package/components/avatar/VrmViewer.js +0 -396
  1488. package/components/avatar/mixamoVRMRigMap.d.ts +0 -3
  1489. package/components/avatar/mixamoVRMRigMap.d.ts.map +0 -1
  1490. package/components/avatar/mixamoVRMRigMap.js +0 -56
  1491. package/components/avatar/retargetMixamoFbxToVrm.d.ts +0 -9
  1492. package/components/avatar/retargetMixamoFbxToVrm.d.ts.map +0 -1
  1493. package/components/avatar/retargetMixamoFbxToVrm.js +0 -88
  1494. package/components/avatar/retargetMixamoGltfToVrm.d.ts +0 -11
  1495. package/components/avatar/retargetMixamoGltfToVrm.d.ts.map +0 -1
  1496. package/components/avatar/retargetMixamoGltfToVrm.js +0 -80
  1497. package/components/chainConfig.d.ts +0 -89
  1498. package/components/chainConfig.d.ts.map +0 -1
  1499. package/components/chainConfig.js +0 -287
  1500. package/components/companion/CompanionHeader.d.ts +0 -15
  1501. package/components/companion/CompanionHeader.d.ts.map +0 -1
  1502. package/components/companion/CompanionHeader.js +0 -7
  1503. package/components/companion/CompanionSceneHost.d.ts +0 -2
  1504. package/components/companion/CompanionSceneHost.d.ts.map +0 -1
  1505. package/components/companion/CompanionSceneHost.js +0 -1
  1506. package/components/companion/VrmStage.d.ts +0 -3
  1507. package/components/companion/VrmStage.d.ts.map +0 -1
  1508. package/components/companion/VrmStage.js +0 -1
  1509. package/components/companion/index.d.ts +0 -18
  1510. package/components/companion/index.d.ts.map +0 -1
  1511. package/components/companion/index.js +0 -17
  1512. package/components/companion/walletUtils.d.ts +0 -95
  1513. package/components/companion/walletUtils.d.ts.map +0 -1
  1514. package/components/companion/walletUtils.js +0 -167
  1515. package/components/companion-shell-styles.d.ts +0 -38
  1516. package/components/companion-shell-styles.d.ts.map +0 -1
  1517. package/components/companion-shell-styles.js +0 -248
  1518. package/components/confirm-delete-control.d.ts +0 -16
  1519. package/components/confirm-delete-control.d.ts.map +0 -1
  1520. package/components/confirm-delete-control.js +0 -12
  1521. package/components/conversations/ConversationListItem.d.ts +0 -31
  1522. package/components/conversations/ConversationListItem.d.ts.map +0 -1
  1523. package/components/conversations/ConversationListItem.js +0 -52
  1524. package/components/conversations/conversation-utils.d.ts +0 -9
  1525. package/components/conversations/conversation-utils.d.ts.map +0 -1
  1526. package/components/conversations/conversation-utils.js +0 -138
  1527. package/components/format.d.ts +0 -54
  1528. package/components/format.d.ts.map +0 -1
  1529. package/components/format.js +0 -82
  1530. package/components/index.d.ts +0 -96
  1531. package/components/index.d.ts.map +0 -1
  1532. package/components/index.js +0 -95
  1533. package/components/inventory/CopyableAddress.d.ts +0 -8
  1534. package/components/inventory/CopyableAddress.d.ts.map +0 -1
  1535. package/components/inventory/CopyableAddress.js +0 -18
  1536. package/components/inventory/InventoryToolbar.d.ts +0 -25
  1537. package/components/inventory/InventoryToolbar.d.ts.map +0 -1
  1538. package/components/inventory/InventoryToolbar.js +0 -28
  1539. package/components/inventory/NftGrid.d.ts +0 -13
  1540. package/components/inventory/NftGrid.d.ts.map +0 -1
  1541. package/components/inventory/NftGrid.js +0 -29
  1542. package/components/inventory/TokenLogo.d.ts +0 -12
  1543. package/components/inventory/TokenLogo.d.ts.map +0 -1
  1544. package/components/inventory/TokenLogo.js +0 -33
  1545. package/components/inventory/TokensTable.d.ts +0 -24
  1546. package/components/inventory/TokensTable.d.ts.map +0 -1
  1547. package/components/inventory/TokensTable.js +0 -26
  1548. package/components/inventory/constants.d.ts +0 -52
  1549. package/components/inventory/constants.d.ts.map +0 -1
  1550. package/components/inventory/constants.js +0 -121
  1551. package/components/inventory/index.d.ts +0 -9
  1552. package/components/inventory/index.d.ts.map +0 -1
  1553. package/components/inventory/index.js +0 -8
  1554. package/components/inventory/media-url.d.ts +0 -6
  1555. package/components/inventory/media-url.d.ts.map +0 -1
  1556. package/components/inventory/media-url.js +0 -28
  1557. package/components/inventory/useInventoryData.d.ts +0 -53
  1558. package/components/inventory/useInventoryData.d.ts.map +0 -1
  1559. package/components/inventory/useInventoryData.js +0 -332
  1560. package/components/knowledge-upload-image.d.ts +0 -27
  1561. package/components/knowledge-upload-image.d.ts.map +0 -1
  1562. package/components/knowledge-upload-image.js +0 -146
  1563. package/components/labels.d.ts +0 -6
  1564. package/components/labels.d.ts.map +0 -1
  1565. package/components/labels.js +0 -40
  1566. package/components/onboarding/ActivateStep.d.ts +0 -2
  1567. package/components/onboarding/ActivateStep.d.ts.map +0 -1
  1568. package/components/onboarding/ActivateStep.js +0 -10
  1569. package/components/onboarding/CloudLoginStep.d.ts +0 -2
  1570. package/components/onboarding/CloudLoginStep.d.ts.map +0 -1
  1571. package/components/onboarding/CloudLoginStep.js +0 -20
  1572. package/components/onboarding/ConnectionStep.d.ts +0 -2
  1573. package/components/onboarding/ConnectionStep.d.ts.map +0 -1
  1574. package/components/onboarding/ConnectionStep.js +0 -609
  1575. package/components/onboarding/IdentityStep.d.ts +0 -2
  1576. package/components/onboarding/IdentityStep.d.ts.map +0 -1
  1577. package/components/onboarding/IdentityStep.js +0 -102
  1578. package/components/onboarding/OnboardingPanel.d.ts +0 -9
  1579. package/components/onboarding/OnboardingPanel.d.ts.map +0 -1
  1580. package/components/onboarding/OnboardingPanel.js +0 -24
  1581. package/components/onboarding/OnboardingStepNav.d.ts +0 -2
  1582. package/components/onboarding/OnboardingStepNav.d.ts.map +0 -1
  1583. package/components/onboarding/OnboardingStepNav.js +0 -24
  1584. package/components/onboarding/PermissionsStep.d.ts +0 -2
  1585. package/components/onboarding/PermissionsStep.d.ts.map +0 -1
  1586. package/components/onboarding/PermissionsStep.js +0 -7
  1587. package/components/onboarding/RpcStep.d.ts +0 -2
  1588. package/components/onboarding/RpcStep.d.ts.map +0 -1
  1589. package/components/onboarding/RpcStep.js +0 -125
  1590. package/components/onboarding/SaveKeysStep.d.ts +0 -2
  1591. package/components/onboarding/SaveKeysStep.d.ts.map +0 -1
  1592. package/components/onboarding/SaveKeysStep.js +0 -44
  1593. package/components/onboarding/WelcomeStep.d.ts +0 -2
  1594. package/components/onboarding/WelcomeStep.d.ts.map +0 -1
  1595. package/components/onboarding/WelcomeStep.js +0 -30
  1596. package/components/permissions/PermissionIcon.d.ts +0 -4
  1597. package/components/permissions/PermissionIcon.d.ts.map +0 -1
  1598. package/components/permissions/PermissionIcon.js +0 -12
  1599. package/components/permissions/StreamingPermissions.d.ts +0 -20
  1600. package/components/permissions/StreamingPermissions.d.ts.map +0 -1
  1601. package/components/permissions/StreamingPermissions.js +0 -178
  1602. package/components/plugins/showcase-data.d.ts +0 -7
  1603. package/components/plugins/showcase-data.d.ts.map +0 -1
  1604. package/components/plugins/showcase-data.js +0 -464
  1605. package/components/shared/ShellHeaderControls.d.ts +0 -27
  1606. package/components/shared/ShellHeaderControls.d.ts.map +0 -1
  1607. package/components/shared/ShellHeaderControls.js +0 -55
  1608. package/components/shared-companion-scene-context.d.ts +0 -3
  1609. package/components/shared-companion-scene-context.d.ts.map +0 -1
  1610. package/components/shared-companion-scene-context.js +0 -13
  1611. package/components/skeletons.d.ts +0 -17
  1612. package/components/skeletons.d.ts.map +0 -1
  1613. package/components/skeletons.js +0 -22
  1614. package/components/stream/ActivityFeed.d.ts +0 -5
  1615. package/components/stream/ActivityFeed.d.ts.map +0 -1
  1616. package/components/stream/ActivityFeed.js +0 -57
  1617. package/components/stream/AvatarPip.d.ts +0 -5
  1618. package/components/stream/AvatarPip.d.ts.map +0 -1
  1619. package/components/stream/AvatarPip.js +0 -6
  1620. package/components/stream/ChatContent.d.ts +0 -6
  1621. package/components/stream/ChatContent.d.ts.map +0 -1
  1622. package/components/stream/ChatContent.js +0 -69
  1623. package/components/stream/ChatTicker.d.ts +0 -5
  1624. package/components/stream/ChatTicker.d.ts.map +0 -1
  1625. package/components/stream/ChatTicker.js +0 -34
  1626. package/components/stream/IdleContent.d.ts +0 -5
  1627. package/components/stream/IdleContent.d.ts.map +0 -1
  1628. package/components/stream/IdleContent.js +0 -17
  1629. package/components/stream/StatusBar.d.ts +0 -36
  1630. package/components/stream/StatusBar.d.ts.map +0 -1
  1631. package/components/stream/StatusBar.js +0 -140
  1632. package/components/stream/StreamSettings.d.ts +0 -33
  1633. package/components/stream/StreamSettings.d.ts.map +0 -1
  1634. package/components/stream/StreamSettings.js +0 -99
  1635. package/components/stream/StreamTerminal.d.ts +0 -2
  1636. package/components/stream/StreamTerminal.d.ts.map +0 -1
  1637. package/components/stream/StreamTerminal.js +0 -52
  1638. package/components/stream/StreamVoiceConfig.d.ts +0 -10
  1639. package/components/stream/StreamVoiceConfig.d.ts.map +0 -1
  1640. package/components/stream/StreamVoiceConfig.js +0 -88
  1641. package/components/stream/helpers.d.ts +0 -32
  1642. package/components/stream/helpers.d.ts.map +0 -1
  1643. package/components/stream/helpers.js +0 -110
  1644. package/components/stream/overlays/OverlayLayer.d.ts +0 -20
  1645. package/components/stream/overlays/OverlayLayer.d.ts.map +0 -1
  1646. package/components/stream/overlays/OverlayLayer.js +0 -24
  1647. package/components/stream/overlays/built-in/ActionTickerWidget.d.ts +0 -8
  1648. package/components/stream/overlays/built-in/ActionTickerWidget.d.ts.map +0 -1
  1649. package/components/stream/overlays/built-in/ActionTickerWidget.js +0 -44
  1650. package/components/stream/overlays/built-in/AlertPopupWidget.d.ts +0 -7
  1651. package/components/stream/overlays/built-in/AlertPopupWidget.d.ts.map +0 -1
  1652. package/components/stream/overlays/built-in/AlertPopupWidget.js +0 -62
  1653. package/components/stream/overlays/built-in/BrandingWidget.d.ts +0 -7
  1654. package/components/stream/overlays/built-in/BrandingWidget.d.ts.map +0 -1
  1655. package/components/stream/overlays/built-in/BrandingWidget.js +0 -36
  1656. package/components/stream/overlays/built-in/CustomHtmlWidget.d.ts +0 -26
  1657. package/components/stream/overlays/built-in/CustomHtmlWidget.d.ts.map +0 -1
  1658. package/components/stream/overlays/built-in/CustomHtmlWidget.js +0 -78
  1659. package/components/stream/overlays/built-in/PeonGlassWidget.d.ts +0 -11
  1660. package/components/stream/overlays/built-in/PeonGlassWidget.d.ts.map +0 -1
  1661. package/components/stream/overlays/built-in/PeonGlassWidget.js +0 -188
  1662. package/components/stream/overlays/built-in/PeonHudWidget.d.ts +0 -10
  1663. package/components/stream/overlays/built-in/PeonHudWidget.d.ts.map +0 -1
  1664. package/components/stream/overlays/built-in/PeonHudWidget.js +0 -168
  1665. package/components/stream/overlays/built-in/PeonSakuraWidget.d.ts +0 -11
  1666. package/components/stream/overlays/built-in/PeonSakuraWidget.d.ts.map +0 -1
  1667. package/components/stream/overlays/built-in/PeonSakuraWidget.js +0 -213
  1668. package/components/stream/overlays/built-in/ThoughtBubbleWidget.d.ts +0 -8
  1669. package/components/stream/overlays/built-in/ThoughtBubbleWidget.d.ts.map +0 -1
  1670. package/components/stream/overlays/built-in/ThoughtBubbleWidget.js +0 -59
  1671. package/components/stream/overlays/built-in/ViewerCountWidget.d.ts +0 -7
  1672. package/components/stream/overlays/built-in/ViewerCountWidget.d.ts.map +0 -1
  1673. package/components/stream/overlays/built-in/ViewerCountWidget.js +0 -34
  1674. package/components/stream/overlays/built-in/index.d.ts +0 -13
  1675. package/components/stream/overlays/built-in/index.d.ts.map +0 -1
  1676. package/components/stream/overlays/built-in/index.js +0 -12
  1677. package/components/stream/overlays/registry.d.ts +0 -11
  1678. package/components/stream/overlays/registry.d.ts.map +0 -1
  1679. package/components/stream/overlays/registry.js +0 -16
  1680. package/components/stream/overlays/types.d.ts +0 -67
  1681. package/components/stream/overlays/types.d.ts.map +0 -1
  1682. package/components/stream/overlays/types.js +0 -7
  1683. package/components/stream/overlays/useOverlayLayout.d.ts +0 -27
  1684. package/components/stream/overlays/useOverlayLayout.d.ts.map +0 -1
  1685. package/components/stream/overlays/useOverlayLayout.js +0 -162
  1686. package/components/trajectory-format.d.ts +0 -6
  1687. package/components/trajectory-format.d.ts.map +0 -1
  1688. package/components/trajectory-format.js +0 -43
  1689. package/components/ui-badges.d.ts +0 -23
  1690. package/components/ui-badges.d.ts.map +0 -1
  1691. package/components/ui-badges.js +0 -38
  1692. package/components/ui-switch.d.ts +0 -14
  1693. package/components/ui-switch.d.ts.map +0 -1
  1694. package/components/ui-switch.js +0 -15
  1695. package/components/vector-browser-three.d.ts +0 -4
  1696. package/components/vector-browser-three.d.ts.map +0 -1
  1697. package/components/vector-browser-three.js +0 -21
  1698. package/config/branding.d.ts +0 -49
  1699. package/config/branding.d.ts.map +0 -1
  1700. package/config/branding.js +0 -16
  1701. package/config/config-catalog.d.ts +0 -376
  1702. package/config/config-catalog.d.ts.map +0 -1
  1703. package/config/config-catalog.js +0 -724
  1704. package/config/config-field.d.ts +0 -68
  1705. package/config/config-field.d.ts.map +0 -1
  1706. package/config/config-field.js +0 -840
  1707. package/config/config-renderer.d.ts +0 -176
  1708. package/config/config-renderer.d.ts.map +0 -1
  1709. package/config/config-renderer.js +0 -405
  1710. package/config/index.d.ts +0 -6
  1711. package/config/index.d.ts.map +0 -1
  1712. package/config/index.js +0 -5
  1713. package/config/ui-renderer.d.ts +0 -26
  1714. package/config/ui-renderer.d.ts.map +0 -1
  1715. package/config/ui-renderer.js +0 -815
  1716. package/config/ui-spec.d.ts +0 -164
  1717. package/config/ui-spec.d.ts.map +0 -1
  1718. package/config/ui-spec.js +0 -13
  1719. package/events/index.d.ts +0 -48
  1720. package/events/index.d.ts.map +0 -1
  1721. package/events/index.js +0 -45
  1722. package/hooks/index.d.ts +0 -15
  1723. package/hooks/index.d.ts.map +0 -1
  1724. package/hooks/index.js +0 -14
  1725. package/hooks/useBugReport.d.ts +0 -14
  1726. package/hooks/useBugReport.d.ts.map +0 -1
  1727. package/hooks/useBugReport.js +0 -18
  1728. package/hooks/useCanvasWindow.d.ts +0 -38
  1729. package/hooks/useCanvasWindow.d.ts.map +0 -1
  1730. package/hooks/useCanvasWindow.js +0 -273
  1731. package/hooks/useChatAvatarVoice.d.ts +0 -10
  1732. package/hooks/useChatAvatarVoice.d.ts.map +0 -1
  1733. package/hooks/useChatAvatarVoice.js +0 -71
  1734. package/hooks/useClickOutside.d.ts +0 -6
  1735. package/hooks/useClickOutside.d.ts.map +0 -1
  1736. package/hooks/useClickOutside.js +0 -25
  1737. package/hooks/useContextMenu.d.ts +0 -17
  1738. package/hooks/useContextMenu.d.ts.map +0 -1
  1739. package/hooks/useContextMenu.js +0 -100
  1740. package/hooks/useKeyboardShortcuts.d.ts +0 -17
  1741. package/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  1742. package/hooks/useKeyboardShortcuts.js +0 -67
  1743. package/hooks/useLifoSync.d.ts +0 -18
  1744. package/hooks/useLifoSync.d.ts.map +0 -1
  1745. package/hooks/useLifoSync.js +0 -113
  1746. package/hooks/useMemoryMonitor.d.ts +0 -87
  1747. package/hooks/useMemoryMonitor.d.ts.map +0 -1
  1748. package/hooks/useMemoryMonitor.js +0 -209
  1749. package/hooks/useRenderGuard.d.ts +0 -17
  1750. package/hooks/useRenderGuard.d.ts.map +0 -1
  1751. package/hooks/useRenderGuard.js +0 -36
  1752. package/hooks/useRetakeCapture.d.ts +0 -12
  1753. package/hooks/useRetakeCapture.d.ts.map +0 -1
  1754. package/hooks/useRetakeCapture.js +0 -60
  1755. package/hooks/useStreamPopoutNavigation.d.ts +0 -3
  1756. package/hooks/useStreamPopoutNavigation.d.ts.map +0 -1
  1757. package/hooks/useStreamPopoutNavigation.js +0 -17
  1758. package/hooks/useTimeout.d.ts +0 -11
  1759. package/hooks/useTimeout.d.ts.map +0 -1
  1760. package/hooks/useTimeout.js +0 -32
  1761. package/hooks/useVoiceChat.d.ts +0 -94
  1762. package/hooks/useVoiceChat.d.ts.map +0 -1
  1763. package/hooks/useVoiceChat.js +0 -1077
  1764. package/hooks/useWhatsAppPairing.d.ts +0 -11
  1765. package/hooks/useWhatsAppPairing.d.ts.map +0 -1
  1766. package/hooks/useWhatsAppPairing.js +0 -95
  1767. package/i18n/index.d.ts +0 -7
  1768. package/i18n/index.d.ts.map +0 -1
  1769. package/i18n/index.js +0 -53
  1770. package/i18n/locales/en.json +0 -1268
  1771. package/i18n/locales/es.json +0 -1236
  1772. package/i18n/locales/ko.json +0 -1236
  1773. package/i18n/locales/pt.json +0 -1236
  1774. package/i18n/locales/zh-CN.json +0 -1236
  1775. package/i18n/messages.d.ts +0 -6
  1776. package/i18n/messages.d.ts.map +0 -1
  1777. package/i18n/messages.js +0 -14
  1778. package/navigation/index.d.ts +0 -27
  1779. package/navigation/index.d.ts.map +0 -1
  1780. package/navigation/index.js +0 -232
  1781. package/onboarding-config.d.ts +0 -25
  1782. package/onboarding-config.d.ts.map +0 -1
  1783. package/onboarding-config.js +0 -76
  1784. package/platform/browser-launch.d.ts +0 -2
  1785. package/platform/browser-launch.d.ts.map +0 -1
  1786. package/platform/browser-launch.js +0 -109
  1787. package/platform/index.d.ts +0 -14
  1788. package/platform/index.d.ts.map +0 -1
  1789. package/platform/index.js +0 -24
  1790. package/platform/init.d.ts +0 -40
  1791. package/platform/init.d.ts.map +0 -1
  1792. package/platform/init.js +0 -160
  1793. package/platform/lifo.d.ts +0 -51
  1794. package/platform/lifo.d.ts.map +0 -1
  1795. package/platform/lifo.js +0 -138
  1796. package/providers/index.d.ts +0 -19
  1797. package/providers/index.d.ts.map +0 -1
  1798. package/providers/index.js +0 -80
  1799. package/shell-params.d.ts +0 -12
  1800. package/shell-params.d.ts.map +0 -1
  1801. package/shell-params.js +0 -19
  1802. package/state/AppContext.d.ts +0 -12
  1803. package/state/AppContext.d.ts.map +0 -1
  1804. package/state/AppContext.js +0 -5102
  1805. package/state/index.d.ts +0 -7
  1806. package/state/index.d.ts.map +0 -1
  1807. package/state/index.js +0 -6
  1808. package/state/internal.d.ts +0 -7
  1809. package/state/internal.d.ts.map +0 -1
  1810. package/state/internal.js +0 -6
  1811. package/state/onboarding-resume.d.ts +0 -11
  1812. package/state/onboarding-resume.d.ts.map +0 -1
  1813. package/state/onboarding-resume.js +0 -187
  1814. package/state/parsers.d.ts +0 -26
  1815. package/state/parsers.d.ts.map +0 -1
  1816. package/state/parsers.js +0 -255
  1817. package/state/persistence.d.ts +0 -59
  1818. package/state/persistence.d.ts.map +0 -1
  1819. package/state/persistence.js +0 -328
  1820. package/state/shell-routing.d.ts +0 -12
  1821. package/state/shell-routing.d.ts.map +0 -1
  1822. package/state/shell-routing.js +0 -26
  1823. package/state/types.d.ts +0 -426
  1824. package/state/types.d.ts.map +0 -1
  1825. package/state/types.js +0 -89
  1826. package/state/ui-preferences.d.ts +0 -3
  1827. package/state/ui-preferences.d.ts.map +0 -1
  1828. package/state/ui-preferences.js +0 -1
  1829. package/state/useApp.d.ts +0 -4
  1830. package/state/useApp.d.ts.map +0 -1
  1831. package/state/useApp.js +0 -22
  1832. package/state/vrm.d.ts +0 -30
  1833. package/state/vrm.d.ts.map +0 -1
  1834. package/state/vrm.js +0 -82
  1835. package/styles/anime.css +0 -6364
  1836. package/styles/base.css +0 -255
  1837. package/styles/onboarding-game.css +0 -1095
  1838. package/styles/styles.css +0 -2087
  1839. package/styles/xterm.css +0 -241
  1840. package/types/index.d.ts +0 -657
  1841. package/types/index.d.ts.map +0 -1
  1842. package/types/index.js +0 -1
  1843. package/utils/asset-url.d.ts +0 -26
  1844. package/utils/asset-url.d.ts.map +0 -1
  1845. package/utils/asset-url.js +0 -99
  1846. package/utils/assistant-text.d.ts +0 -2
  1847. package/utils/assistant-text.d.ts.map +0 -1
  1848. package/utils/assistant-text.js +0 -161
  1849. package/utils/clipboard.d.ts +0 -2
  1850. package/utils/clipboard.d.ts.map +0 -1
  1851. package/utils/clipboard.js +0 -38
  1852. package/utils/desktop-dialogs.d.ts +0 -19
  1853. package/utils/desktop-dialogs.d.ts.map +0 -1
  1854. package/utils/desktop-dialogs.js +0 -50
  1855. package/utils/eliza-globals.d.ts +0 -11
  1856. package/utils/eliza-globals.d.ts.map +0 -1
  1857. package/utils/eliza-globals.js +0 -33
  1858. package/utils/index.d.ts +0 -8
  1859. package/utils/index.d.ts.map +0 -1
  1860. package/utils/index.js +0 -7
  1861. package/utils/number-parsing.d.ts +0 -44
  1862. package/utils/number-parsing.d.ts.map +0 -1
  1863. package/utils/number-parsing.js +0 -56
  1864. package/utils/openExternalUrl.d.ts +0 -2
  1865. package/utils/openExternalUrl.d.ts.map +0 -1
  1866. package/utils/openExternalUrl.js +0 -17
  1867. package/utils/spoken-text.d.ts +0 -2
  1868. package/utils/spoken-text.d.ts.map +0 -1
  1869. package/utils/spoken-text.js +0 -56
  1870. package/utils/streaming-text.d.ts +0 -3
  1871. package/utils/streaming-text.d.ts.map +0 -1
  1872. package/utils/streaming-text.js +0 -87
  1873. package/voice/index.d.ts +0 -2
  1874. package/voice/index.d.ts.map +0 -1
  1875. package/voice/index.js +0 -1
  1876. package/voice/types.d.ts +0 -25
  1877. package/voice/types.d.ts.map +0 -1
  1878. package/voice/types.js +0 -166
  1879. package/wallet-rpc.d.ts +0 -8
  1880. package/wallet-rpc.d.ts.map +0 -1
  1881. package/wallet-rpc.js +0 -131
  1882. /package/{components/apps/extensions → services/local-inference/voice}/types.js +0 -0
@@ -1,2087 +0,0 @@
1
- import { resolveAppAssetUrl } from "@elizaos/app-core/utils";
2
- import { MToonMaterialLoaderPlugin, VRMLoaderPlugin, VRMUtils, } from "@pixiv/three-vrm";
3
- import * as THREE from "three";
4
- import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
5
- import { MeshoptDecoder } from "three/examples/jsm/libs/meshopt_decoder.module.js";
6
- import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader.js";
7
- import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
8
- import { loadEmoteClip, loadIdleClip, } from "./VrmAnimationLoader";
9
- import { VrmBlinkController } from "./VrmBlinkController";
10
- import { VrmCameraManager, } from "./VrmCameraManager";
11
- const DEFAULT_CAMERA_ANIMATION = {
12
- enabled: false,
13
- swayAmplitude: 0.06,
14
- bobAmplitude: 0.03,
15
- rotationAmplitude: 0.01,
16
- speed: 0.8,
17
- };
18
- const CAMERA_PROFILE_TRANSITION_DURATION_SECONDS = 0.8;
19
- const AVATAR_SWITCH_CAMERA_TRANSITION_DURATION_SECONDS = 3;
20
- const COMPANION_WORLD_SCALE = 2.5;
21
- const COMPANION_DARK_WORLD_FLOOR_OFFSET_Y = -0.95;
22
- const COMPANION_LIGHT_WORLD_FLOOR_OFFSET_Y = -0.35;
23
- const COMPANION_WORLD_REVEAL_DURATION = 5.4;
24
- const COMPANION_WORLD_REVEAL_EDGE = 0.28;
25
- const COMPANION_WORLD_REVEAL_EASE_EXPONENT = 2;
26
- const COMPANION_WORLD_REVEAL_START_OFFSET = 0.7;
27
- const TELEPORT_DISSOLVE_START_Y = -1.2;
28
- const TELEPORT_DISSOLVE_END_Y = 1.0;
29
- const TELEPORT_SPARKLE_PARTICLE_COUNT = 28;
30
- const TELEPORT_SPARKLE_RING_RADIUS = 0.52;
31
- const TELEPORT_SPARKLE_MIN_SIZE = 0.055;
32
- const TELEPORT_SPARKLE_MAX_SIZE = 0.13;
33
- const COMPANION_DOF_APERTURE_SIZE = 0.028;
34
- const COMPANION_DOF_NEAR_ZOOM_APERTURE_FACTOR = 0.4;
35
- const COMPANION_ZOOM_NEAR_FACTOR = 0.25;
36
- const COMPANION_ZOOM_MIN_RADIUS = 1.2;
37
- const SPARK_CLIP_XY = 1.08;
38
- const SPARK_MAX_STD_DEV = 2.35;
39
- const SPARK_MAX_STD_DEV_NEAR = 1.9;
40
- const SPARK_MIN_ALPHA = 0.0016;
41
- const SPARK_MIN_ALPHA_NEAR = 0.0024;
42
- const SPARK_SORT_DISTANCE = 0.035;
43
- const SPARK_SORT_DISTANCE_NEAR = 0.05;
44
- const SPARK_MAX_PIXEL_RADIUS = 96;
45
- const SPARK_MAX_PIXEL_RADIUS_NEAR = 28;
46
- const MAX_RENDERER_PIXEL_RATIO = 2;
47
- const AVATAR_RENDERER_OVERRIDE_KEY = "eliza.avatarRenderer";
48
- const KNOWN_VRM_WEBGPU_WARNING = 'TSL: "transformedNormalView" is deprecated. Use "normalView" instead.';
49
- let knownVrmWebGpuWarningFilterRefs = 0;
50
- let releaseKnownVrmWebGpuWarningFilterGlobal = null;
51
- let sharedDracoLoader = null;
52
- let teleportSparkleTexture = null;
53
- const DRACO_DECODER_PATH = resolveAppAssetUrl("vrm-decoders/draco/");
54
- function getRendererPixelRatio(sparkOptimized = false) {
55
- if (typeof window === "undefined")
56
- return 1;
57
- if (sparkOptimized)
58
- return 1;
59
- return Math.min(Math.max(window.devicePixelRatio || 1, 1), MAX_RENDERER_PIXEL_RATIO);
60
- }
61
- function isElectrobunAvatarRuntime() {
62
- if (typeof window === "undefined")
63
- return false;
64
- const runtimeWindow = window;
65
- return (typeof runtimeWindow.__electrobunWindowId === "number" ||
66
- typeof runtimeWindow.__electrobunWebviewId === "number");
67
- }
68
- function getPreferredAvatarRendererBackend() {
69
- if (typeof window === "undefined")
70
- return "webgl";
71
- const override = (() => {
72
- try {
73
- return window.localStorage.getItem(AVATAR_RENDERER_OVERRIDE_KEY);
74
- }
75
- catch {
76
- return null;
77
- }
78
- })();
79
- const normalizedOverride = override?.trim().toLowerCase();
80
- if (normalizedOverride === "webgpu" || normalizedOverride === "webgl") {
81
- return normalizedOverride;
82
- }
83
- return isElectrobunAvatarRuntime() ? "webgpu" : "webgl";
84
- }
85
- function installKnownVrmWebGpuWarningFilter() {
86
- knownVrmWebGpuWarningFilterRefs += 1;
87
- if (!releaseKnownVrmWebGpuWarningFilterGlobal) {
88
- const originalWarn = console.warn.bind(console);
89
- console.warn = (...args) => {
90
- if (typeof args[0] === "string" &&
91
- args[0].includes(KNOWN_VRM_WEBGPU_WARNING)) {
92
- return;
93
- }
94
- originalWarn(...args);
95
- };
96
- releaseKnownVrmWebGpuWarningFilterGlobal = () => {
97
- knownVrmWebGpuWarningFilterRefs = Math.max(0, knownVrmWebGpuWarningFilterRefs - 1);
98
- if (knownVrmWebGpuWarningFilterRefs === 0) {
99
- console.warn = originalWarn;
100
- releaseKnownVrmWebGpuWarningFilterGlobal = null;
101
- }
102
- };
103
- }
104
- return () => {
105
- releaseKnownVrmWebGpuWarningFilterGlobal?.();
106
- };
107
- }
108
- function getSharedDracoLoader() {
109
- if (!sharedDracoLoader) {
110
- sharedDracoLoader = new DRACOLoader();
111
- sharedDracoLoader.setDecoderConfig({ type: "wasm" });
112
- sharedDracoLoader.setDecoderPath(DRACO_DECODER_PATH);
113
- sharedDracoLoader.preload();
114
- }
115
- return sharedDracoLoader;
116
- }
117
- function configureVrmGltfLoader(loader) {
118
- loader.setMeshoptDecoder(MeshoptDecoder);
119
- loader.setDRACOLoader(getSharedDracoLoader());
120
- }
121
- function getTeleportSparkleTexture() {
122
- if (teleportSparkleTexture)
123
- return teleportSparkleTexture;
124
- const canvas = document.createElement("canvas");
125
- canvas.width = 128;
126
- canvas.height = 128;
127
- const context = canvas.getContext("2d");
128
- if (!context) {
129
- teleportSparkleTexture = new THREE.CanvasTexture(canvas);
130
- return teleportSparkleTexture;
131
- }
132
- const gradient = context.createRadialGradient(64, 64, 6, 64, 64, 64);
133
- gradient.addColorStop(0.0, "rgba(255,255,255,1)");
134
- gradient.addColorStop(0.2, "rgba(190,245,255,0.95)");
135
- gradient.addColorStop(0.55, "rgba(112,214,255,0.48)");
136
- gradient.addColorStop(1.0, "rgba(112,214,255,0)");
137
- context.fillStyle = gradient;
138
- context.fillRect(0, 0, 128, 128);
139
- teleportSparkleTexture = new THREE.CanvasTexture(canvas);
140
- teleportSparkleTexture.needsUpdate = true;
141
- return teleportSparkleTexture;
142
- }
143
- function quantileSorted(values, percentile) {
144
- if (values.length === 0)
145
- return 0;
146
- const index = Math.min(values.length - 1, Math.max(0, Math.floor((values.length - 1) * percentile)));
147
- return values[index] ?? 0;
148
- }
149
- function getRobustPackedSplatAnchor(splatSource) {
150
- const maxSamples = 4096;
151
- const xSamples = [];
152
- const ySamples = [];
153
- const zSamples = [];
154
- const splatCount = splatSource.numSplats ?? maxSamples;
155
- const sampleStep = splatCount > maxSamples
156
- ? Math.max(1, Math.floor(splatCount / maxSamples))
157
- : 1;
158
- splatSource.forEachSplat((index, center) => {
159
- if (sampleStep > 1 && index % sampleStep !== 0)
160
- return;
161
- xSamples.push(center.x);
162
- ySamples.push(center.y);
163
- zSamples.push(center.z);
164
- });
165
- if (xSamples.length === 0) {
166
- return new THREE.Vector3(0, 0, 0);
167
- }
168
- xSamples.sort((a, b) => a - b);
169
- ySamples.sort((a, b) => a - b);
170
- zSamples.sort((a, b) => a - b);
171
- return new THREE.Vector3(quantileSorted(xSamples, 0.5), quantileSorted(ySamples, 0.05), quantileSorted(zSamples, 0.5));
172
- }
173
- function getRobustSplatAnchor(splat) {
174
- return getRobustPackedSplatAnchor({
175
- numSplats: splat.packedSplats?.numSplats,
176
- forEachSplat: splat.forEachSplat.bind(splat),
177
- });
178
- }
179
- function getRobustPackedSplatRadialExtent(splatSource, anchor) {
180
- const maxSamples = 4096;
181
- const radialSamples = [];
182
- const splatCount = splatSource.numSplats ?? maxSamples;
183
- const sampleStep = splatCount > maxSamples
184
- ? Math.max(1, Math.floor(splatCount / maxSamples))
185
- : 1;
186
- splatSource.forEachSplat((index, center) => {
187
- if (sampleStep > 1 && index % sampleStep !== 0)
188
- return;
189
- radialSamples.push(Math.hypot(center.x - anchor.x, center.z - anchor.z));
190
- });
191
- if (radialSamples.length === 0) {
192
- return 1;
193
- }
194
- radialSamples.sort((a, b) => a - b);
195
- return Math.max(1, quantileSorted(radialSamples, 0.985));
196
- }
197
- function getRobustSplatRadialExtent(splat, anchor) {
198
- return getRobustPackedSplatRadialExtent({
199
- numSplats: splat.packedSplats?.numSplats,
200
- forEachSplat: splat.forEachSplat.bind(splat),
201
- }, anchor);
202
- }
203
- function getCompanionWorldFloorOffsetY(url) {
204
- const normalizedUrl = url.toLowerCase();
205
- return normalizedUrl.includes("night") ||
206
- normalizedUrl.includes("dark") ||
207
- normalizedUrl.includes("lunarpunk")
208
- ? COMPANION_DARK_WORLD_FLOOR_OFFSET_Y
209
- : COMPANION_LIGHT_WORLD_FLOOR_OFFSET_Y;
210
- }
211
- function isGzipBuffer(buffer) {
212
- if (buffer.byteLength < 2)
213
- return false;
214
- const bytes = new Uint8Array(buffer, 0, 2);
215
- return bytes[0] === 0x1f && bytes[1] === 0x8b;
216
- }
217
- async function decompressGzipBuffer(buffer) {
218
- if (typeof DecompressionStream !== "function") {
219
- throw new Error("This runtime does not support gzip-compressed VRM assets.");
220
- }
221
- const stream = new Blob([buffer])
222
- .stream()
223
- .pipeThrough(new DecompressionStream("gzip"));
224
- return await new Response(stream).arrayBuffer();
225
- }
226
- async function loadGltfAsset(loader, url, onProgress) {
227
- const response = await fetch(url);
228
- if (!response.ok) {
229
- throw new Error(`Failed to fetch VRM asset: ${response.status}`);
230
- }
231
- const contentLength = Number(response.headers.get("content-length") || 0);
232
- let buffer;
233
- if (!contentLength || !response.body || !onProgress) {
234
- buffer = await response.arrayBuffer();
235
- onProgress?.(1);
236
- }
237
- else {
238
- const reader = response.body.getReader();
239
- let received = 0;
240
- const chunks = [];
241
- for (;;) {
242
- const { done, value } = await reader.read();
243
- if (done)
244
- break;
245
- if (value) {
246
- chunks.push(value);
247
- received += value.length;
248
- onProgress(Math.min(received / contentLength, 1));
249
- }
250
- }
251
- const combined = new Uint8Array(received);
252
- let offset = 0;
253
- for (const chunk of chunks) {
254
- combined.set(chunk, offset);
255
- offset += chunk.length;
256
- }
257
- buffer = combined.buffer;
258
- }
259
- if (!isGzipBuffer(buffer)) {
260
- const objectUrl = URL.createObjectURL(new Blob([buffer], { type: "model/gltf-binary" }));
261
- try {
262
- return await loader.loadAsync(objectUrl);
263
- }
264
- finally {
265
- URL.revokeObjectURL(objectUrl);
266
- }
267
- }
268
- buffer = await decompressGzipBuffer(buffer);
269
- const objectUrl = URL.createObjectURL(new Blob([buffer], { type: "model/gltf-binary" }));
270
- try {
271
- return await loader.loadAsync(objectUrl);
272
- }
273
- finally {
274
- URL.revokeObjectURL(objectUrl);
275
- }
276
- }
277
- /**
278
- * Create the best available renderer for the current platform.
279
- * Electrobun's CEF desktop shell expects WebGPU for the avatar stage, while the
280
- * browser dev shell stays on WebGL by default to avoid upstream TSL noise.
281
- * A localStorage override can force either backend for debugging.
282
- * THREE.WebGPURenderer is async-init and requires await renderer.init().
283
- */
284
- async function createRenderer(canvas, preference = "auto", sparkOptimized = false) {
285
- if (preference !== "webgl" &&
286
- getPreferredAvatarRendererBackend() === "webgpu" &&
287
- typeof navigator !== "undefined" &&
288
- navigator.gpu) {
289
- try {
290
- const { WebGPURenderer } = await import("three/webgpu");
291
- const renderer = new WebGPURenderer({
292
- canvas,
293
- alpha: true,
294
- antialias: !sparkOptimized,
295
- });
296
- await renderer.init?.();
297
- console.info("[VrmEngine] Using WebGPURenderer");
298
- return { backend: "webgpu", renderer };
299
- }
300
- catch (err) {
301
- console.warn("[VrmEngine] WebGPURenderer failed, falling back to WebGL:", err);
302
- }
303
- }
304
- const renderer = new THREE.WebGLRenderer({
305
- canvas,
306
- alpha: true,
307
- antialias: !sparkOptimized,
308
- powerPreference: sparkOptimized ? "high-performance" : "default",
309
- });
310
- console.info("[VrmEngine] Using WebGLRenderer");
311
- return { backend: "webgl", renderer };
312
- }
313
- export class VrmEngine {
314
- static sparkModulePromise = null;
315
- renderer = null;
316
- rendererBackend = "webgl";
317
- rendererPreference = "auto";
318
- scene = null;
319
- avatarRoot = null;
320
- camera = null;
321
- clock = new THREE.Clock();
322
- vrm = null;
323
- mixer = null;
324
- idleAction = null;
325
- idleLoadPromise = null;
326
- animationFrameId = null;
327
- onUpdate = null;
328
- initialized = false;
329
- loadingAborted = false;
330
- vrmLoadRequestId = 0;
331
- vrmReady = false;
332
- lastLoadError = null;
333
- teleportProgress = 1.0;
334
- loadingProgress = 0;
335
- teleportProgressUniform = null;
336
- teleportDissolvedMaterials = [];
337
- teleportFallbackShaders = [];
338
- teleportSparkles = null;
339
- revealStarted = false;
340
- mouthValue = 0;
341
- mouthSmoothed = 0;
342
- vrmName = null;
343
- lookAtTarget = new THREE.Vector3(0, 0.5, 0);
344
- idleGlbUrl = resolveAppAssetUrl("animations/idle.glb.gz");
345
- cameraAnimation = {
346
- ...DEFAULT_CAMERA_ANIMATION,
347
- };
348
- baseCameraPosition = new THREE.Vector3();
349
- elapsedTime = 0;
350
- speaking = false;
351
- speakingStartTime = 0;
352
- blinkController = new VrmBlinkController();
353
- cameraManager = new VrmCameraManager();
354
- emoteAction = null;
355
- emoteTimeout = null;
356
- emoteCompletionCleanup = null;
357
- emoteClipCache = new Map();
358
- emoteRequestId = 0;
359
- controls = null;
360
- paused = false;
361
- interactionEnabled = false;
362
- interactionMode = "free";
363
- cameraProfile = "chat";
364
- worldUrl = null;
365
- worldMesh = null;
366
- worldReveal = null;
367
- sparkRenderer = null;
368
- worldLoadRequestId = 0;
369
- pointerParallaxEnabled = false;
370
- pointerParallaxTarget = new THREE.Vector2();
371
- pointerParallaxCurrent = new THREE.Vector2();
372
- pointerParallaxPosition = new THREE.Vector3();
373
- pointerParallaxLookAt = new THREE.Vector3();
374
- dragOrbitTarget = new THREE.Vector2();
375
- dragOrbitCurrent = new THREE.Vector2();
376
- companionZoomTarget = 0;
377
- companionZoomCurrent = 0;
378
- avatarLookTarget = null;
379
- headLookTarget = new THREE.Vector2();
380
- headLookCurrent = new THREE.Vector2();
381
- clearEmoteTimeout() {
382
- if (this.emoteTimeout !== null) {
383
- clearTimeout(this.emoteTimeout);
384
- this.emoteTimeout = null;
385
- }
386
- }
387
- clearEmoteCompletionCleanup() {
388
- this.emoteCompletionCleanup?.();
389
- this.emoteCompletionCleanup = null;
390
- }
391
- clearPendingEmoteCompletion() {
392
- this.clearEmoteTimeout();
393
- this.clearEmoteCompletionCleanup();
394
- }
395
- watchOneShotEmoteCompletion(mixer, action, requestId, fallbackDurationSeconds) {
396
- const handleFinished = (event) => {
397
- if (event.action !== action)
398
- return;
399
- if (this.emoteRequestId !== requestId || this.emoteAction !== action) {
400
- return;
401
- }
402
- this.stopEmote();
403
- };
404
- mixer.addEventListener("finished", handleFinished);
405
- this.emoteCompletionCleanup = () => {
406
- mixer.removeEventListener("finished", handleFinished);
407
- };
408
- const safeDuration = Number.isFinite(fallbackDurationSeconds) && fallbackDurationSeconds > 0
409
- ? fallbackDurationSeconds
410
- : 3;
411
- // Keep a timer fallback in case the mixer completion event is missed.
412
- this.emoteTimeout = setTimeout(() => {
413
- if (this.emoteRequestId !== requestId || this.emoteAction !== action) {
414
- return;
415
- }
416
- this.stopEmote();
417
- }, Math.max(0.25, safeDuration + 0.1) * 1000);
418
- }
419
- activateAction(action) {
420
- action.enabled = true;
421
- action.paused = false;
422
- action.setEffectiveTimeScale(1);
423
- action.setEffectiveWeight(1);
424
- action.play();
425
- }
426
- playActionWithBlend(action, fromAction, fadeDuration) {
427
- action.reset();
428
- this.activateAction(action);
429
- if (fromAction && fromAction !== action) {
430
- this.activateAction(fromAction);
431
- action.crossFadeFrom(fromAction, fadeDuration, false);
432
- return;
433
- }
434
- action.fadeIn(fadeDuration);
435
- }
436
- async ensureIdleAction(vrm, mixer) {
437
- if (this.idleAction)
438
- return this.idleAction;
439
- if (this.idleLoadPromise)
440
- return this.idleLoadPromise;
441
- this.idleLoadPromise = (async () => {
442
- const clip = await loadIdleClip(vrm, this.idleGlbUrl, this.animationLoaderContext);
443
- if (!clip || this.loadingAborted || this.vrm !== vrm) {
444
- return null;
445
- }
446
- const activeMixer = this.mixer ?? mixer;
447
- if (!activeMixer || this.vrm !== vrm) {
448
- return null;
449
- }
450
- const action = activeMixer.clipAction(clip);
451
- action.reset();
452
- action.setLoop(THREE.LoopRepeat, Infinity);
453
- action.timeScale = 1.0;
454
- this.idleAction = action;
455
- activeMixer.update(1 / 60);
456
- return action;
457
- })().finally(() => {
458
- this.idleLoadPromise = null;
459
- });
460
- return this.idleLoadPromise;
461
- }
462
- restoreIdleAfterEmote(activeEmote, fadeDuration, vrm, mixer) {
463
- void this.ensureIdleAction(vrm, mixer).then((idleAction) => {
464
- if (!idleAction || this.loadingAborted || this.vrm !== vrm) {
465
- activeEmote?.fadeOut(fadeDuration);
466
- return;
467
- }
468
- this.activateAction(idleAction);
469
- if (activeEmote && activeEmote !== idleAction) {
470
- idleAction.crossFadeFrom(activeEmote, fadeDuration, false);
471
- }
472
- else {
473
- idleAction.fadeIn(fadeDuration);
474
- }
475
- });
476
- }
477
- avatarLookRig = {
478
- headBone: null,
479
- neckBone: null,
480
- spineBone: null,
481
- };
482
- tempCameraOrbitOffset = new THREE.Vector3();
483
- tempCameraSpherical = new THREE.Spherical();
484
- tempAvatarLookTarget = new THREE.Vector3();
485
- tempAvatarLocalTarget = new THREE.Vector3();
486
- tempAvatarLocalAnchor = new THREE.Vector3();
487
- tempAvatarHeadWorld = new THREE.Vector3();
488
- readyPromise = Promise.resolve();
489
- resolveReady = null;
490
- rejectReady = null;
491
- releaseKnownWebGpuWarningFilter = null;
492
- // Transition state
493
- isCameraTransitioning = false;
494
- transitionStartFov = 0;
495
- transitionTargetFov = 0;
496
- transitionStartPos = new THREE.Vector3();
497
- transitionTargetPos = new THREE.Vector3();
498
- transitionStartLookAt = new THREE.Vector3();
499
- transitionTargetLookAt = new THREE.Vector3();
500
- transitionProgress = 0;
501
- transitionDuration = CAMERA_PROFILE_TRANSITION_DURATION_SECONDS;
502
- handleControlStart = () => {
503
- if (!this.interactionEnabled)
504
- return;
505
- };
506
- handleControlEnd = () => {
507
- if (!this.interactionEnabled)
508
- return;
509
- if (this.camera) {
510
- this.baseCameraPosition.copy(this.camera.position);
511
- }
512
- if (this.controls) {
513
- this.lookAtTarget.copy(this.controls.target);
514
- }
515
- };
516
- scheduleNextFrame() {
517
- if (!this.initialized || this.paused || this.animationFrameId !== null) {
518
- return;
519
- }
520
- this.animationFrameId = requestAnimationFrame(() => {
521
- this.animationFrameId = null;
522
- this.loop();
523
- });
524
- }
525
- stopLoop() {
526
- if (this.animationFrameId !== null) {
527
- cancelAnimationFrame(this.animationFrameId);
528
- this.animationFrameId = null;
529
- }
530
- this.clock.stop();
531
- }
532
- resumeLoop() {
533
- if (!this.initialized || this.paused)
534
- return;
535
- this.clock.start();
536
- this.scheduleNextFrame();
537
- }
538
- async loadSparkModule() {
539
- if (!VrmEngine.sparkModulePromise) {
540
- VrmEngine.sparkModulePromise = import("@sparkjsdev/spark");
541
- }
542
- return VrmEngine.sparkModulePromise;
543
- }
544
- async ensureSparkRenderer() {
545
- if (this.sparkRenderer || this.rendererBackend !== "webgl")
546
- return;
547
- if (!this.scene || !this.renderer)
548
- return;
549
- const { SparkRenderer } = await this.loadSparkModule();
550
- // Re-check after async import — the engine may have been disposed during
551
- // the await (e.g. React StrictMode double-mount).
552
- if (!this.scene || !this.renderer)
553
- return;
554
- const sparkRenderer = new SparkRenderer({
555
- renderer: this.renderer,
556
- apertureAngle: 0.0,
557
- focalDistance: 5.0,
558
- originDistance: 1,
559
- clipXY: SPARK_CLIP_XY,
560
- maxStdDev: SPARK_MAX_STD_DEV,
561
- maxPixelRadius: SPARK_MAX_PIXEL_RADIUS,
562
- minAlpha: SPARK_MIN_ALPHA,
563
- view: {
564
- depthBias: 1,
565
- sortDistance: SPARK_SORT_DISTANCE,
566
- sortRadial: true,
567
- sort360: false,
568
- },
569
- });
570
- sparkRenderer.renderOrder = 9998;
571
- this.scene.add(sparkRenderer);
572
- this.sparkRenderer = sparkRenderer;
573
- }
574
- updateSparkPerformanceProfile() {
575
- const sparkRenderer = this.sparkRenderer;
576
- if (!sparkRenderer)
577
- return;
578
- if (!this.worldMesh) {
579
- sparkRenderer.maxPixelRadius = SPARK_MAX_PIXEL_RADIUS;
580
- sparkRenderer.maxStdDev = SPARK_MAX_STD_DEV;
581
- sparkRenderer.minAlpha = SPARK_MIN_ALPHA;
582
- sparkRenderer.clipXY = SPARK_CLIP_XY;
583
- sparkRenderer.defaultView.sortDistance = SPARK_SORT_DISTANCE;
584
- return;
585
- }
586
- const isCompanionProfile = this.cameraProfile === "companion" ||
587
- this.cameraProfile === "companion_close";
588
- const closeZoomFactor = isCompanionProfile
589
- ? THREE.MathUtils.smoothstep(this.companionZoomCurrent, 0.3, 1)
590
- : 0;
591
- sparkRenderer.maxPixelRadius = THREE.MathUtils.lerp(SPARK_MAX_PIXEL_RADIUS, SPARK_MAX_PIXEL_RADIUS_NEAR, closeZoomFactor);
592
- sparkRenderer.maxStdDev = THREE.MathUtils.lerp(SPARK_MAX_STD_DEV, SPARK_MAX_STD_DEV_NEAR, closeZoomFactor);
593
- sparkRenderer.minAlpha = THREE.MathUtils.lerp(SPARK_MIN_ALPHA, SPARK_MIN_ALPHA_NEAR, closeZoomFactor);
594
- sparkRenderer.clipXY = THREE.MathUtils.lerp(SPARK_CLIP_XY, 1.03, closeZoomFactor);
595
- sparkRenderer.defaultView.sortDistance = THREE.MathUtils.lerp(SPARK_SORT_DISTANCE, SPARK_SORT_DISTANCE_NEAR, closeZoomFactor);
596
- }
597
- createWorldRevealController(spark, mesh, reveal, mode) {
598
- const dyno = ("dyno" in spark ? Reflect.get(spark, "dyno") : undefined);
599
- if (!dyno?.Gsplat ||
600
- !dyno.dynoBlock ||
601
- !dyno.dynoFloat ||
602
- !dyno.dynoVec3 ||
603
- !dyno.dynoConst ||
604
- !dyno.splitGsplat ||
605
- !dyno.combineGsplat ||
606
- !dyno.add ||
607
- !dyno.sub ||
608
- !dyno.mul ||
609
- !dyno.div ||
610
- !dyno.abs ||
611
- !dyno.clamp ||
612
- !dyno.max ||
613
- !dyno.mix ||
614
- !dyno.smoothstep ||
615
- !dyno.pow ||
616
- !dyno.length ||
617
- !dyno.swizzle) {
618
- return null;
619
- }
620
- const originUniform = dyno.dynoVec3(reveal.origin, "uWorldRevealOrigin");
621
- const resolvedRadius = Math.max(reveal.radius, COMPANION_WORLD_REVEAL_EDGE * 2);
622
- const radiusUniform = dyno.dynoFloat(resolvedRadius, "uWorldRevealRadius");
623
- const edgeUniform = dyno.dynoFloat(COMPANION_WORLD_REVEAL_EDGE, "uWorldRevealEdge");
624
- const progressUniform = dyno.dynoFloat(0, "uWorldRevealProgress");
625
- const wireScaleUniform = dyno.dynoVec3(new THREE.Vector3(0.004, 0.004, 0.004), "uWorldRevealWireScale");
626
- const wireAlphaUniform = dyno.dynoFloat(0.42, "uWorldRevealWireAlpha");
627
- const wireBoostUniform = dyno.dynoFloat(0.3, "uWorldRevealWireBoost");
628
- const zero = dyno.dynoConst("float", 0);
629
- const one = dyno.dynoConst("float", 1);
630
- const two = dyno.dynoConst("float", 2);
631
- const startOffset = dyno.dynoConst("float", -COMPANION_WORLD_REVEAL_START_OFFSET);
632
- const modifier = dyno.dynoBlock({ gsplat: dyno.Gsplat }, { gsplat: dyno.Gsplat }, ({ gsplat }) => {
633
- if (!gsplat) {
634
- throw new Error("Missing gsplat input for world reveal");
635
- }
636
- const { center, scales, rgb, opacity } = dyno.splitGsplat(gsplat).outputs;
637
- const radialDistance = dyno.length(dyno.swizzle(dyno.sub(center, originUniform), "xz"));
638
- const currentRadius = dyno.add(dyno.mul(radiusUniform, progressUniform), startOffset);
639
- const bodyMask = dyno.sub(one, dyno.smoothstep(dyno.sub(currentRadius, edgeUniform), dyno.add(currentRadius, edgeUniform), radialDistance));
640
- const ringDistance = dyno.abs(dyno.sub(radialDistance, currentRadius));
641
- const ringMask = dyno.pow(dyno.sub(one, dyno.smoothstep(zero, dyno.mul(edgeUniform, two), ringDistance)), two);
642
- const visibleMask = mode === "hide" ? dyno.sub(one, bodyMask) : bodyMask;
643
- const wireFactor = dyno.clamp(dyno.max(visibleMask, dyno.mul(ringMask, wireAlphaUniform)), zero, one);
644
- const brightenedRgb = dyno.mul(rgb, dyno.add(one, dyno.mul(ringMask, wireBoostUniform)));
645
- return {
646
- gsplat: dyno.combineGsplat({
647
- gsplat,
648
- scales: dyno.mix(wireScaleUniform, scales, wireFactor),
649
- rgb: dyno.mix(brightenedRgb, rgb, visibleMask),
650
- opacity: dyno.mul(opacity, wireFactor),
651
- }),
652
- };
653
- });
654
- mesh.objectModifier = modifier;
655
- this.refreshSplatMesh(mesh);
656
- return {
657
- mesh,
658
- progressUniform,
659
- mode,
660
- radius: resolvedRadius,
661
- };
662
- }
663
- refreshSplatMesh(mesh) {
664
- mesh.updateGenerator();
665
- const refreshableMesh = mesh;
666
- refreshableMesh.updateVersion?.();
667
- }
668
- setWorldRevealProgress(controller, progress) {
669
- controller.progressUniform.value = THREE.MathUtils.clamp(progress, 0, 1);
670
- const refreshableMesh = controller.mesh;
671
- refreshableMesh.updateVersion?.();
672
- }
673
- queueWorldReveal(incoming, options = {}) {
674
- const reveal = {
675
- controller: incoming,
676
- incoming,
677
- outgoing: options.outgoing ?? null,
678
- progress: THREE.MathUtils.clamp(options.initialProgress ?? 0, 0, 1),
679
- duration: options.duration ?? COMPANION_WORLD_REVEAL_DURATION,
680
- waitingForVrm: options.waitingForVrm ?? false,
681
- syncToTeleport: options.syncToTeleport ?? false,
682
- };
683
- incoming.mesh.opacity = 1;
684
- if (reveal.outgoing) {
685
- reveal.outgoing.mesh.opacity = 1;
686
- }
687
- this.worldReveal = reveal;
688
- this.setWorldRevealProgress(incoming, reveal.progress);
689
- if (reveal.outgoing) {
690
- this.setWorldRevealProgress(reveal.outgoing, reveal.progress);
691
- }
692
- }
693
- disposeSplatMesh(mesh) {
694
- if (!mesh)
695
- return;
696
- mesh.parent?.remove(mesh);
697
- mesh.dispose();
698
- }
699
- completeWorldReveal(reveal) {
700
- this.setWorldRevealProgress(reveal.incoming, 1);
701
- reveal.incoming.mesh.opacity = 1;
702
- reveal.incoming.mesh.objectModifier = undefined;
703
- this.refreshSplatMesh(reveal.incoming.mesh);
704
- if (reveal.outgoing) {
705
- reveal.outgoing.mesh.objectModifier = undefined;
706
- this.disposeSplatMesh(reveal.outgoing.mesh);
707
- }
708
- if (this.worldReveal === reveal) {
709
- this.worldReveal = null;
710
- }
711
- }
712
- cancelWorldReveal() {
713
- if (!this.worldReveal)
714
- return;
715
- this.completeWorldReveal(this.worldReveal);
716
- }
717
- startPendingWorldReveal(syncToTeleport) {
718
- const reveal = this.worldReveal;
719
- if (!reveal || !reveal.waitingForVrm)
720
- return;
721
- reveal.waitingForVrm = false;
722
- reveal.syncToTeleport = syncToTeleport;
723
- reveal.progress = syncToTeleport ? this.teleportProgress : 0;
724
- this.setWorldRevealProgress(reveal.incoming, reveal.progress);
725
- if (reveal.outgoing) {
726
- this.setWorldRevealProgress(reveal.outgoing, reveal.progress);
727
- }
728
- }
729
- updateWorldReveal(stableDelta) {
730
- const reveal = this.worldReveal;
731
- if (!reveal || reveal.waitingForVrm)
732
- return;
733
- const avatarRevealActive = this.revealStarted && this.teleportProgress < 0.999;
734
- const nextProgress = reveal.syncToTeleport && avatarRevealActive
735
- ? this.teleportProgress
736
- : Math.min(1, reveal.progress + stableDelta / reveal.duration);
737
- const appliedProgress = reveal.syncToTeleport && avatarRevealActive
738
- ? nextProgress
739
- : nextProgress ** COMPANION_WORLD_REVEAL_EASE_EXPONENT;
740
- reveal.progress = nextProgress;
741
- this.setWorldRevealProgress(reveal.incoming, appliedProgress);
742
- if (reveal.outgoing) {
743
- this.setWorldRevealProgress(reveal.outgoing, appliedProgress);
744
- }
745
- if (nextProgress >= 1) {
746
- this.completeWorldReveal(reveal);
747
- }
748
- }
749
- updateSparkDepthOfField(camera) {
750
- const sparkRenderer = this.sparkRenderer;
751
- if (!sparkRenderer)
752
- return;
753
- if (!this.worldMesh) {
754
- sparkRenderer.apertureAngle = 0;
755
- return;
756
- }
757
- const focalDistance = Math.max(0.5, camera.position.distanceTo(this.pointerParallaxLookAt));
758
- const isCompanionProfile = this.cameraProfile === "companion" ||
759
- this.cameraProfile === "companion_close";
760
- const closeZoomFactor = isCompanionProfile
761
- ? THREE.MathUtils.smoothstep(this.companionZoomCurrent, 0.3, 1)
762
- : 0;
763
- const apertureSize = THREE.MathUtils.lerp(COMPANION_DOF_APERTURE_SIZE, COMPANION_DOF_APERTURE_SIZE * COMPANION_DOF_NEAR_ZOOM_APERTURE_FACTOR, closeZoomFactor);
764
- sparkRenderer.focalDistance = focalDistance;
765
- sparkRenderer.apertureAngle =
766
- 2 * Math.atan((0.5 * apertureSize) / sparkRenderer.focalDistance);
767
- }
768
- applyCompanionZoom(camera, stableDelta) {
769
- const isCompanionProfile = this.cameraProfile === "companion" ||
770
- this.cameraProfile === "companion_close";
771
- const follow = Math.min(1, stableDelta * 10);
772
- const targetZoom = isCompanionProfile ? this.companionZoomTarget : 0;
773
- this.companionZoomCurrent = THREE.MathUtils.lerp(this.companionZoomCurrent, targetZoom, follow);
774
- if (this.companionZoomCurrent < 1e-4)
775
- return;
776
- const baseRadius = this.baseCameraPosition.distanceTo(this.lookAtTarget);
777
- if (!Number.isFinite(baseRadius) || baseRadius < 1e-4)
778
- return;
779
- const orbitOffset = this.tempCameraOrbitOffset
780
- .copy(camera.position)
781
- .sub(this.lookAtTarget);
782
- if (orbitOffset.lengthSq() < 1e-6)
783
- return;
784
- const spherical = this.tempCameraSpherical.setFromVector3(orbitOffset);
785
- const nearRadius = Math.max(COMPANION_ZOOM_MIN_RADIUS, baseRadius * COMPANION_ZOOM_NEAR_FACTOR);
786
- spherical.radius = THREE.MathUtils.lerp(baseRadius, nearRadius, this.companionZoomCurrent);
787
- camera.position
788
- .copy(this.lookAtTarget)
789
- .add(orbitOffset.setFromSpherical(spherical));
790
- }
791
- configureAvatarLookTracking(vrm) {
792
- const target = this.avatarLookTarget;
793
- if (target) {
794
- target.position.set(0, 1.5, 2);
795
- target.updateMatrixWorld(true);
796
- }
797
- if (vrm.lookAt && target) {
798
- vrm.lookAt.autoUpdate = true;
799
- vrm.lookAt.target = target;
800
- }
801
- const headBone = vrm.humanoid?.getRawBoneNode("head") ?? null;
802
- const neckBone = vrm.humanoid?.getRawBoneNode("neck") ?? null;
803
- const spineBone = vrm.humanoid?.getRawBoneNode("upperChest") ??
804
- vrm.humanoid?.getRawBoneNode("chest") ??
805
- vrm.humanoid?.getRawBoneNode("spine") ??
806
- null;
807
- this.avatarLookRig = {
808
- headBone,
809
- neckBone,
810
- spineBone,
811
- };
812
- this.headLookTarget.set(0, 0);
813
- this.headLookCurrent.set(0, 0);
814
- }
815
- updateAvatarLookTarget(camera, stableDelta) {
816
- const target = this.avatarLookTarget;
817
- if (!target)
818
- return;
819
- this.tempAvatarLookTarget.copy(camera.position);
820
- const follow = Math.min(1, stableDelta * 24);
821
- target.position.lerp(this.tempAvatarLookTarget, follow);
822
- target.updateMatrixWorld(true);
823
- }
824
- refreshAvatarEyeTracking() {
825
- const vrm = this.vrm;
826
- if (!vrm?.lookAt || !this.avatarLookTarget)
827
- return;
828
- vrm.lookAt.update(0);
829
- vrm.expressionManager?.update();
830
- }
831
- applyAvatarHeadTracking(camera, stableDelta) {
832
- const vrm = this.vrm;
833
- const { headBone, neckBone, spineBone } = this.avatarLookRig;
834
- if (!vrm || !headBone)
835
- return;
836
- const headParent = headBone.parent;
837
- if (!headParent || typeof headParent.worldToLocal !== "function")
838
- return;
839
- if (typeof THREE.Euler !== "function" ||
840
- typeof THREE.Quaternion !== "function" ||
841
- typeof headBone.quaternion.clone !== "function") {
842
- return;
843
- }
844
- const lookAtState = vrm.lookAt;
845
- const lookAtYawDegrees = lookAtState?._yaw;
846
- const lookAtPitchDegrees = lookAtState?._pitch;
847
- if (Number.isFinite(lookAtYawDegrees) &&
848
- Number.isFinite(lookAtPitchDegrees)) {
849
- this.headLookTarget.set(THREE.MathUtils.clamp(THREE.MathUtils.degToRad(lookAtYawDegrees || 0), -0.55, 0.55), THREE.MathUtils.clamp(THREE.MathUtils.degToRad(lookAtPitchDegrees || 0), -0.3, 0.24));
850
- }
851
- else {
852
- headBone.getWorldPosition(this.tempAvatarHeadWorld);
853
- this.tempAvatarLocalTarget.copy(camera.position);
854
- this.tempAvatarLocalTarget.y -= 0.04;
855
- headParent.worldToLocal(this.tempAvatarLocalTarget);
856
- headParent.worldToLocal(this.tempAvatarLocalAnchor.copy(this.tempAvatarHeadWorld));
857
- this.tempAvatarLocalTarget.sub(this.tempAvatarLocalAnchor);
858
- const planarDistance = Math.max(1e-4, Math.hypot(this.tempAvatarLocalTarget.x, this.tempAvatarLocalTarget.z));
859
- this.headLookTarget.set(THREE.MathUtils.clamp(Math.atan2(-this.tempAvatarLocalTarget.x, Math.max(-this.tempAvatarLocalTarget.z, 1e-4)), -0.55, 0.55), THREE.MathUtils.clamp(Math.atan2(this.tempAvatarLocalTarget.y, planarDistance), -0.3, 0.24));
860
- }
861
- this.headLookCurrent.lerp(this.headLookTarget, Math.min(1, stableDelta * 4.5));
862
- const applyTrackedBone = (bone, yawWeight, pitchWeight) => {
863
- if (!bone ||
864
- !bone.quaternion ||
865
- typeof bone.quaternion.clone !== "function") {
866
- return;
867
- }
868
- const offsetEuler = new THREE.Euler(this.headLookCurrent.y * pitchWeight, this.headLookCurrent.x * yawWeight, 0, "YXZ");
869
- const offsetQuaternion = new THREE.Quaternion().setFromEuler(offsetEuler);
870
- const animatedPose = bone.quaternion.clone();
871
- bone.quaternion.copy(animatedPose).multiply(offsetQuaternion);
872
- };
873
- applyTrackedBone(spineBone, 0.12, 0.06);
874
- applyTrackedBone(neckBone, 0.3, 0.18);
875
- applyTrackedBone(headBone, 0.52, 0.28);
876
- }
877
- toDebugVector3(vector) {
878
- if (!vector)
879
- return null;
880
- return {
881
- x: Number(vector.x.toFixed(4)),
882
- y: Number(vector.y.toFixed(4)),
883
- z: Number(vector.z.toFixed(4)),
884
- };
885
- }
886
- toDebugBounds(object) {
887
- if (!object)
888
- return null;
889
- const bounds = new THREE.Box3().setFromObject(object);
890
- if (bounds.isEmpty())
891
- return null;
892
- return this.toDebugBoundsFromBox(bounds);
893
- }
894
- toDebugBoundsFromBox(bounds) {
895
- if (!bounds || bounds.isEmpty())
896
- return null;
897
- const center = bounds.getCenter(new THREE.Vector3());
898
- const size = bounds.getSize(new THREE.Vector3());
899
- const min = this.toDebugVector3(bounds.min.clone());
900
- const max = this.toDebugVector3(bounds.max.clone());
901
- const centerVector = this.toDebugVector3(center);
902
- const sizeVector = this.toDebugVector3(size);
903
- if (!min || !max || !centerVector || !sizeVector)
904
- return null;
905
- return {
906
- min,
907
- max,
908
- center: centerVector,
909
- size: sizeVector,
910
- };
911
- }
912
- getDebugInfo() {
913
- this.scene?.updateMatrixWorld(true);
914
- this.vrm?.scene.updateMatrixWorld(true);
915
- this.worldMesh?.updateMatrixWorld(true);
916
- const cameraRotation = this.camera
917
- ? new THREE.Vector3(this.camera.rotation.x, this.camera.rotation.y, this.camera.rotation.z)
918
- : null;
919
- const lookAtTarget = this.toDebugVector3(this.lookAtTarget) ??
920
- { x: 0, y: 0, z: 0 };
921
- return {
922
- initialized: this.initialized,
923
- rendererBackend: this.rendererBackend,
924
- cameraProfile: this.cameraProfile,
925
- worldUrl: this.worldUrl,
926
- sceneChildren: this.scene?.children.map((child) => child.name || child.type) ?? [],
927
- camera: {
928
- parentName: this.camera?.parent?.name ?? null,
929
- position: this.toDebugVector3(this.camera?.position ?? null),
930
- rotation: this.toDebugVector3(cameraRotation),
931
- fov: this.camera?.fov ?? null,
932
- lookAtTarget,
933
- },
934
- avatar: {
935
- loaded: this.vrm !== null,
936
- ready: this.vrmReady,
937
- parentName: this.vrm?.scene.parent?.name ?? null,
938
- position: this.toDebugVector3(this.vrm?.scene.position ?? null),
939
- scale: this.toDebugVector3(this.vrm?.scene.scale ?? null),
940
- bounds: this.toDebugBounds(this.vrm?.scene ?? null),
941
- },
942
- world: {
943
- loaded: this.worldMesh !== null,
944
- parentName: this.worldMesh?.parent?.name ?? null,
945
- position: this.toDebugVector3(this.worldMesh?.position ?? null),
946
- scale: this.toDebugVector3(this.worldMesh?.scale ?? null),
947
- bounds: this.toDebugBounds(this.worldMesh ?? null),
948
- rawBounds: this.worldMesh
949
- ? this.toDebugBoundsFromBox(this.worldMesh.getBoundingBox(true))
950
- : null,
951
- },
952
- spark: {
953
- attached: this.sparkRenderer !== null,
954
- parentName: this.sparkRenderer?.parent?.name ?? null,
955
- renderOrder: this.sparkRenderer?.renderOrder ?? null,
956
- },
957
- };
958
- }
959
- setDebugAvatarVisible(visible) {
960
- if (!this.vrm)
961
- return;
962
- this.vrm.scene.visible = visible;
963
- }
964
- setDebugWorldPosition(x, y, z) {
965
- if (!this.worldMesh)
966
- return;
967
- this.worldMesh.position.set(x, y, z);
968
- }
969
- setDebugWorldQuaternion(x, y, z, w) {
970
- if (!this.worldMesh)
971
- return;
972
- this.worldMesh.quaternion.set(x, y, z, w);
973
- }
974
- setDebugCamera(position, target) {
975
- if (!this.camera)
976
- return;
977
- this.isCameraTransitioning = false;
978
- this.camera.position.copy(position);
979
- this.baseCameraPosition.copy(position);
980
- this.lookAtTarget.copy(target);
981
- this.controls?.target.copy(target);
982
- this.controls?.update();
983
- this.camera.lookAt(target);
984
- }
985
- startCameraTransition(startPos, startLookAt, startFov, targetPos, targetLookAt, targetFov, durationSeconds) {
986
- if (!this.camera)
987
- return;
988
- this.transitionStartFov = startFov;
989
- this.transitionTargetFov = targetFov;
990
- this.transitionStartPos.copy(startPos);
991
- this.transitionTargetPos.copy(targetPos);
992
- this.transitionStartLookAt.copy(startLookAt);
993
- this.transitionTargetLookAt.copy(targetLookAt);
994
- this.transitionDuration = Math.max(0.01, durationSeconds);
995
- this.camera.fov = startFov;
996
- this.camera.position.copy(startPos);
997
- this.camera.updateProjectionMatrix();
998
- this.baseCameraPosition.copy(startPos);
999
- this.lookAtTarget.copy(startLookAt);
1000
- if (this.controls) {
1001
- this.controls.target.copy(startLookAt);
1002
- this.controls.update();
1003
- }
1004
- this.camera.lookAt(startLookAt);
1005
- this.isCameraTransitioning = true;
1006
- this.transitionProgress = 0;
1007
- }
1008
- transitionCameraToFramedAvatar(vrm, durationSeconds) {
1009
- if (!this.camera)
1010
- return;
1011
- const startPos = new THREE.Vector3().copy(this.camera.position);
1012
- const startLookAt = new THREE.Vector3().copy(this.lookAtTarget);
1013
- const startFov = this.camera.fov;
1014
- const targetLookAt = new THREE.Vector3();
1015
- const targetPos = new THREE.Vector3();
1016
- this.cameraManager.centerAndFrame(vrm, this.camera, this.controls, this.cameraProfile, targetLookAt, targetPos, (c) => this.cameraManager.applyInteractionMode(c, this.interactionMode));
1017
- this.startCameraTransition(startPos, startLookAt, startFov, targetPos, targetLookAt, this.camera.fov, durationSeconds);
1018
- }
1019
- whenReady() {
1020
- return this.readyPromise;
1021
- }
1022
- resetReadyPromise() {
1023
- this.readyPromise = new Promise((resolve, reject) => {
1024
- this.resolveReady = resolve;
1025
- this.rejectReady = reject;
1026
- });
1027
- }
1028
- settleReady(error) {
1029
- if (error) {
1030
- this.rejectReady?.(error);
1031
- }
1032
- else {
1033
- this.resolveReady?.();
1034
- }
1035
- this.resolveReady = null;
1036
- this.rejectReady = null;
1037
- }
1038
- setup(canvas, onUpdate, options) {
1039
- if (this.initialized && this.renderer?.domElement === canvas) {
1040
- this.onUpdate = onUpdate;
1041
- return;
1042
- }
1043
- if (this.initialized)
1044
- this.dispose();
1045
- this.onUpdate = onUpdate;
1046
- this.loadingAborted = false;
1047
- this.rendererPreference = options?.rendererPreference ?? "auto";
1048
- this.resetReadyPromise();
1049
- // Async renderer creation: tries WebGPU, falls back to WebGL.
1050
- // setup() remains synchronous for callers; the loop starts after init resolves.
1051
- void (async () => {
1052
- try {
1053
- const { backend, renderer } = await createRenderer(canvas, this.rendererPreference, options?.sparkOptimized ?? false);
1054
- const releaseKnownWebGpuWarningFilter = backend === "webgpu" ? installKnownVrmWebGpuWarningFilter() : null;
1055
- // Guard: if dispose() was called while we were awaiting, abort.
1056
- if (this.loadingAborted) {
1057
- releaseKnownWebGpuWarningFilter?.();
1058
- renderer.dispose();
1059
- this.settleReady();
1060
- return;
1061
- }
1062
- this.releaseKnownWebGpuWarningFilter = releaseKnownWebGpuWarningFilter;
1063
- renderer.setPixelRatio(getRendererPixelRatio(options?.sparkOptimized ?? false));
1064
- renderer.setClearColor(0x000000, 0);
1065
- if (backend === "webgl") {
1066
- const webglRenderer = renderer;
1067
- webglRenderer.shadowMap.enabled = true;
1068
- webglRenderer.shadowMap.type = THREE.PCFSoftShadowMap;
1069
- webglRenderer.toneMapping = THREE.NoToneMapping;
1070
- webglRenderer.toneMappingExposure = 1.0;
1071
- webglRenderer.outputColorSpace = THREE.SRGBColorSpace;
1072
- }
1073
- this.renderer = renderer;
1074
- this.rendererBackend = backend;
1075
- const scene = new THREE.Scene();
1076
- this.scene = scene;
1077
- const avatarRoot = new THREE.Group();
1078
- avatarRoot.name = "AvatarRoot";
1079
- scene.add(avatarRoot);
1080
- this.avatarRoot = avatarRoot;
1081
- const avatarLookTarget = new THREE.Group();
1082
- avatarLookTarget.name = "AvatarLookTarget";
1083
- scene.add(avatarLookTarget);
1084
- this.avatarLookTarget = avatarLookTarget;
1085
- const cameraRig = new THREE.Group();
1086
- cameraRig.name = "AvatarCameraRig";
1087
- scene.add(cameraRig);
1088
- const camera = new THREE.PerspectiveCamera(30, 1, 0.1, 20);
1089
- camera.position.set(0, 1.2, 5.0);
1090
- cameraRig.add(camera);
1091
- this.camera = camera;
1092
- const controls = new OrbitControls(camera, renderer.domElement);
1093
- controls.enableDamping = false;
1094
- controls.target.copy(this.lookAtTarget);
1095
- controls.addEventListener("start", this.handleControlStart);
1096
- controls.addEventListener("end", this.handleControlEnd);
1097
- this.cameraManager.applyInteractionMode(controls, this.interactionMode);
1098
- controls.update();
1099
- this.controls = controls;
1100
- this.setInteractionEnabled(this.interactionEnabled);
1101
- // Apply deferred camera profile (setCameraProfile may have been called
1102
- // before the camera existed) and initialize baseCameraPosition so that
1103
- // drag-orbit and companion-zoom have a valid reference point from the
1104
- // very first frame.
1105
- this.cameraManager.applyCameraProfileToCamera(camera, controls, this.cameraProfile);
1106
- this.baseCameraPosition.copy(camera.position);
1107
- this.lookAtTarget.copy(controls.target);
1108
- const ambient = new THREE.AmbientLight(0xffffff, 0.8);
1109
- scene.add(ambient);
1110
- const keyLight = new THREE.DirectionalLight(0xffffff, 1.2);
1111
- keyLight.position.set(1, 1, 1).normalize();
1112
- keyLight.castShadow = true;
1113
- keyLight.shadow.mapSize.setScalar(1024);
1114
- scene.add(keyLight);
1115
- const fillLight = new THREE.DirectionalLight(0xffffff, 0.4);
1116
- fillLight.position.set(-1, 0.5, -1).normalize();
1117
- scene.add(fillLight);
1118
- this.resize(canvas.clientWidth, canvas.clientHeight);
1119
- this.initialized = true;
1120
- this.resumeLoop();
1121
- this.settleReady();
1122
- }
1123
- catch (error) {
1124
- this.initialized = false;
1125
- this.releaseKnownWebGpuWarningFilter?.();
1126
- this.releaseKnownWebGpuWarningFilter = null;
1127
- this.renderer = null;
1128
- this.rendererBackend = "webgl";
1129
- this.scene = null;
1130
- this.camera = null;
1131
- this.controls = null;
1132
- console.error("[VrmEngine] Failed to initialize renderer:", error);
1133
- this.settleReady(error);
1134
- }
1135
- })();
1136
- }
1137
- isInitialized() {
1138
- return this.initialized && this.renderer !== null;
1139
- }
1140
- dispose() {
1141
- this.loadingAborted = true;
1142
- this.initialized = false;
1143
- this.settleReady();
1144
- this.releaseKnownWebGpuWarningFilter?.();
1145
- this.releaseKnownWebGpuWarningFilter = null;
1146
- if (this.animationFrameId !== null) {
1147
- cancelAnimationFrame(this.animationFrameId);
1148
- this.animationFrameId = null;
1149
- }
1150
- if (this.vrm?.scene.parent) {
1151
- this.vrm.scene.parent.remove(this.vrm.scene);
1152
- VRMUtils.deepDispose(this.vrm.scene);
1153
- }
1154
- if (this.controls) {
1155
- this.controls.removeEventListener("start", this.handleControlStart);
1156
- this.controls.removeEventListener("end", this.handleControlEnd);
1157
- this.controls.dispose();
1158
- this.controls = null;
1159
- }
1160
- this.vrm = null;
1161
- this.vrmReady = false;
1162
- this.vrmName = null;
1163
- this.lastLoadError = null;
1164
- this.mixer = null;
1165
- this.idleAction = null;
1166
- this.idleLoadPromise = null;
1167
- this.clearPendingEmoteCompletion();
1168
- this.emoteAction = null;
1169
- this.emoteClipCache.clear();
1170
- this.teleportProgress = 1.0;
1171
- this.cleanupTeleportDissolve();
1172
- this.cleanupTeleportSparkles();
1173
- this.disposeWorld();
1174
- this.avatarLookTarget?.parent?.remove(this.avatarLookTarget);
1175
- this.avatarLookTarget = null;
1176
- this.avatarLookRig = {
1177
- headBone: null,
1178
- neckBone: null,
1179
- spineBone: null,
1180
- };
1181
- this.headLookTarget.set(0, 0);
1182
- this.headLookCurrent.set(0, 0);
1183
- if (this.sparkRenderer) {
1184
- this.sparkRenderer.apertureAngle = 0;
1185
- this.sparkRenderer.removeFromParent();
1186
- this.sparkRenderer = null;
1187
- }
1188
- if (this.renderer) {
1189
- this.renderer.dispose();
1190
- }
1191
- this.renderer = null;
1192
- this.rendererBackend = "webgl";
1193
- this.scene = null;
1194
- this.avatarRoot = null;
1195
- this.camera = null;
1196
- this.onUpdate = null;
1197
- this.paused = false;
1198
- }
1199
- setPaused(paused) {
1200
- if (this.paused === paused)
1201
- return;
1202
- this.paused = paused;
1203
- if (paused) {
1204
- this.stopLoop();
1205
- return;
1206
- }
1207
- this.resumeLoop();
1208
- }
1209
- setInteractionEnabled(enabled) {
1210
- this.interactionEnabled = enabled;
1211
- if (this.controls) {
1212
- this.controls.enabled = enabled;
1213
- }
1214
- }
1215
- setInteractionMode(mode) {
1216
- this.interactionMode = mode;
1217
- if (this.controls) {
1218
- this.cameraManager.applyInteractionMode(this.controls, mode);
1219
- this.controls.update();
1220
- }
1221
- }
1222
- setCameraProfile(profile) {
1223
- if (this.cameraProfile === profile)
1224
- return;
1225
- if (this.camera) {
1226
- const startFov = this.camera.fov;
1227
- const startPos = new THREE.Vector3().copy(this.camera.position);
1228
- const startLookAt = new THREE.Vector3().copy(this.lookAtTarget);
1229
- this.cameraProfile = profile;
1230
- const targetLookAt = new THREE.Vector3().copy(this.lookAtTarget);
1231
- const targetPos = new THREE.Vector3().copy(this.camera.position);
1232
- if (this.vrm) {
1233
- this.cameraManager.centerAndFrame(this.vrm, this.camera, this.controls, this.cameraProfile, targetLookAt, targetPos, (c) => this.cameraManager.applyInteractionMode(c, this.interactionMode));
1234
- }
1235
- else {
1236
- this.cameraManager.applyCameraProfileToCamera(this.camera, this.controls, this.cameraProfile);
1237
- targetPos.copy(this.camera.position);
1238
- if (this.controls) {
1239
- targetLookAt.copy(this.controls.target);
1240
- }
1241
- }
1242
- this.startCameraTransition(startPos, startLookAt, startFov, targetPos, targetLookAt, this.camera.fov, CAMERA_PROFILE_TRANSITION_DURATION_SECONDS);
1243
- }
1244
- else {
1245
- this.cameraProfile = profile;
1246
- }
1247
- }
1248
- resize(width, height) {
1249
- if (!this.renderer || !this.camera)
1250
- return;
1251
- if (width <= 0 || height <= 0)
1252
- return;
1253
- const aspect = width / height;
1254
- if (!Number.isFinite(aspect) || aspect <= 0)
1255
- return;
1256
- this.renderer.setSize(width, height, false);
1257
- this.camera.aspect = aspect;
1258
- this.camera.updateProjectionMatrix();
1259
- }
1260
- getState() {
1261
- const idlePlaying = this.idleAction?.isRunning() ?? false;
1262
- return {
1263
- vrmLoaded: this.vrm !== null && this.vrmReady,
1264
- vrmName: this.vrmName,
1265
- loadError: this.lastLoadError,
1266
- idlePlaying,
1267
- idleTime: this.idleAction?.time ?? 0,
1268
- idleTracks: this.idleAction?.getClip()?.tracks.length ?? 0,
1269
- revealStarted: this.revealStarted,
1270
- loadingProgress: this.loadingProgress,
1271
- };
1272
- }
1273
- setMouthOpen(value) {
1274
- this.mouthValue = Math.max(0, Math.min(1, value));
1275
- }
1276
- setSpeaking(speaking) {
1277
- if (speaking && !this.speaking) {
1278
- this.speakingStartTime = this.elapsedTime;
1279
- }
1280
- this.speaking = speaking;
1281
- }
1282
- setCameraAnimation(config) {
1283
- this.cameraAnimation = { ...this.cameraAnimation, ...config };
1284
- }
1285
- setPointerParallaxEnabled(enabled) {
1286
- this.pointerParallaxEnabled = enabled;
1287
- if (!enabled) {
1288
- this.pointerParallaxTarget.set(0, 0);
1289
- }
1290
- }
1291
- setPointerParallaxTarget(x, y) {
1292
- this.pointerParallaxTarget.set(THREE.MathUtils.clamp(x, -1, 1), THREE.MathUtils.clamp(y, -1, 1));
1293
- }
1294
- resetPointerParallax() {
1295
- this.pointerParallaxTarget.set(0, 0);
1296
- }
1297
- setDragOrbitTarget(yaw, pitch) {
1298
- this.dragOrbitTarget.set(THREE.MathUtils.clamp(yaw, -0.6, 0.6), THREE.MathUtils.clamp(pitch, -0.35, 0.35));
1299
- }
1300
- resetDragOrbit() {
1301
- this.dragOrbitTarget.set(0, 0);
1302
- }
1303
- setCompanionZoomNormalized(value) {
1304
- this.companionZoomTarget = THREE.MathUtils.clamp(value, 0, 1);
1305
- }
1306
- async setWorldUrl(url) {
1307
- await this.whenReady();
1308
- if (!this.scene)
1309
- return;
1310
- const normalizedUrl = url?.trim() ? url : null;
1311
- if (this.worldUrl === normalizedUrl && this.worldMesh)
1312
- return;
1313
- const requestId = ++this.worldLoadRequestId;
1314
- this.worldUrl = normalizedUrl;
1315
- this.cancelWorldReveal();
1316
- const outgoingWorld = this.worldMesh;
1317
- if (!normalizedUrl) {
1318
- this.disposeWorld();
1319
- return;
1320
- }
1321
- await this.ensureSparkRenderer();
1322
- // Re-check after async — the engine may have been disposed during the
1323
- // await (e.g. React StrictMode double-mount or rapid navigation).
1324
- if (!this.scene || this.loadingAborted || requestId !== this.worldLoadRequestId)
1325
- return;
1326
- const spark = await this.loadSparkModule();
1327
- if (!this.scene || this.loadingAborted || requestId !== this.worldLoadRequestId)
1328
- return;
1329
- const { SplatMesh } = spark;
1330
- let worldAnchor = new THREE.Vector3(0, 0, 0);
1331
- let worldRevealRadius = 1;
1332
- const splat = new SplatMesh({
1333
- url: normalizedUrl,
1334
- constructSplats: (packedSplats) => {
1335
- worldAnchor = getRobustPackedSplatAnchor(packedSplats);
1336
- worldRevealRadius = getRobustPackedSplatRadialExtent(packedSplats, worldAnchor);
1337
- },
1338
- });
1339
- splat.frustumCulled = false;
1340
- splat.quaternion.identity();
1341
- splat.position.set(0, 0, 0);
1342
- splat.scale.setScalar(COMPANION_WORLD_SCALE);
1343
- this.scene.add(splat);
1344
- await splat.initialized;
1345
- if (this.loadingAborted ||
1346
- !this.scene ||
1347
- requestId !== this.worldLoadRequestId) {
1348
- splat.parent?.remove(splat);
1349
- splat.dispose();
1350
- return;
1351
- }
1352
- const worldCenterBottom = worldAnchor.lengthSq() > 0 ? worldAnchor : getRobustSplatAnchor(splat);
1353
- const worldFloorOffsetY = getCompanionWorldFloorOffsetY(normalizedUrl);
1354
- splat.position.set(-worldCenterBottom.x * COMPANION_WORLD_SCALE, -worldCenterBottom.y * COMPANION_WORLD_SCALE + worldFloorOffsetY, -worldCenterBottom.z * COMPANION_WORLD_SCALE);
1355
- const syncToTeleport = this.revealStarted && this.teleportProgress < 0.999;
1356
- const waitingForVrm = !outgoingWorld && !this.vrmReady;
1357
- const incomingRevealRadius = Math.max(worldRevealRadius * COMPANION_WORLD_SCALE, getRobustSplatRadialExtent(splat, worldCenterBottom) *
1358
- COMPANION_WORLD_SCALE);
1359
- let outgoingAnchor = null;
1360
- let sharedRevealRadius = incomingRevealRadius;
1361
- if (outgoingWorld && !waitingForVrm) {
1362
- outgoingAnchor = getRobustSplatAnchor(outgoingWorld);
1363
- sharedRevealRadius = Math.max(sharedRevealRadius, getRobustSplatRadialExtent(outgoingWorld, outgoingAnchor) *
1364
- COMPANION_WORLD_SCALE);
1365
- }
1366
- const worldReveal = this.createWorldRevealController(spark, splat, {
1367
- origin: worldCenterBottom,
1368
- radius: sharedRevealRadius,
1369
- }, "reveal");
1370
- this.worldMesh = splat;
1371
- if (worldReveal) {
1372
- let outgoingReveal = null;
1373
- if (outgoingWorld && outgoingAnchor && !waitingForVrm) {
1374
- outgoingReveal = this.createWorldRevealController(spark, outgoingWorld, {
1375
- origin: outgoingAnchor,
1376
- radius: sharedRevealRadius,
1377
- }, "hide");
1378
- if (!outgoingReveal) {
1379
- this.disposeSplatMesh(outgoingWorld);
1380
- }
1381
- }
1382
- this.queueWorldReveal(worldReveal, {
1383
- outgoing: outgoingReveal,
1384
- duration: COMPANION_WORLD_REVEAL_DURATION,
1385
- waitingForVrm,
1386
- syncToTeleport,
1387
- initialProgress: syncToTeleport ? this.teleportProgress : 0,
1388
- });
1389
- }
1390
- else {
1391
- this.disposeSplatMesh(outgoingWorld);
1392
- }
1393
- }
1394
- async playEmote(path, duration, loop) {
1395
- const vrm = this.vrm;
1396
- const mixer = this.mixer;
1397
- if (!vrm || !mixer)
1398
- return;
1399
- this.clearPendingEmoteCompletion();
1400
- this.emoteRequestId++;
1401
- const requestId = this.emoteRequestId;
1402
- const currentAction = this.emoteAction;
1403
- const blendSource = currentAction ?? this.idleAction;
1404
- const clip = await this.loadEmoteClipCached(path, vrm);
1405
- if (!clip || this.vrm !== vrm || this.mixer !== mixer)
1406
- return;
1407
- if (this.emoteRequestId !== requestId)
1408
- return;
1409
- const action = mixer.clipAction(clip);
1410
- action.setLoop(loop ? THREE.LoopRepeat : THREE.LoopOnce, loop ? Infinity : 1);
1411
- action.clampWhenFinished = !loop;
1412
- const fadeDuration = 0.4;
1413
- this.playActionWithBlend(action, blendSource, fadeDuration);
1414
- this.emoteAction = action;
1415
- if (!loop) {
1416
- const clipDuration = Number.isFinite(duration) && duration > 0 ? duration : clip.duration;
1417
- this.watchOneShotEmoteCompletion(mixer, action, requestId, clipDuration);
1418
- }
1419
- }
1420
- stopEmote() {
1421
- this.clearPendingEmoteCompletion();
1422
- const fadeDuration = 0.4;
1423
- const activeEmote = this.emoteAction;
1424
- this.emoteAction = null;
1425
- if (this.idleAction) {
1426
- this.activateAction(this.idleAction);
1427
- if (activeEmote && activeEmote !== this.idleAction) {
1428
- this.idleAction.crossFadeFrom(activeEmote, fadeDuration, false);
1429
- }
1430
- else {
1431
- this.idleAction.fadeIn(fadeDuration);
1432
- }
1433
- return;
1434
- }
1435
- if (this.vrm && this.mixer) {
1436
- this.restoreIdleAfterEmote(activeEmote, fadeDuration, this.vrm, this.mixer);
1437
- return;
1438
- }
1439
- activeEmote?.fadeOut(fadeDuration);
1440
- }
1441
- /** Play a one-shot wave greeting after the VRM becomes visible. */
1442
- playWaveGreeting() {
1443
- this.playEmote("animations/emotes/waving-both-hands.glb.gz", 3, false);
1444
- }
1445
- async loadVrmFromUrl(url, name) {
1446
- await this.whenReady();
1447
- if (!this.scene)
1448
- throw new Error("VrmEngine not initialized");
1449
- if (!this.camera)
1450
- throw new Error("VrmEngine not initialized");
1451
- if (this.loadingAborted)
1452
- return;
1453
- const requestId = ++this.vrmLoadRequestId;
1454
- const hadPreviousVrm = this.vrm !== null;
1455
- if (this.vrm) {
1456
- this.vrm.scene.parent?.remove(this.vrm.scene);
1457
- VRMUtils.deepDispose(this.vrm.scene);
1458
- this.vrm = null;
1459
- this.vrmReady = false;
1460
- this.vrmName = null;
1461
- this.mixer = null;
1462
- this.idleAction = null;
1463
- this.idleLoadPromise = null;
1464
- this.revealStarted = false;
1465
- this.cleanupTeleportSparkles();
1466
- this.stopEmote();
1467
- this.emoteClipCache.clear();
1468
- }
1469
- this.lastLoadError = null;
1470
- this.loadingProgress = 0;
1471
- this.onUpdate?.();
1472
- const loader = new GLTFLoader();
1473
- configureVrmGltfLoader(loader);
1474
- const webGpuNodes = this.rendererBackend === "webgpu"
1475
- ? await import("@pixiv/three-vrm/nodes")
1476
- : null;
1477
- loader.register((parser) => {
1478
- if (webGpuNodes) {
1479
- const mtoonMaterialPlugin = new MToonMaterialLoaderPlugin(parser, {
1480
- materialType: webGpuNodes.MToonNodeMaterial,
1481
- });
1482
- return new VRMLoaderPlugin(parser, { mtoonMaterialPlugin });
1483
- }
1484
- return new VRMLoaderPlugin(parser);
1485
- });
1486
- let gltf;
1487
- try {
1488
- gltf = await loadGltfAsset(loader, url, (progress) => {
1489
- if (this.vrmLoadRequestId === requestId && !this.loadingAborted) {
1490
- this.loadingProgress = progress;
1491
- this.onUpdate?.();
1492
- }
1493
- });
1494
- }
1495
- catch (error) {
1496
- if (!this.loadingAborted && requestId === this.vrmLoadRequestId) {
1497
- this.lastLoadError =
1498
- error instanceof Error ? error.message : String(error);
1499
- this.onUpdate?.();
1500
- }
1501
- throw error;
1502
- }
1503
- if (this.loadingAborted ||
1504
- !this.scene ||
1505
- requestId !== this.vrmLoadRequestId) {
1506
- const staleVrm = gltf.userData.vrm;
1507
- if (staleVrm)
1508
- VRMUtils.deepDispose(staleVrm.scene);
1509
- return;
1510
- }
1511
- const vrm = gltf.userData.vrm;
1512
- if (!vrm)
1513
- throw new Error("Loaded asset is not a VRM");
1514
- VRMUtils.removeUnnecessaryVertices(vrm.scene);
1515
- if (this.camera) {
1516
- if (hadPreviousVrm) {
1517
- this.transitionCameraToFramedAvatar(vrm, AVATAR_SWITCH_CAMERA_TRANSITION_DURATION_SECONDS);
1518
- }
1519
- else {
1520
- this.cameraManager.centerAndFrame(vrm, this.camera, this.controls, this.cameraProfile, this.lookAtTarget, this.baseCameraPosition, (c) => this.cameraManager.applyInteractionMode(c, this.interactionMode));
1521
- }
1522
- }
1523
- try {
1524
- VRMUtils.rotateVRM0(vrm);
1525
- }
1526
- catch {
1527
- /* optional in some versions */
1528
- }
1529
- this.cameraManager.ensureFacingCamera(vrm, this.camera);
1530
- this.configureAvatarLookTracking(vrm);
1531
- if (this.loadingAborted ||
1532
- !this.scene ||
1533
- requestId !== this.vrmLoadRequestId) {
1534
- VRMUtils.deepDispose(vrm.scene);
1535
- return;
1536
- }
1537
- vrm.scene.visible = false;
1538
- vrm.scene.traverse((obj) => {
1539
- obj.frustumCulled = false;
1540
- });
1541
- const avatarParent = this.avatarRoot ?? this.scene;
1542
- avatarParent.add(vrm.scene);
1543
- this.vrm = vrm;
1544
- this.vrmName = name ?? null;
1545
- this.lastLoadError = null;
1546
- vrm.springBoneManager?.reset?.();
1547
- this.blinkController.reset();
1548
- try {
1549
- await this.loadAndPlayIdle(vrm);
1550
- if (!this.loadingAborted && this.vrm === vrm) {
1551
- this.vrmReady = true;
1552
- // Let the idle animation settle into a natural pose before revealing
1553
- await new Promise((resolve) => setTimeout(resolve, 300));
1554
- if (this.loadingAborted || this.vrm !== vrm)
1555
- return;
1556
- await this.playTeleportReveal(vrm);
1557
- vrm.scene.visible = true;
1558
- this.startPendingWorldReveal(true);
1559
- this.playWaveGreeting();
1560
- }
1561
- }
1562
- catch {
1563
- if (!this.loadingAborted && this.vrm === vrm) {
1564
- this.vrmReady = true;
1565
- vrm.scene.visible = true;
1566
- this.startPendingWorldReveal(false);
1567
- }
1568
- }
1569
- }
1570
- async playTeleportReveal(vrm) {
1571
- this.teleportProgress = 0.0;
1572
- this.revealStarted = true;
1573
- this.cleanupTeleportDissolve();
1574
- this.startTeleportSparkles(vrm);
1575
- let appliedNodeDissolve = false;
1576
- try {
1577
- const tsl = await import("three/tsl");
1578
- const uProgress = tsl.uniform(0.0);
1579
- this.teleportProgressUniform = uProgress;
1580
- vrm.scene.traverse((obj) => {
1581
- if (!(obj instanceof THREE.Mesh))
1582
- return;
1583
- const mats = Array.isArray(obj.material)
1584
- ? obj.material
1585
- : [obj.material];
1586
- for (const mat of mats) {
1587
- if (!mat.isNodeMaterial || mat.userData._dissolveApplied)
1588
- continue;
1589
- appliedNodeDissolve = true;
1590
- mat.userData._dissolveApplied = true;
1591
- mat.userData._origOpacityNode = mat.opacityNode ?? null;
1592
- mat.userData._origEmissiveNode =
1593
- mat.emissiveNode ?? null;
1594
- mat.userData._origAlphaTest = mat.alphaTest;
1595
- // World-space Y from TSL
1596
- const worldY = tsl.positionWorld.y;
1597
- // Sweep threshold starts 1m lower than before.
1598
- const threshold = uProgress
1599
- .mul(TELEPORT_DISSOLVE_END_Y - TELEPORT_DISSOLVE_START_Y)
1600
- .add(TELEPORT_DISSOLVE_START_Y);
1601
- // Distance above dissolve line
1602
- const diff = worldY.sub(threshold);
1603
- // Dither noise using a hash of world position
1604
- const noiseCoord = tsl.vec2(worldY.mul(40.0), tsl.positionWorld.x.add(tsl.positionWorld.z).mul(30.0));
1605
- const noise = tsl.fract(tsl
1606
- .sin(tsl.dot(noiseCoord, tsl.vec2(12.9898, 78.233)))
1607
- .mul(43758.5453));
1608
- // Ratio: 0 = fully visible, 1 = fully hidden (wider zone = 0.3)
1609
- const ratio = diff.div(0.3).clamp(0.0, 1.0);
1610
- // Dithered alpha: visible when noise >= ratio
1611
- const dissolveAlpha = tsl.step(ratio, noise);
1612
- // --- Holographic glow at the dissolve edge ---
1613
- // Glow is strongest right at the dissolve boundary
1614
- const edgeDist = diff.abs();
1615
- const glowWidth = tsl.float(0.15);
1616
- const glowIntensity = tsl
1617
- .float(1.0)
1618
- .sub(edgeDist.div(glowWidth).clamp(0.0, 1.0));
1619
- // Holographic color: cyan-magenta shift based on world position
1620
- const hueShift = tsl.fract(worldY.mul(3.0).add(uProgress.mul(2.0)));
1621
- const holoR = tsl
1622
- .smoothstep(tsl.float(0.3), tsl.float(0.7), hueShift)
1623
- .mul(0.8)
1624
- .add(0.2);
1625
- const holoG = tsl.float(0.9);
1626
- const holoB = tsl
1627
- .smoothstep(tsl.float(0.7), tsl.float(0.3), hueShift)
1628
- .mul(0.8)
1629
- .add(0.2);
1630
- const holoColor = tsl.vec3(holoR, holoG, holoB);
1631
- // Only show glow when dissolve is active and fragment is visible
1632
- const glowActive = tsl
1633
- .step(tsl.float(0.001), uProgress)
1634
- .mul(tsl.float(1.0).sub(tsl.step(tsl.float(0.999), uProgress)));
1635
- const emissiveBoost = holoColor.mul(glowIntensity.mul(3.0).mul(glowActive).mul(dissolveAlpha));
1636
- // Compose with existing nodes
1637
- const origOpacity = mat.opacityNode;
1638
- mat.opacityNode = origOpacity
1639
- ? (origOpacity.mul(dissolveAlpha) ?? dissolveAlpha)
1640
- : dissolveAlpha;
1641
- const matWithEmissive = mat;
1642
- const origEmissive = matWithEmissive.emissiveNode;
1643
- matWithEmissive.emissiveNode = origEmissive
1644
- ? origEmissive.add(emissiveBoost)
1645
- : emissiveBoost;
1646
- mat.alphaTest = 0.01;
1647
- mat.transparent = true;
1648
- mat.needsUpdate = true;
1649
- this.teleportDissolvedMaterials.push(mat);
1650
- }
1651
- });
1652
- }
1653
- catch (err) {
1654
- console.warn("[VrmEngine] TSL dissolve unavailable, showing instantly:", err);
1655
- }
1656
- if (!appliedNodeDissolve) {
1657
- this.applyTeleportFallbackDissolve(vrm);
1658
- }
1659
- }
1660
- applyTeleportFallbackDissolve(vrm) {
1661
- vrm.scene.traverse((obj) => {
1662
- if (!(obj instanceof THREE.Mesh))
1663
- return;
1664
- const mats = Array.isArray(obj.material) ? obj.material : [obj.material];
1665
- for (const mat of mats) {
1666
- if (mat.userData._dissolveApplied)
1667
- continue;
1668
- mat.userData._dissolveApplied = true;
1669
- mat.userData._origTransparent = mat.transparent;
1670
- mat.userData._origAlphaTest = mat.alphaTest;
1671
- mat.userData._origOnBeforeCompile = mat.onBeforeCompile;
1672
- mat.userData._origCustomProgramCacheKey = mat.customProgramCacheKey;
1673
- const shaderRef = {
1674
- uniforms: { uTeleportProgress: { value: this.teleportProgress } },
1675
- };
1676
- this.teleportFallbackShaders.push(shaderRef);
1677
- mat.transparent = true;
1678
- mat.alphaTest = Math.max(mat.alphaTest ?? 0, 0.01);
1679
- mat.onBeforeCompile = (shader) => {
1680
- shader.uniforms.uTeleportProgress =
1681
- shaderRef.uniforms.uTeleportProgress;
1682
- shader.vertexShader = `
1683
- varying vec3 vTeleportWorldPosition;
1684
- ${shader.vertexShader}
1685
- `.replace("#include <worldpos_vertex>", `#include <worldpos_vertex>
1686
- vTeleportWorldPosition = worldPosition.xyz;`);
1687
- shader.fragmentShader = `
1688
- uniform float uTeleportProgress;
1689
- varying vec3 vTeleportWorldPosition;
1690
- float teleportNoiseHash(vec2 p) {
1691
- return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453);
1692
- }
1693
- ${shader.fragmentShader}
1694
- `.replace("#include <alphatest_fragment>", `float teleportThreshold = mix(${TELEPORT_DISSOLVE_START_Y.toFixed(1)}, ${TELEPORT_DISSOLVE_END_Y.toFixed(1)}, uTeleportProgress);
1695
- float teleportDiff = vTeleportWorldPosition.y - teleportThreshold;
1696
- float teleportRatio = clamp(teleportDiff / 0.3, 0.0, 1.0);
1697
- float teleportNoise = teleportNoiseHash(vec2(
1698
- vTeleportWorldPosition.y * 40.0,
1699
- (vTeleportWorldPosition.x + vTeleportWorldPosition.z) * 30.0
1700
- ));
1701
- if (teleportNoise < teleportRatio) discard;
1702
- #include <alphatest_fragment>`);
1703
- const originalOnBeforeCompile = mat.userData._origOnBeforeCompile;
1704
- if (typeof originalOnBeforeCompile === "function") {
1705
- originalOnBeforeCompile(shader, this.renderer);
1706
- }
1707
- };
1708
- mat.customProgramCacheKey = () => `${mat.type}:teleport-dissolve-fallback`;
1709
- mat.needsUpdate = true;
1710
- this.teleportDissolvedMaterials.push(mat);
1711
- }
1712
- });
1713
- }
1714
- startTeleportSparkles(vrm) {
1715
- const parent = this.avatarRoot ?? this.scene;
1716
- if (!parent)
1717
- return;
1718
- this.cleanupTeleportSparkles();
1719
- const bounds = new THREE.Box3().setFromObject(vrm.scene);
1720
- const center = bounds.getCenter(new THREE.Vector3());
1721
- const size = bounds.getSize(new THREE.Vector3());
1722
- const sparkleGroup = new THREE.Group();
1723
- sparkleGroup.position.set(center.x, bounds.min.y + 0.06, center.z);
1724
- parent.add(sparkleGroup);
1725
- const texture = getTeleportSparkleTexture();
1726
- const particleHeight = THREE.MathUtils.clamp(size.y * 0.82, 0.95, 1.75);
1727
- const particles = [];
1728
- for (let index = 0; index < TELEPORT_SPARKLE_PARTICLE_COUNT; index += 1) {
1729
- const hue = 0.52 + Math.random() * 0.08;
1730
- const material = new THREE.SpriteMaterial({
1731
- map: texture,
1732
- color: new THREE.Color().setHSL(hue, 0.85, 0.72),
1733
- transparent: true,
1734
- opacity: 0,
1735
- depthWrite: false,
1736
- blending: THREE.AdditiveBlending,
1737
- });
1738
- const sprite = new THREE.Sprite(material);
1739
- sprite.visible = false;
1740
- sparkleGroup.add(sprite);
1741
- const duration = 0.3 + Math.random() * 0.32;
1742
- const maxStart = Math.max(0.02, 0.92 - duration);
1743
- particles.push({
1744
- sprite,
1745
- material,
1746
- baseAngle: (index / TELEPORT_SPARKLE_PARTICLE_COUNT) * Math.PI * 2 +
1747
- (Math.random() - 0.5) * 0.55,
1748
- baseRadius: (0.18 + Math.random() * 0.82) * TELEPORT_SPARKLE_RING_RADIUS,
1749
- height: particleHeight * (0.55 + Math.random() * 0.55),
1750
- start: Math.random() * maxStart,
1751
- duration,
1752
- spin: (1.8 + Math.random() * 3.6) * (Math.random() > 0.5 ? 1 : -1),
1753
- wobble: 0.02 + Math.random() * 0.08,
1754
- wobbleSpeed: 8 + Math.random() * 12,
1755
- baseSize: TELEPORT_SPARKLE_MIN_SIZE +
1756
- Math.random() *
1757
- (TELEPORT_SPARKLE_MAX_SIZE - TELEPORT_SPARKLE_MIN_SIZE),
1758
- });
1759
- }
1760
- this.teleportSparkles = {
1761
- group: sparkleGroup,
1762
- particles,
1763
- };
1764
- this.updateTeleportSparkles();
1765
- }
1766
- updateTeleportSparkles() {
1767
- const system = this.teleportSparkles;
1768
- if (!system)
1769
- return;
1770
- const progress = THREE.MathUtils.clamp(this.teleportProgress, 0, 1);
1771
- let anyVisible = false;
1772
- for (const particle of system.particles) {
1773
- const localProgress = THREE.MathUtils.clamp((progress - particle.start) / particle.duration, 0, 1);
1774
- if (localProgress <= 0 || localProgress >= 1) {
1775
- particle.material.opacity = 0;
1776
- particle.sprite.visible = false;
1777
- continue;
1778
- }
1779
- anyVisible = true;
1780
- const rise = 1 - (1 - localProgress) ** 2;
1781
- const angle = particle.baseAngle + progress * Math.PI * 2 * particle.spin;
1782
- const wobblePhase = progress * particle.wobbleSpeed + particle.baseAngle;
1783
- const wobbleOffset = Math.sin(wobblePhase) * particle.wobble;
1784
- const radial = particle.baseRadius * (1 - 0.48 * rise);
1785
- const x = Math.cos(angle) * radial + wobbleOffset;
1786
- const z = Math.sin(angle) * radial + Math.cos(wobblePhase) * particle.wobble;
1787
- const y = 0.08 +
1788
- particle.height * rise +
1789
- Math.sin(progress * 10 + particle.baseAngle * 3) * 0.04;
1790
- const opacity = Math.sin(localProgress * Math.PI) *
1791
- (0.72 + 0.28 * Math.sin(progress * 22 + particle.baseAngle * 5));
1792
- const scale = particle.baseSize * (0.7 + (1 - localProgress) * 1.15);
1793
- particle.sprite.visible = opacity > 0.01;
1794
- particle.sprite.position.set(x, y, z);
1795
- particle.sprite.scale.setScalar(scale);
1796
- particle.material.opacity = opacity;
1797
- }
1798
- if (!anyVisible && progress >= 1) {
1799
- this.cleanupTeleportSparkles();
1800
- }
1801
- }
1802
- cleanupTeleportDissolve() {
1803
- for (const mat of this.teleportDissolvedMaterials) {
1804
- if (mat.userData._dissolveApplied) {
1805
- if (mat.userData._origOpacityNode !== undefined) {
1806
- mat.opacityNode =
1807
- mat.userData._origOpacityNode ?? null;
1808
- }
1809
- if (mat.userData._origEmissiveNode !== undefined) {
1810
- mat.emissiveNode =
1811
- mat.userData._origEmissiveNode ?? null;
1812
- }
1813
- mat.alphaTest = mat.userData._origAlphaTest ?? 0;
1814
- mat.transparent = mat.userData._origTransparent ?? mat.transparent;
1815
- mat.onBeforeCompile =
1816
- mat.userData._origOnBeforeCompile ?? mat.onBeforeCompile;
1817
- mat.customProgramCacheKey =
1818
- mat.userData._origCustomProgramCacheKey ?? mat.customProgramCacheKey;
1819
- delete mat.userData._dissolveApplied;
1820
- delete mat.userData._origOpacityNode;
1821
- delete mat.userData._origEmissiveNode;
1822
- delete mat.userData._origAlphaTest;
1823
- delete mat.userData._origTransparent;
1824
- delete mat.userData._origOnBeforeCompile;
1825
- delete mat.userData._origCustomProgramCacheKey;
1826
- mat.needsUpdate = true;
1827
- }
1828
- }
1829
- this.teleportDissolvedMaterials = [];
1830
- this.teleportProgressUniform = null;
1831
- this.teleportFallbackShaders = [];
1832
- }
1833
- cleanupTeleportSparkles() {
1834
- if (!this.teleportSparkles)
1835
- return;
1836
- for (const particle of this.teleportSparkles.particles) {
1837
- particle.sprite.parent?.remove(particle.sprite);
1838
- particle.material.dispose();
1839
- }
1840
- this.teleportSparkles.group.parent?.remove(this.teleportSparkles.group);
1841
- this.teleportSparkles = null;
1842
- }
1843
- get animationLoaderContext() {
1844
- return {
1845
- isAborted: () => this.loadingAborted,
1846
- isCurrentVrm: (vrm) => this.vrm === vrm,
1847
- };
1848
- }
1849
- loop() {
1850
- if (this.paused)
1851
- return;
1852
- this.scheduleNextFrame();
1853
- const renderer = this.renderer;
1854
- const scene = this.scene;
1855
- const camera = this.camera;
1856
- if (!renderer || !scene || !camera)
1857
- return;
1858
- const rawDelta = this.clock.getDelta();
1859
- const stableDelta = Math.min(rawDelta, 1 / 30);
1860
- this.elapsedTime += rawDelta;
1861
- this.mixer?.update(rawDelta);
1862
- if (this.vrm) {
1863
- if (this.teleportProgress < 1.0) {
1864
- this.teleportProgress += stableDelta * 2.0; // ~0.5 seconds duration
1865
- if (this.teleportProgress > 1.0)
1866
- this.teleportProgress = 1.0;
1867
- if (this.teleportProgressUniform) {
1868
- this.teleportProgressUniform.value = this.teleportProgress;
1869
- }
1870
- for (const shader of this.teleportFallbackShaders) {
1871
- shader.uniforms.uTeleportProgress.value = this.teleportProgress;
1872
- }
1873
- if (this.teleportProgress >= 1.0) {
1874
- this.cleanupTeleportDissolve();
1875
- this.cleanupTeleportSparkles();
1876
- // Notify the app that the teleport-in animation has finished
1877
- if (typeof window !== "undefined") {
1878
- window.dispatchEvent(new CustomEvent("eliza:vrm-teleport-complete"));
1879
- }
1880
- }
1881
- }
1882
- this.updateTeleportSparkles();
1883
- this.applyMouthToVrm(this.vrm);
1884
- const blinkValue = this.blinkController.update(rawDelta);
1885
- this.vrm.expressionManager?.setValue("blink", blinkValue);
1886
- }
1887
- this.updateWorldReveal(stableDelta);
1888
- // Process camera transition
1889
- if (this.isCameraTransitioning) {
1890
- this.transitionProgress += stableDelta / this.transitionDuration;
1891
- let finished = false;
1892
- if (this.transitionProgress >= 1.0) {
1893
- this.transitionProgress = 1.0;
1894
- this.isCameraTransitioning = false;
1895
- finished = true;
1896
- }
1897
- // Smooth step easing
1898
- const t = this.transitionProgress;
1899
- const ease = t * t * (3.0 - 2.0 * t);
1900
- camera.position.lerpVectors(this.transitionStartPos, this.transitionTargetPos, ease);
1901
- this.baseCameraPosition.copy(camera.position);
1902
- this.lookAtTarget.lerpVectors(this.transitionStartLookAt, this.transitionTargetLookAt, ease);
1903
- camera.fov = THREE.MathUtils.lerp(this.transitionStartFov, this.transitionTargetFov, ease);
1904
- camera.updateProjectionMatrix();
1905
- if (this.controls) {
1906
- this.controls.target.copy(this.lookAtTarget);
1907
- if (finished) {
1908
- this.controls.update(); // Sync once at the very end when bounds match
1909
- }
1910
- }
1911
- }
1912
- const manualCameraActive = this.interactionEnabled;
1913
- if (!manualCameraActive &&
1914
- this.cameraAnimation.enabled &&
1915
- this.baseCameraPosition.length() > 0 &&
1916
- !this.isCameraTransitioning) {
1917
- this.cameraManager.applyCameraMotion(camera, this.baseCameraPosition, this.lookAtTarget, this.cameraAnimation, this.elapsedTime);
1918
- }
1919
- const dragOrbitFollow = Math.min(1, stableDelta * 9);
1920
- this.dragOrbitCurrent.lerp(this.dragOrbitTarget, dragOrbitFollow);
1921
- if (this.dragOrbitCurrent.lengthSq() > 1e-6 &&
1922
- this.baseCameraPosition.lengthSq() > 1e-6) {
1923
- const orbitOffset = this.tempCameraOrbitOffset
1924
- .copy(camera.position)
1925
- .sub(this.lookAtTarget);
1926
- if (orbitOffset.lengthSq() > 1e-6) {
1927
- const spherical = this.tempCameraSpherical.setFromVector3(orbitOffset);
1928
- spherical.theta += this.dragOrbitCurrent.x;
1929
- spherical.phi = THREE.MathUtils.clamp(spherical.phi + this.dragOrbitCurrent.y, 0.2, Math.PI - 0.2);
1930
- orbitOffset.setFromSpherical(spherical);
1931
- camera.position.copy(this.lookAtTarget).add(orbitOffset);
1932
- }
1933
- }
1934
- this.applyCompanionZoom(camera, stableDelta);
1935
- this.updateSparkPerformanceProfile();
1936
- if (this.pointerParallaxEnabled) {
1937
- const follow = Math.min(1, stableDelta * 7.5);
1938
- this.pointerParallaxCurrent.lerp(this.pointerParallaxTarget, follow);
1939
- this.pointerParallaxPosition.set(this.pointerParallaxCurrent.x * 0.18, this.pointerParallaxCurrent.y * 0.12, 0);
1940
- camera.position.add(this.pointerParallaxPosition);
1941
- this.pointerParallaxLookAt
1942
- .copy(this.lookAtTarget)
1943
- .add(new THREE.Vector3(this.pointerParallaxCurrent.x * 0.08, this.pointerParallaxCurrent.y * 0.05, 0));
1944
- }
1945
- else {
1946
- this.pointerParallaxCurrent.lerp(this.pointerParallaxTarget, 0.12);
1947
- this.pointerParallaxLookAt.copy(this.lookAtTarget);
1948
- }
1949
- if (this.controls) {
1950
- if (manualCameraActive && !this.isCameraTransitioning) {
1951
- this.controls.update();
1952
- this.lookAtTarget.copy(this.controls.target);
1953
- }
1954
- else if (!this.isCameraTransitioning) {
1955
- this.controls.target.copy(this.lookAtTarget);
1956
- }
1957
- }
1958
- if (!manualCameraActive || this.isCameraTransitioning) {
1959
- camera.lookAt(this.pointerParallaxLookAt);
1960
- }
1961
- if (this.vrm) {
1962
- this.updateAvatarLookTarget(camera, stableDelta);
1963
- this.vrm.update(stableDelta);
1964
- this.applyAvatarHeadTracking(camera, stableDelta);
1965
- this.refreshAvatarEyeTracking();
1966
- }
1967
- this.updateSparkDepthOfField(camera);
1968
- renderer.render(scene, camera);
1969
- this.onUpdate?.();
1970
- }
1971
- disposeWorld() {
1972
- if (this.sparkRenderer) {
1973
- this.sparkRenderer.apertureAngle = 0;
1974
- }
1975
- this.cancelWorldReveal();
1976
- this.disposeSplatMesh(this.worldMesh);
1977
- this.worldMesh = null;
1978
- }
1979
- async loadAndPlayIdle(vrm) {
1980
- if (this.loadingAborted)
1981
- return;
1982
- const mixer = this.mixer ?? new THREE.AnimationMixer(vrm.scene);
1983
- this.mixer = mixer;
1984
- const action = await this.ensureIdleAction(vrm, mixer);
1985
- if (!action)
1986
- return;
1987
- action.fadeIn(0.25);
1988
- action.play();
1989
- mixer.update(1 / 60);
1990
- }
1991
- async loadEmoteClipCached(path, vrm) {
1992
- const cached = this.emoteClipCache.get(path);
1993
- if (cached)
1994
- return cached;
1995
- const clip = await loadEmoteClip(path, vrm, this.animationLoaderContext);
1996
- if (clip) {
1997
- this.emoteClipCache.set(path, clip);
1998
- }
1999
- return clip;
2000
- }
2001
- applyMouthToVrm(vrm) {
2002
- const manager = vrm.expressionManager;
2003
- if (!manager)
2004
- return;
2005
- let target;
2006
- if (this.speaking) {
2007
- const elapsed = this.elapsedTime - this.speakingStartTime;
2008
- const base = Math.sin(elapsed * 12) * 0.3 + 0.4;
2009
- const detail = Math.sin(elapsed * 18.7) * 0.15;
2010
- const slow = Math.sin(elapsed * 4.2) * 0.1;
2011
- target = Math.max(0, Math.min(1, base + detail + slow));
2012
- }
2013
- else {
2014
- target = this.mouthValue;
2015
- }
2016
- const next = Math.max(0, Math.min(1, target));
2017
- const alpha = next > this.mouthSmoothed ? 0.3 : 0.2;
2018
- this.mouthSmoothed = this.mouthSmoothed * (1 - alpha) + next * alpha;
2019
- manager.setValue("aa", this.mouthSmoothed);
2020
- }
2021
- /**
2022
- * Capture a single-frame snapshot of the current VRM as a PNG Blob.
2023
- *
2024
- * When `disablePhysics` is true (the default), spring bone simulation is
2025
- * frozen for the capture frame so hair and cloth render in their rest pose,
2026
- * then restored afterwards. The render loop is paused during capture to
2027
- * prevent physics from re-running between reset and canvas capture.
2028
- */
2029
- async snapshot(options) {
2030
- const renderer = this.renderer;
2031
- const scene = this.scene;
2032
- const camera = this.camera;
2033
- if (!renderer || !scene || !camera)
2034
- return null;
2035
- const canvas = renderer.domElement;
2036
- if (!canvas)
2037
- return null;
2038
- const disablePhysics = options?.disablePhysics ?? true;
2039
- const width = options?.width ?? canvas.width;
2040
- const height = options?.height ?? canvas.height;
2041
- // Pause the render loop so physics doesn't re-run between reset and capture
2042
- const wasPaused = this.paused;
2043
- this.setPaused(true);
2044
- // Cancel any pending animation frame to ensure the loop truly stops
2045
- if (this.animationFrameId !== null) {
2046
- cancelAnimationFrame(this.animationFrameId);
2047
- this.animationFrameId = null;
2048
- }
2049
- // Reset spring bones to rest pose (hair/cloth at initial position)
2050
- const springBoneManager = this.vrm?.springBoneManager ?? null;
2051
- if (disablePhysics && springBoneManager) {
2052
- springBoneManager.reset?.();
2053
- }
2054
- // Resize renderer for the capture resolution
2055
- const prevWidth = canvas.width;
2056
- const prevHeight = canvas.height;
2057
- renderer.setPixelRatio(1);
2058
- renderer.setSize(width, height);
2059
- camera.aspect = width / height;
2060
- camera.updateProjectionMatrix();
2061
- // Update VRM transforms without physics
2062
- if (this.vrm) {
2063
- if (disablePhysics && springBoneManager) {
2064
- // Update only the humanoid/expression without spring bones
2065
- this.vrm.humanoid?.update?.();
2066
- this.vrm.expressionManager?.update?.();
2067
- }
2068
- else {
2069
- this.vrm.update(0);
2070
- }
2071
- }
2072
- // Render the frame (synchronous — captures immediately to canvas)
2073
- renderer.render(scene, camera);
2074
- // Capture the canvas
2075
- const blob = await new Promise((resolve) => {
2076
- canvas.toBlob((b) => resolve(b), "image/png");
2077
- });
2078
- // Restore previous renderer state
2079
- renderer.setPixelRatio(window.devicePixelRatio ?? 1);
2080
- renderer.setSize(prevWidth, prevHeight);
2081
- camera.aspect = prevWidth / prevHeight;
2082
- camera.updateProjectionMatrix();
2083
- // Restore paused state — resume the render loop
2084
- this.setPaused(wasPaused);
2085
- return blob;
2086
- }
2087
- }