@elizaos/app-core 2.0.0-beta.3 → 2.0.3-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1466) hide show
  1. package/agent-bridge.d.ts +27 -0
  2. package/agent-bridge.d.ts.map +1 -0
  3. package/agent-bridge.js +26 -0
  4. package/api/__tests__/sandbox-test-helpers.js +1 -1
  5. package/api/auth/audit.d.ts +1 -1
  6. package/api/auth/audit.js +1 -1
  7. package/api/auth/auth-context.d.ts +1 -1
  8. package/api/auth/auth-context.js +1 -1
  9. package/api/auth/bootstrap-token.d.ts +1 -1
  10. package/api/auth/bootstrap-token.js +2 -2
  11. package/api/auth/index.d.ts +9 -10
  12. package/api/auth/index.d.ts.map +1 -1
  13. package/api/auth/index.js +9 -10
  14. package/api/auth/passwords.js +2 -2
  15. package/api/auth/sensitive-rate-limit.d.ts +1 -4
  16. package/api/auth/sensitive-rate-limit.d.ts.map +1 -1
  17. package/api/auth/sensitive-rate-limit.js +6 -6
  18. package/api/auth/sessions.d.ts +1 -1
  19. package/api/auth/sessions.js +2 -2
  20. package/api/auth-bootstrap-routes.d.ts +7 -14
  21. package/api/auth-bootstrap-routes.d.ts.map +1 -1
  22. package/api/auth-bootstrap-routes.js +14 -27
  23. package/api/auth-pairing-routes.d.ts +17 -0
  24. package/api/auth-pairing-routes.d.ts.map +1 -0
  25. package/api/auth-pairing-routes.js +299 -0
  26. package/api/auth-session-routes.d.ts +2 -2
  27. package/api/auth-session-routes.d.ts.map +1 -1
  28. package/api/auth-session-routes.js +36 -15
  29. package/api/auth.d.ts +13 -20
  30. package/api/auth.d.ts.map +1 -1
  31. package/api/auth.js +32 -27
  32. package/api/automations-compat-routes.d.ts +1 -1
  33. package/api/automations-compat-routes.d.ts.map +1 -1
  34. package/api/automations-compat-routes.js +5 -5
  35. package/api/background-tasks-routes.d.ts +4 -0
  36. package/api/background-tasks-routes.d.ts.map +1 -0
  37. package/api/background-tasks-routes.js +63 -0
  38. package/api/catalog-routes.d.ts +1 -1
  39. package/api/catalog-routes.js +3 -3
  40. package/api/cloud-pair-route.d.ts +26 -0
  41. package/api/cloud-pair-route.d.ts.map +1 -0
  42. package/api/cloud-pair-route.js +222 -0
  43. package/api/cloud-voice-routes.d.ts +52 -0
  44. package/api/cloud-voice-routes.d.ts.map +1 -0
  45. package/api/cloud-voice-routes.js +50 -0
  46. package/api/compat-route-shared.d.ts +14 -7
  47. package/api/compat-route-shared.d.ts.map +1 -1
  48. package/api/compat-route-shared.js +27 -188
  49. package/api/credential-resolver.d.ts +2 -2
  50. package/api/credential-resolver.d.ts.map +1 -1
  51. package/api/credential-resolver.js +8 -2
  52. package/api/database-rows-compat-routes.d.ts +1 -1
  53. package/api/database-rows-compat-routes.d.ts.map +1 -1
  54. package/api/database-rows-compat-routes.js +69 -31
  55. package/api/dev-boot-history.d.ts +26 -0
  56. package/api/dev-boot-history.d.ts.map +1 -0
  57. package/api/dev-boot-history.js +69 -0
  58. package/api/dev-compat-routes.d.ts +6 -1
  59. package/api/dev-compat-routes.d.ts.map +1 -1
  60. package/api/dev-compat-routes.js +127 -4
  61. package/api/dev-console-log.d.ts +2 -2
  62. package/api/dev-console-log.d.ts.map +1 -1
  63. package/api/dev-console-log.js +8 -5
  64. package/api/dev-route-catalog.d.ts +58 -0
  65. package/api/dev-route-catalog.d.ts.map +1 -0
  66. package/api/dev-route-catalog.js +477 -0
  67. package/api/dev-stack.d.ts.map +1 -1
  68. package/api/dev-stack.js +6 -9
  69. package/api/drop-status-compat-route.d.ts +3 -0
  70. package/api/drop-status-compat-route.d.ts.map +1 -0
  71. package/api/drop-status-compat-route.js +12 -0
  72. package/api/first-run-routes.d.ts +4 -0
  73. package/api/first-run-routes.d.ts.map +1 -0
  74. package/api/first-run-routes.js +208 -0
  75. package/api/first-run-tts-route.d.ts +19 -0
  76. package/api/first-run-tts-route.d.ts.map +1 -0
  77. package/api/first-run-tts-route.js +59 -0
  78. package/api/internal-routes.d.ts +23 -0
  79. package/api/internal-routes.d.ts.map +1 -0
  80. package/api/internal-routes.js +203 -0
  81. package/api/ios-local-agent-transport.d.ts +36 -0
  82. package/api/ios-local-agent-transport.d.ts.map +1 -0
  83. package/api/ios-local-agent-transport.js +566 -0
  84. package/api/onboarding-voice-lines.d.ts +23 -0
  85. package/api/onboarding-voice-lines.d.ts.map +1 -0
  86. package/api/onboarding-voice-lines.js +8 -0
  87. package/api/perf-instrument.d.ts +43 -0
  88. package/api/perf-instrument.d.ts.map +1 -0
  89. package/api/perf-instrument.js +113 -0
  90. package/api/response.d.ts.map +1 -1
  91. package/api/response.js +14 -14
  92. package/api/runtime-mode-routes.d.ts +1 -1
  93. package/api/runtime-mode-routes.d.ts.map +1 -1
  94. package/api/runtime-mode-routes.js +2 -2
  95. package/api/secrets-inventory-routes.js +2 -2
  96. package/api/secrets-manager-routes.d.ts +1 -1
  97. package/api/secrets-manager-routes.d.ts.map +1 -1
  98. package/api/secrets-manager-routes.js +9 -10
  99. package/api/sensitive-request-routes.d.ts +2 -2
  100. package/api/sensitive-request-routes.js +5 -5
  101. package/api/server-config-filter.d.ts.map +1 -1
  102. package/api/server-config-filter.js +0 -1
  103. package/api/server-cors.d.ts.map +1 -1
  104. package/api/server-cors.js +13 -2
  105. package/api/server-first-run-helpers.d.ts +26 -0
  106. package/api/server-first-run-helpers.d.ts.map +1 -0
  107. package/api/server-first-run-helpers.js +268 -0
  108. package/api/server-security.js +1 -1
  109. package/api/server-startup.d.ts.map +1 -1
  110. package/api/server-startup.js +3 -4
  111. package/api/server-wallet-trade.js +1 -1
  112. package/api/server.d.ts +11 -11
  113. package/api/server.d.ts.map +1 -1
  114. package/api/server.js +227 -139
  115. package/api/setup-contract.d.ts +63 -0
  116. package/api/setup-contract.d.ts.map +1 -0
  117. package/api/setup-contract.js +39 -0
  118. package/api/training-benchmarks.d.ts +97 -0
  119. package/api/training-benchmarks.d.ts.map +1 -0
  120. package/api/training-benchmarks.js +329 -0
  121. package/api/workbench-compat-routes.d.ts +1 -1
  122. package/api/workbench-compat-routes.js +2 -2
  123. package/benchmark/cerebras-autowire.d.ts +28 -0
  124. package/benchmark/cerebras-autowire.d.ts.map +1 -0
  125. package/benchmark/cerebras-autowire.js +62 -0
  126. package/benchmark/lifeops-bench-handler.d.ts +36 -0
  127. package/benchmark/lifeops-bench-handler.d.ts.map +1 -1
  128. package/benchmark/lifeops-bench-handler.js +63 -1
  129. package/benchmark/lifeops-fake-backend.d.ts +39 -0
  130. package/benchmark/lifeops-fake-backend.d.ts.map +1 -1
  131. package/benchmark/lifeops-fake-backend.js +993 -21
  132. package/benchmark/mock-plugin.d.ts.map +1 -1
  133. package/benchmark/mock-plugin.js +0 -24
  134. package/benchmark/plugin.d.ts +2 -1
  135. package/benchmark/plugin.d.ts.map +1 -1
  136. package/benchmark/plugin.js +989 -68
  137. package/benchmark/replay-capture.d.ts +2 -2
  138. package/benchmark/replay-capture.d.ts.map +1 -1
  139. package/benchmark/replay-capture.js +3 -3
  140. package/benchmark/server-utils.d.ts +164 -11
  141. package/benchmark/server-utils.d.ts.map +1 -1
  142. package/benchmark/server-utils.js +625 -62
  143. package/benchmark/server.d.ts.map +1 -1
  144. package/benchmark/server.js +1962 -118
  145. package/boot-profile.d.ts +3 -0
  146. package/boot-profile.d.ts.map +1 -0
  147. package/boot-profile.js +30 -0
  148. package/browser.d.ts +23 -1
  149. package/browser.d.ts.map +1 -1
  150. package/browser.js +20 -1
  151. package/cli/argv.js +1 -1
  152. package/cli/banner.js +1 -1
  153. package/cli/command-format.js +2 -2
  154. package/cli/doctor/checks.d.ts.map +1 -1
  155. package/cli/doctor/checks.js +6 -6
  156. package/cli/plugins-cli.d.ts.map +1 -1
  157. package/cli/plugins-cli.js +82 -32
  158. package/cli/profile.d.ts.map +1 -1
  159. package/cli/profile.js +5 -4
  160. package/cli/program/build-program.js +4 -4
  161. package/cli/program/command-registry.d.ts.map +1 -1
  162. package/cli/program/command-registry.js +13 -11
  163. package/cli/program/help.js +5 -5
  164. package/cli/program/preaction.js +5 -5
  165. package/cli/program/register.auth.d.ts +27 -1
  166. package/cli/program/register.auth.d.ts.map +1 -1
  167. package/cli/program/register.auth.js +193 -12
  168. package/cli/program/register.capability-router.d.ts +29 -0
  169. package/cli/program/register.capability-router.d.ts.map +1 -0
  170. package/cli/program/register.capability-router.js +568 -0
  171. package/cli/program/register.config.js +1 -1
  172. package/cli/program/register.configure.d.ts.map +1 -1
  173. package/cli/program/register.configure.js +1 -1
  174. package/cli/program/register.dashboard.d.ts.map +1 -1
  175. package/cli/program/register.dashboard.js +17 -8
  176. package/cli/program/register.db.d.ts.map +1 -1
  177. package/cli/program/register.db.js +3 -4
  178. package/cli/program/register.doctor.js +7 -7
  179. package/cli/program/register.setup.d.ts.map +1 -1
  180. package/cli/program/register.setup.js +14 -10
  181. package/cli/program/register.start.d.ts.map +1 -1
  182. package/cli/program/register.start.js +5 -3
  183. package/cli/program/register.subclis.js +3 -3
  184. package/cli/program/register.update.d.ts +6 -0
  185. package/cli/program/register.update.d.ts.map +1 -1
  186. package/cli/program/register.update.js +58 -6
  187. package/cli/program.d.ts +1 -1
  188. package/cli/program.js +1 -1
  189. package/cli/run-main.js +4 -4
  190. package/config/app-config.d.ts +2 -0
  191. package/config/app-config.d.ts.map +1 -0
  192. package/config/app-config.js +1 -0
  193. package/connectors/capacitor-jsc.d.ts.map +1 -1
  194. package/connectors/capacitor-jsc.js +16 -10
  195. package/connectors/capacitor-quickjs.d.ts.map +1 -1
  196. package/connectors/capacitor-quickjs.js +18 -13
  197. package/connectors/capacitor-sqlite.d.ts.map +1 -1
  198. package/connectors/capacitor-sqlite.js +27 -12
  199. package/dispatch/approval-queue.d.ts +37 -0
  200. package/dispatch/approval-queue.d.ts.map +1 -0
  201. package/dispatch/approval-queue.js +25 -0
  202. package/dispatch/channel-registry.d.ts +30 -0
  203. package/dispatch/channel-registry.d.ts.map +1 -0
  204. package/dispatch/channel-registry.js +22 -0
  205. package/dispatch/connector-registry.d.ts +39 -0
  206. package/dispatch/connector-registry.d.ts.map +1 -0
  207. package/dispatch/connector-registry.js +24 -0
  208. package/dispatch/index.d.ts +14 -0
  209. package/dispatch/index.d.ts.map +1 -0
  210. package/dispatch/index.js +13 -0
  211. package/dispatch/send-policy.d.ts +36 -0
  212. package/dispatch/send-policy.d.ts.map +1 -0
  213. package/dispatch/send-policy.js +16 -0
  214. package/entry.js +28 -11
  215. package/first-run/first-run-config.d.ts +55 -0
  216. package/first-run/first-run-config.d.ts.map +1 -0
  217. package/first-run/first-run-config.js +178 -0
  218. package/first-run/runtime-target.d.ts +4 -0
  219. package/first-run/runtime-target.d.ts.map +1 -0
  220. package/first-run/runtime-target.js +13 -0
  221. package/index.d.ts +46 -34
  222. package/index.d.ts.map +1 -1
  223. package/index.js +53 -33
  224. package/package.json +166 -51
  225. package/packaging/PUBLISHING_GUIDE.md +20 -20
  226. package/packaging/debian/apt-repo-config/README.md +18 -0
  227. package/packaging/debian/apt-repo-config/conf/distributions +11 -0
  228. package/packaging/flatpak/README.md +26 -16
  229. package/packaging/flatpak/ai.elizaos.App.metainfo.xml +17 -12
  230. package/packaging/flatpak/ai.elizaos.App.store.yml +5 -5
  231. package/packaging/flatpak/ai.elizaos.App.yml +10 -24
  232. package/packaging/flatpak/elizaos-app-wrapper.store.sh +2 -2
  233. package/packaging/flatpak/generate-sources.sh +74 -0
  234. package/packaging/flatpak/node-sources.json +7930 -0
  235. package/packaging/inno/build-inno.ps1 +34 -9
  236. package/packaging/msix/AppxManifest.store.xml +1 -1
  237. package/packaging/msix/README.md +39 -19
  238. package/packaging/msix/build-msix.ps1 +44 -14
  239. package/packaging/snap/snapcraft.yaml +22 -21
  240. package/packaging/test-packaging.sh +2 -2
  241. package/permissions/types.d.ts +1 -1
  242. package/permissions/types.js +1 -1
  243. package/platform/elizaos-agent-browser-stub.d.ts +143 -0
  244. package/platform/elizaos-agent-browser-stub.d.ts.map +1 -0
  245. package/platform/elizaos-agent-browser-stub.js +157 -0
  246. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts +34 -0
  247. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts.map +1 -0
  248. package/platform/elizaos-plugin-elizacloud-browser-stub.js +51 -0
  249. package/platform/empty-node-module.d.ts +148 -0
  250. package/platform/empty-node-module.d.ts.map +1 -1
  251. package/platform/empty-node-module.js +140 -3
  252. package/platform/ios-runtime-backends.d.ts +83 -0
  253. package/platform/ios-runtime-backends.d.ts.map +1 -0
  254. package/platform/ios-runtime-backends.js +133 -0
  255. package/platform/ios-runtime-bridge.d.ts +15 -0
  256. package/platform/ios-runtime-bridge.d.ts.map +1 -0
  257. package/platform/ios-runtime-bridge.js +526 -0
  258. package/platform/native-library-policy.d.ts +23 -0
  259. package/platform/native-library-policy.d.ts.map +1 -0
  260. package/platform/native-library-policy.js +112 -0
  261. package/platform/native-plugin-entrypoints.d.ts +19 -0
  262. package/platform/native-plugin-entrypoints.d.ts.map +1 -0
  263. package/platform/native-plugin-entrypoints.js +29 -0
  264. package/platforms/android/README.md +68 -10
  265. package/platforms/android/app/build.gradle +291 -3
  266. package/platforms/android/app/capacitor.build.gradle +18 -1
  267. package/platforms/android/app/proguard-rules.pro +17 -2
  268. package/platforms/android/app/src/androidTest/java/ai/elizaos/app/ElizaOsInstrumentedTest.java +1 -1
  269. package/platforms/android/app/src/main/AndroidManifest.xml +335 -18
  270. package/platforms/android/app/src/main/assets/runners/eliza-tasks.js +177 -0
  271. package/platforms/android/app/src/main/elizavoice-jni/CMakeLists.txt +100 -0
  272. package/platforms/android/app/src/main/elizavoice-jni/elizavoice-jni.cpp +1629 -0
  273. package/platforms/android/app/src/main/java/ai/elizaos/app/AgentPlugin.java +111 -171
  274. package/platforms/android/app/src/main/java/ai/elizaos/app/AndroidVirtualizationBridge.java +284 -0
  275. package/platforms/android/app/src/main/java/ai/elizaos/app/BatteryOptimizationPlugin.java +95 -0
  276. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAccessibilityService.java +55 -0
  277. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +1283 -141
  278. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAndroidSystemBridge.java +83 -0
  279. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAssistActivity.java +50 -1
  280. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBionicInferenceServer.java +740 -0
  281. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBootReceiver.java +90 -8
  282. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBrowserActivity.java +2 -2
  283. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCalendarActivity.java +1 -1
  284. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCameraActivity.java +1 -1
  285. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaClockActivity.java +2 -2
  286. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaContactsActivity.java +1 -1
  287. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaDialActivity.java +1 -1
  288. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaInCallService.java +1 -1
  289. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaMmsReceiver.java +1 -1
  290. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +22 -0
  291. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNotificationListenerService.java +45 -0
  292. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaQuickActionsWidgetProvider.java +68 -0
  293. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaShareActivity.java +132 -0
  294. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsComposeActivity.java +1 -1
  295. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsGatewayService.java +268 -0
  296. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsReceiver.java +12 -1
  297. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaTasksWorker.java +194 -0
  298. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceCaptureService.java +198 -0
  299. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceNative.java +255 -0
  300. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +505 -0
  301. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceTileService.java +39 -0
  302. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaWorkScheduler.java +60 -0
  303. package/platforms/android/app/src/main/java/ai/elizaos/app/GatewayConnectionService.java +53 -19
  304. package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +160 -33
  305. package/platforms/android/app/src/main/java/ai/elizaos/app/ResourceProbePlugin.java +169 -0
  306. package/platforms/android/app/src/main/java/ai/elizaos/app/VoiceCapturePlugin.java +119 -0
  307. package/platforms/android/app/src/main/res/drawable/eliza_widget_background.xml +10 -0
  308. package/platforms/android/app/src/main/res/drawable/eliza_widget_button_background.xml +13 -0
  309. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  310. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  311. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  312. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  313. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  314. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  315. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  316. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  317. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  318. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  319. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  320. package/platforms/android/app/src/main/res/layout/eliza_quick_actions_widget.xml +86 -0
  321. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +2 -1
  322. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +2 -1
  323. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  324. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  325. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png +0 -0
  326. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  327. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  328. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  329. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png +0 -0
  330. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  331. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  332. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  333. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png +0 -0
  334. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  335. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  336. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  337. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png +0 -0
  338. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  339. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  340. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  341. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png +0 -0
  342. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  343. package/platforms/android/app/src/main/res/values/android_app_actions.xml +48 -0
  344. package/platforms/android/app/src/main/res/values/colors.xml +12 -0
  345. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +2 -2
  346. package/platforms/android/app/src/main/res/values/strings.xml +2 -2
  347. package/platforms/android/app/src/main/res/values/styles.xml +28 -1
  348. package/platforms/android/app/src/main/res/xml/eliza_accessibility_service.xml +9 -0
  349. package/platforms/android/app/src/main/res/xml/eliza_quick_actions_widget.xml +13 -0
  350. package/platforms/android/app/src/main/res/xml/shortcuts.xml +121 -0
  351. package/platforms/android/build.gradle +2 -2
  352. package/platforms/android/capacitor-cordova-android-plugins/build.gradle +9 -3
  353. package/platforms/android/capacitor-cordova-android-plugins/cordova.variables.gradle +6 -2
  354. package/platforms/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml +7 -2
  355. package/platforms/android/capacitor-cordova-android-plugins/src/main/java/.gitkeep +0 -1
  356. package/platforms/android/capacitor.settings.gradle +66 -16
  357. package/platforms/android/gradle.properties +1 -0
  358. package/platforms/android/update-manifest/generate-manifest.mjs +97 -0
  359. package/platforms/android/update-manifest/schema.json +26 -0
  360. package/platforms/apple-store-entitlements.reviewed.json +155 -0
  361. package/platforms/electrobun/.generated/brand-config.json +3 -2
  362. package/platforms/electrobun/LICENSE +21 -0
  363. package/platforms/electrobun/README.md +15 -1
  364. package/platforms/electrobun/assets/appIcon.icns +0 -0
  365. package/platforms/electrobun/assets/appIcon.ico +0 -0
  366. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128.png +0 -0
  367. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128@2x.png +0 -0
  368. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16.png +0 -0
  369. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16@2x.png +0 -0
  370. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256.png +0 -0
  371. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256@2x.png +0 -0
  372. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32.png +0 -0
  373. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32@2x.png +0 -0
  374. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512.png +0 -0
  375. package/platforms/electrobun/assets/brand-config.json +6 -6
  376. package/platforms/electrobun/biome.json +9 -9
  377. package/platforms/electrobun/docs/capability-collapse-matrix.json +318 -0
  378. package/platforms/electrobun/docs/capability-collapse-matrix.md +129 -0
  379. package/platforms/electrobun/docs/capability-routing.md +86 -0
  380. package/platforms/electrobun/docs/database-boot-policy.md +90 -0
  381. package/platforms/electrobun/docs/riscv64-port.md +175 -0
  382. package/platforms/electrobun/docs/startup-first-run-cleanup.md +18 -0
  383. package/platforms/electrobun/docs/trace-first-annotations.md +52 -0
  384. package/platforms/electrobun/docs/ui-boundary-audit.json +580 -0
  385. package/platforms/electrobun/docs/ui-boundary-audit.md +257 -0
  386. package/platforms/electrobun/electrobun.config.ts +591 -364
  387. package/platforms/electrobun/entitlements/JUSTIFICATIONS.md +141 -0
  388. package/platforms/electrobun/entitlements/README.md +34 -6
  389. package/platforms/electrobun/entitlements/mas-bun.entitlements +15 -0
  390. package/platforms/electrobun/entitlements/mas.entitlements +6 -4
  391. package/platforms/electrobun/native/macos/window-effects.mm +1526 -0
  392. package/platforms/electrobun/package.json +21 -13
  393. package/platforms/electrobun/remotes/fs/README.md +70 -0
  394. package/platforms/electrobun/remotes/fs/electrobun.config.ts +38 -0
  395. package/platforms/electrobun/remotes/fs/package.json +12 -0
  396. package/platforms/electrobun/remotes/fs/plugin.json +25 -0
  397. package/platforms/electrobun/remotes/fs/src/bun/errors.ts +57 -0
  398. package/platforms/electrobun/remotes/fs/src/bun/file-limits.ts +50 -0
  399. package/platforms/electrobun/remotes/fs/src/bun/fs-service.ts +389 -0
  400. package/platforms/electrobun/remotes/fs/src/bun/path-guard.ts +270 -0
  401. package/platforms/electrobun/remotes/fs/src/bun/protocol.ts +149 -0
  402. package/platforms/electrobun/remotes/fs/src/bun/worker.ts +174 -0
  403. package/platforms/electrobun/remotes/fs/src/dev/phase5-smoke.ts +171 -0
  404. package/platforms/electrobun/remotes/fs/src/web/index.html +8 -0
  405. package/platforms/electrobun/remotes/git/README.md +75 -0
  406. package/platforms/electrobun/remotes/git/electrobun.config.ts +44 -0
  407. package/platforms/electrobun/remotes/git/package.json +12 -0
  408. package/platforms/electrobun/remotes/git/plugin.json +31 -0
  409. package/platforms/electrobun/remotes/git/src/bun/errors.ts +69 -0
  410. package/platforms/electrobun/remotes/git/src/bun/git-command.ts +156 -0
  411. package/platforms/electrobun/remotes/git/src/bun/git-service.ts +446 -0
  412. package/platforms/electrobun/remotes/git/src/bun/operation-history.ts +124 -0
  413. package/platforms/electrobun/remotes/git/src/bun/protocol.ts +252 -0
  414. package/platforms/electrobun/remotes/git/src/bun/worker.ts +316 -0
  415. package/platforms/electrobun/remotes/git/src/dev/phase7-smoke.ts +141 -0
  416. package/platforms/electrobun/remotes/git/src/web/index.html +8 -0
  417. package/platforms/electrobun/remotes/local-model/README.md +138 -0
  418. package/platforms/electrobun/remotes/local-model/electrobun.config.ts +46 -0
  419. package/platforms/electrobun/remotes/local-model/package.json +12 -0
  420. package/platforms/electrobun/remotes/local-model/plugin.json +33 -0
  421. package/platforms/electrobun/remotes/local-model/src/bun/download-state.ts +115 -0
  422. package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +405 -0
  423. package/platforms/electrobun/remotes/local-model/src/bun/errors.ts +74 -0
  424. package/platforms/electrobun/remotes/local-model/src/bun/hf-eliza1-client.ts +169 -0
  425. package/platforms/electrobun/remotes/local-model/src/bun/local-inference-api-client.ts +245 -0
  426. package/platforms/electrobun/remotes/local-model/src/bun/model-service.ts +490 -0
  427. package/platforms/electrobun/remotes/local-model/src/bun/protocol.ts +301 -0
  428. package/platforms/electrobun/remotes/local-model/src/bun/worker.ts +248 -0
  429. package/platforms/electrobun/remotes/local-model/src/dev/phase8-smoke.ts +116 -0
  430. package/platforms/electrobun/remotes/local-model/src/web/index.html +13 -0
  431. package/platforms/electrobun/remotes/pty/README.md +65 -0
  432. package/platforms/electrobun/remotes/pty/electrobun.config.ts +47 -0
  433. package/platforms/electrobun/remotes/pty/package.json +12 -0
  434. package/platforms/electrobun/remotes/pty/plugin.json +34 -0
  435. package/platforms/electrobun/remotes/pty/src/bun/errors.ts +57 -0
  436. package/platforms/electrobun/remotes/pty/src/bun/output-buffer.ts +127 -0
  437. package/platforms/electrobun/remotes/pty/src/bun/protocol.ts +192 -0
  438. package/platforms/electrobun/remotes/pty/src/bun/pty-service.ts +562 -0
  439. package/platforms/electrobun/remotes/pty/src/bun/worker.ts +218 -0
  440. package/platforms/electrobun/remotes/pty/src/dev/phase6-smoke.ts +127 -0
  441. package/platforms/electrobun/remotes/pty/src/web/index.html +8 -0
  442. package/platforms/electrobun/remotes/runtime/README.md +370 -0
  443. package/platforms/electrobun/remotes/runtime/electrobun.config.ts +48 -0
  444. package/platforms/electrobun/remotes/runtime/package.json +14 -0
  445. package/platforms/electrobun/remotes/runtime/plugin.json +30 -0
  446. package/platforms/electrobun/remotes/runtime/src/bun/api-client.ts +620 -0
  447. package/platforms/electrobun/remotes/runtime/src/bun/errors.ts +45 -0
  448. package/platforms/electrobun/remotes/runtime/src/bun/log-buffer.ts +33 -0
  449. package/platforms/electrobun/remotes/runtime/src/bun/protocol.ts +366 -0
  450. package/platforms/electrobun/remotes/runtime/src/bun/route-discovery.ts +419 -0
  451. package/platforms/electrobun/remotes/runtime/src/bun/runtime-manager.ts +423 -0
  452. package/platforms/electrobun/remotes/runtime/src/bun/sse-parser.ts +99 -0
  453. package/platforms/electrobun/remotes/runtime/src/bun/stream-manager.ts +887 -0
  454. package/platforms/electrobun/remotes/runtime/src/bun/worker.ts +1231 -0
  455. package/platforms/electrobun/remotes/runtime/src/dev/phase1-smoke.ts +34 -0
  456. package/platforms/electrobun/remotes/runtime/src/dev/phase2-smoke.ts +91 -0
  457. package/platforms/electrobun/remotes/runtime/src/dev/phase3-smoke.ts +137 -0
  458. package/platforms/electrobun/remotes/runtime/src/web/index.css +187 -0
  459. package/platforms/electrobun/remotes/runtime/src/web/index.html +76 -0
  460. package/platforms/electrobun/remotes/runtime/src/web/index.ts +192 -0
  461. package/platforms/electrobun/remotes/surface/README.md +201 -0
  462. package/platforms/electrobun/remotes/surface/electrobun.config.ts +38 -0
  463. package/platforms/electrobun/remotes/surface/package.json +12 -0
  464. package/platforms/electrobun/remotes/surface/plugin.json +28 -0
  465. package/platforms/electrobun/remotes/surface/src/bun/worker.ts +132 -0
  466. package/platforms/electrobun/remotes/surface/src/dev/phase4-smoke.ts +566 -0
  467. package/platforms/electrobun/remotes/surface/src/protocol/event-types.ts +84 -0
  468. package/platforms/electrobun/remotes/surface/src/protocol/runtime-client.ts +673 -0
  469. package/platforms/electrobun/remotes/surface/src/web/app.ts +595 -0
  470. package/platforms/electrobun/remotes/surface/src/web/index.css +460 -0
  471. package/platforms/electrobun/remotes/surface/src/web/index.html +466 -0
  472. package/platforms/electrobun/remotes/surface/src/web/index.ts +5 -0
  473. package/platforms/electrobun/remotes/surface/src/web/render.ts +455 -0
  474. package/platforms/electrobun/remotes/surface/src/web/state.ts +427 -0
  475. package/platforms/electrobun/scripts/build-macos-effects.sh +4 -0
  476. package/platforms/electrobun/scripts/ensure-build-folder.ts +28 -0
  477. package/platforms/electrobun/scripts/local-adhoc-sign-macos.ts +159 -159
  478. package/platforms/electrobun/scripts/postwrap-diagnostics.ts +424 -339
  479. package/platforms/electrobun/scripts/postwrap-sign-runtime-macos.ts +302 -271
  480. package/platforms/electrobun/scripts/smoke-test-windows.ps1 +17 -16
  481. package/platforms/electrobun/scripts/smoke-test.sh +5 -7
  482. package/platforms/electrobun/scripts/sync-web-assets.mjs +13 -13
  483. package/platforms/electrobun/scripts/verify-rpc-handlers.ts +109 -110
  484. package/platforms/electrobun/scripts/verify-windows-installer-proof.ps1 +3 -8
  485. package/platforms/electrobun/src/__stubs__/bun-ffi.ts +31 -31
  486. package/platforms/electrobun/src/__stubs__/electrobun-bun.ts +1 -1
  487. package/platforms/electrobun/src/agent-ready-state.ts +8 -8
  488. package/platforms/electrobun/src/agent-reset-from-main.test.ts +162 -0
  489. package/platforms/electrobun/src/agent-reset-from-main.ts +62 -62
  490. package/platforms/electrobun/src/agent-status-rpc.test.ts +95 -0
  491. package/platforms/electrobun/src/agent-status-rpc.ts +156 -0
  492. package/platforms/electrobun/src/api-base.test.ts +247 -0
  493. package/platforms/electrobun/src/api-base.ts +202 -93
  494. package/platforms/electrobun/src/application-menu-action-registry.ts +9 -9
  495. package/platforms/electrobun/src/application-menu.ts +341 -348
  496. package/platforms/electrobun/src/background-notice.ts +36 -36
  497. package/platforms/electrobun/src/boot-progress.test.ts +188 -0
  498. package/platforms/electrobun/src/boot-progress.ts +111 -0
  499. package/platforms/electrobun/src/brand-config.test.ts +39 -0
  500. package/platforms/electrobun/src/brand-config.ts +141 -129
  501. package/platforms/electrobun/src/bridge/browser-tabs-renderer-registry.ts +28 -28
  502. package/platforms/electrobun/src/bridge/electrobun-boot-config.ts +42 -0
  503. package/platforms/electrobun/src/bridge/electrobun-crypto-ready.ts +120 -0
  504. package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +342 -357
  505. package/platforms/electrobun/src/bridge/electrobun-stub.ts +13 -13
  506. package/platforms/electrobun/src/browser-workspace-bridge-server.ts +285 -243
  507. package/platforms/electrobun/src/cloud-auth-window.ts +136 -136
  508. package/platforms/electrobun/src/cloud-disconnect-from-main.ts +90 -90
  509. package/platforms/electrobun/src/config-and-auth-rpc.test.ts +256 -0
  510. package/platforms/electrobun/src/config-and-auth-rpc.ts +302 -0
  511. package/platforms/electrobun/src/conversations-and-character-rpc.test.ts +185 -0
  512. package/platforms/electrobun/src/conversations-and-character-rpc.ts +131 -0
  513. package/platforms/electrobun/src/dashboard-rpc.test.ts +200 -0
  514. package/platforms/electrobun/src/dashboard-rpc.ts +344 -0
  515. package/platforms/electrobun/src/database/database-lock.ts +141 -0
  516. package/platforms/electrobun/src/database/database-mode.ts +149 -0
  517. package/platforms/electrobun/src/database/database-recovery.ts +72 -0
  518. package/platforms/electrobun/src/database/database-snapshot.ts +190 -0
  519. package/platforms/electrobun/src/database/database.test.ts +196 -0
  520. package/platforms/electrobun/src/database/index.ts +5 -0
  521. package/platforms/electrobun/src/database/pglite-paths.ts +100 -0
  522. package/platforms/electrobun/src/desktop-deep-link-events.test.ts +30 -0
  523. package/platforms/electrobun/src/desktop-deep-link-events.ts +17 -0
  524. package/platforms/electrobun/src/desktop-http-request.test.ts +102 -73
  525. package/platforms/electrobun/src/desktop-http-request.ts +97 -85
  526. package/platforms/electrobun/src/desktop-pill-config.test.ts +27 -0
  527. package/platforms/electrobun/src/desktop-pill-config.ts +40 -0
  528. package/platforms/electrobun/src/desktop-test-bridge-server.ts +232 -204
  529. package/platforms/electrobun/src/desktop-tray-config.test.ts +87 -0
  530. package/platforms/electrobun/src/desktop-tray-config.ts +84 -0
  531. package/platforms/electrobun/src/devtools-layout.ts +41 -41
  532. package/platforms/electrobun/src/diagnostic-format.test.ts +71 -0
  533. package/platforms/electrobun/src/diagnostic-format.ts +75 -36
  534. package/platforms/electrobun/src/dynamic-view-rpc-schema.test.ts +37 -0
  535. package/platforms/electrobun/src/dynamic-views/README.md +44 -0
  536. package/platforms/electrobun/src/dynamic-views/demo/agent-run-trace.html +135 -0
  537. package/platforms/electrobun/src/dynamic-views/errors.ts +29 -0
  538. package/platforms/electrobun/src/dynamic-views/host.test.ts +353 -0
  539. package/platforms/electrobun/src/dynamic-views/host.ts +332 -0
  540. package/platforms/electrobun/src/dynamic-views/index.ts +57 -0
  541. package/platforms/electrobun/src/dynamic-views/kiosk-canvas.ts +89 -0
  542. package/platforms/electrobun/src/dynamic-views/registry.test.ts +139 -0
  543. package/platforms/electrobun/src/dynamic-views/registry.ts +196 -0
  544. package/platforms/electrobun/src/dynamic-views/session-manager.test.ts +355 -0
  545. package/platforms/electrobun/src/dynamic-views/session-manager.ts +348 -0
  546. package/platforms/electrobun/src/dynamic-views/types.ts +105 -0
  547. package/platforms/electrobun/src/electrobun-boot-config.test.ts +50 -0
  548. package/platforms/electrobun/src/electrobun-config.test.ts +62 -0
  549. package/platforms/electrobun/src/electrobun-crypto-ready.test.ts +65 -0
  550. package/platforms/electrobun/src/electrobun-window-options.ts +25 -0
  551. package/platforms/electrobun/src/extension-rpc.test.ts +88 -0
  552. package/platforms/electrobun/src/extension-rpc.ts +102 -0
  553. package/platforms/electrobun/src/fatal-shutdown.test.ts +12 -16
  554. package/platforms/electrobun/src/fatal-shutdown.ts +1 -1
  555. package/platforms/electrobun/src/first-party-remotes.test.ts +169 -0
  556. package/platforms/electrobun/src/first-party-remotes.ts +297 -0
  557. package/platforms/electrobun/src/first-run-rpc.test.ts +192 -0
  558. package/platforms/electrobun/src/first-run-rpc.ts +146 -0
  559. package/platforms/electrobun/src/floating-chat-window.ts +181 -181
  560. package/platforms/electrobun/src/inbox-rpc.test.ts +123 -0
  561. package/platforms/electrobun/src/inbox-rpc.ts +158 -0
  562. package/platforms/electrobun/src/index.ts +2608 -2098
  563. package/platforms/electrobun/src/kiosk-mode.ts +50 -0
  564. package/platforms/electrobun/src/launch/index.ts +4 -0
  565. package/platforms/electrobun/src/launch/launch-dynamic-view.ts +37 -0
  566. package/platforms/electrobun/src/launch/launch-orchestrator.test.ts +224 -0
  567. package/platforms/electrobun/src/launch/launch-orchestrator.ts +456 -0
  568. package/platforms/electrobun/src/launch/launch-store.test.ts +97 -0
  569. package/platforms/electrobun/src/launch/launch-store.ts +134 -0
  570. package/platforms/electrobun/src/launch/types.ts +103 -0
  571. package/platforms/electrobun/src/launch/views/launch-diagnostics.html +205 -0
  572. package/platforms/electrobun/src/lifecycle/agent-ready-publish.test.ts +50 -0
  573. package/platforms/electrobun/src/lifecycle/agent-ready-publish.ts +27 -0
  574. package/platforms/electrobun/src/lifecycle/api-base-owner.test.ts +83 -0
  575. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +63 -31
  576. package/platforms/electrobun/src/lifecycle/desktop-session-prime.ts +44 -44
  577. package/platforms/electrobun/src/logger.ts +14 -14
  578. package/platforms/electrobun/src/main-window-runtime.ts +83 -83
  579. package/platforms/electrobun/src/main-window-session.test.ts +109 -0
  580. package/platforms/electrobun/src/main-window-session.ts +87 -51
  581. package/platforms/electrobun/src/menu-reset-from-main.ts +158 -158
  582. package/platforms/electrobun/src/native/agent-env.test.ts +52 -0
  583. package/platforms/electrobun/src/native/agent-runtime-layout.test.ts +42 -0
  584. package/platforms/electrobun/src/native/agent-state-dir.test.ts +91 -0
  585. package/platforms/electrobun/src/native/agent.ts +2133 -1682
  586. package/platforms/electrobun/src/native/auth-bridge.test.ts +67 -0
  587. package/platforms/electrobun/src/native/auth-bridge.ts +464 -360
  588. package/platforms/electrobun/src/native/browser-workspace.ts +723 -471
  589. package/platforms/electrobun/src/native/camera.ts +50 -50
  590. package/platforms/electrobun/src/native/canvas.ts +444 -445
  591. package/platforms/electrobun/src/native/credentials.ts +678 -616
  592. package/platforms/electrobun/src/native/desktop-window.test.ts +416 -0
  593. package/platforms/electrobun/src/native/desktop.ts +2200 -2156
  594. package/platforms/electrobun/src/native/editor-bridge.ts +201 -201
  595. package/platforms/electrobun/src/native/file-watcher.ts +154 -154
  596. package/platforms/electrobun/src/native/gateway.ts +179 -180
  597. package/platforms/electrobun/src/native/gpu-window.ts +256 -256
  598. package/platforms/electrobun/src/native/index.ts +82 -74
  599. package/platforms/electrobun/src/native/location.test.ts +44 -0
  600. package/platforms/electrobun/src/native/location.ts +90 -80
  601. package/platforms/electrobun/src/native/loopback-port.ts +60 -60
  602. package/platforms/electrobun/src/native/mac-window-effects.ts +166 -104
  603. package/platforms/electrobun/src/native/music-player.ts +38 -38
  604. package/platforms/electrobun/src/native/permissions-shared.ts +249 -150
  605. package/platforms/electrobun/src/native/permissions.ts +301 -208
  606. package/platforms/electrobun/src/native/power-state.ts +129 -129
  607. package/platforms/electrobun/src/native/remote-plugin-host.test.ts +1394 -0
  608. package/platforms/electrobun/src/native/remote-plugin-host.ts +1541 -0
  609. package/platforms/electrobun/src/native/screencapture.ts +667 -573
  610. package/platforms/electrobun/src/native/steward.ts +207 -204
  611. package/platforms/electrobun/src/native/swabble.ts +68 -324
  612. package/platforms/electrobun/src/native/talkmode.ts +253 -422
  613. package/platforms/electrobun/src/native/webgpu-browser-support.test.ts +18 -0
  614. package/platforms/electrobun/src/native/webgpu-browser-support.ts +165 -147
  615. package/platforms/electrobun/src/native-onboarding.ts +270 -0
  616. package/platforms/electrobun/src/onboarding-overlay-window.ts +141 -0
  617. package/platforms/electrobun/src/persisted-deployment.ts +91 -0
  618. package/platforms/electrobun/src/pill-window.test.ts +91 -0
  619. package/platforms/electrobun/src/pill-window.ts +99 -0
  620. package/platforms/electrobun/src/preload-validation.ts +44 -44
  621. package/platforms/electrobun/src/preload.js +1 -1
  622. package/platforms/electrobun/src/print-electrobun-dev-settings-banner.ts +120 -120
  623. package/platforms/electrobun/src/renderer-api-proxy.test.ts +73 -0
  624. package/platforms/electrobun/src/renderer-api-proxy.ts +86 -0
  625. package/platforms/electrobun/src/renderer-static.test.ts +53 -0
  626. package/platforms/electrobun/src/renderer-static.ts +144 -57
  627. package/platforms/electrobun/src/rpc-handler-slices.ts +121 -0
  628. package/platforms/electrobun/src/rpc-handlers.test.ts +267 -0
  629. package/platforms/electrobun/src/rpc-handlers.ts +1306 -913
  630. package/platforms/electrobun/src/rpc-parse-utils.ts +57 -0
  631. package/platforms/electrobun/src/rpc-port-resolver.test.ts +45 -0
  632. package/platforms/electrobun/src/rpc-port-resolver.ts +31 -0
  633. package/platforms/electrobun/src/rpc-schema.ts +2556 -1619
  634. package/platforms/electrobun/src/runtime-layout.ts +105 -105
  635. package/platforms/electrobun/src/runtime-permissions.ts +95 -95
  636. package/platforms/electrobun/src/runtime-rpc.test.ts +126 -0
  637. package/platforms/electrobun/src/runtime-rpc.ts +237 -0
  638. package/platforms/electrobun/src/screenshot-dev-server.ts +87 -87
  639. package/platforms/electrobun/src/settings-mutations-rpc.test.ts +193 -0
  640. package/platforms/electrobun/src/settings-mutations-rpc.ts +220 -0
  641. package/platforms/electrobun/src/startup-trace.ts +274 -270
  642. package/platforms/electrobun/src/subscription-rpc.test.ts +89 -0
  643. package/platforms/electrobun/src/subscription-rpc.ts +192 -0
  644. package/platforms/electrobun/src/surface-windows.test.ts +355 -0
  645. package/platforms/electrobun/src/surface-windows.ts +410 -410
  646. package/platforms/electrobun/src/trace/README.md +73 -0
  647. package/platforms/electrobun/src/trace/errors.ts +21 -0
  648. package/platforms/electrobun/src/trace/index.ts +40 -0
  649. package/platforms/electrobun/src/trace/trace-dynamic-view.ts +40 -0
  650. package/platforms/electrobun/src/trace/trace-host-requests.ts +473 -0
  651. package/platforms/electrobun/src/trace/trace-service.test.ts +186 -0
  652. package/platforms/electrobun/src/trace/trace-service.ts +324 -0
  653. package/platforms/electrobun/src/trace/trace-store.test.ts +141 -0
  654. package/platforms/electrobun/src/trace/trace-store.ts +551 -0
  655. package/platforms/electrobun/src/trace/types.ts +250 -0
  656. package/platforms/electrobun/src/trace/views/agent-run-trace.html +311 -0
  657. package/platforms/electrobun/src/types/web-speech.d.ts +28 -28
  658. package/platforms/electrobun/src/types.ts +5 -5
  659. package/platforms/electrobun/src/update-availability.test.ts +72 -0
  660. package/platforms/electrobun/src/update-availability.ts +90 -0
  661. package/platforms/electrobun/src/update-rpc.test.ts +83 -0
  662. package/platforms/electrobun/src/update-rpc.ts +123 -0
  663. package/platforms/electrobun/src/voice/README.md +184 -0
  664. package/platforms/electrobun/src/voice/errors.ts +42 -0
  665. package/platforms/electrobun/src/voice/index.ts +78 -0
  666. package/platforms/electrobun/src/voice/types.ts +316 -0
  667. package/platforms/electrobun/src/voice/voice-host-requests.ts +259 -0
  668. package/platforms/electrobun/src/voice/voice-latency-budget.test.ts +66 -0
  669. package/platforms/electrobun/src/voice/voice-latency-budget.ts +243 -0
  670. package/platforms/electrobun/src/voice/voice-live-validation.test.ts +357 -0
  671. package/platforms/electrobun/src/voice/voice-live-validation.ts +838 -0
  672. package/platforms/electrobun/src/voice/voice-pipeline.ts +250 -0
  673. package/platforms/electrobun/src/voice/voice-playback-adapter.ts +31 -0
  674. package/platforms/electrobun/src/voice/voice-runtime-adapter.test.ts +213 -0
  675. package/platforms/electrobun/src/voice/voice-runtime-adapter.ts +687 -0
  676. package/platforms/electrobun/src/voice/voice-service.test.ts +587 -0
  677. package/platforms/electrobun/src/voice/voice-service.ts +1067 -0
  678. package/platforms/electrobun/src/voice/voice-stream-coordinator.test.ts +115 -0
  679. package/platforms/electrobun/src/voice/voice-stream-coordinator.ts +270 -0
  680. package/platforms/electrobun/src/voice/voice-trace.ts +97 -0
  681. package/platforms/electrobun/src/voice/voice-tts-chunker.test.ts +91 -0
  682. package/platforms/electrobun/src/voice/voice-tts-chunker.ts +194 -0
  683. package/platforms/electrobun/src/windows-cef-profile.ts +88 -88
  684. package/platforms/electrobun/tsconfig.json +88 -12
  685. package/platforms/electrobun/update-channels.json +22 -0
  686. package/platforms/electrobun/vitest.electrobun.config.ts +72 -42
  687. package/platforms/ios/App/App/App.entitlements +4 -0
  688. package/platforms/ios/App/App/AppDelegate.swift +80 -18
  689. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ios-marketing-1024.png +0 -0
  690. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@1x.png +0 -0
  691. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@2x.png +0 -0
  692. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@1x.png +0 -0
  693. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@2x.png +0 -0
  694. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@1x.png +0 -0
  695. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@2x.png +0 -0
  696. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@1x.png +0 -0
  697. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@2x.png +0 -0
  698. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-83_5x83_5@2x.png +0 -0
  699. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@2x.png +0 -0
  700. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@3x.png +0 -0
  701. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@2x.png +0 -0
  702. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@3x.png +0 -0
  703. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@2x.png +0 -0
  704. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@3x.png +0 -0
  705. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@2x.png +0 -0
  706. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@3x.png +0 -0
  707. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +4 -9
  708. package/platforms/ios/App/App/ComputerUseBridge.swift +589 -0
  709. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements +12 -0
  710. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift +34 -0
  711. package/platforms/ios/App/App/DeviceActivityMonitorExtension/Info.plist +29 -0
  712. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.entitlements +12 -0
  713. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.swift +53 -0
  714. package/platforms/ios/App/App/DeviceActivityReportExtension/Info.plist +27 -0
  715. package/platforms/ios/App/App/ElizaAppIntents.swift +183 -0
  716. package/platforms/ios/App/App/ElizaIntentPlugin.swift +342 -5
  717. package/platforms/ios/App/App/Info.plist +17 -1
  718. package/platforms/ios/App/App/runners/eliza-tasks.js +177 -0
  719. package/platforms/ios/App/App.xcodeproj/project.pbxproj +262 -6
  720. package/platforms/ios/App/BroadcastExtension/SampleHandler.swift +100 -0
  721. package/platforms/ios/App/Podfile +5 -0
  722. package/platforms/ios/App/Podfile.lock +83 -59
  723. package/register-runtime-hooks.js +11 -5
  724. package/registry/index.d.ts +1 -5
  725. package/registry/index.d.ts.map +1 -1
  726. package/registry/index.js +10 -68
  727. package/runtime/android-avf-microdroid-bridge.d.ts +29 -0
  728. package/runtime/android-avf-microdroid-bridge.d.ts.map +1 -0
  729. package/runtime/android-avf-microdroid-bridge.js +149 -0
  730. package/runtime/api-dev-settings-banner.d.ts.map +1 -1
  731. package/runtime/api-dev-settings-banner.js +5 -13
  732. package/runtime/app-core-runtime-hooks.d.ts +21 -0
  733. package/runtime/app-core-runtime-hooks.d.ts.map +1 -0
  734. package/runtime/app-core-runtime-hooks.js +10 -0
  735. package/runtime/autonomy-policy.d.ts +2 -0
  736. package/runtime/autonomy-policy.d.ts.map +1 -0
  737. package/runtime/autonomy-policy.js +4 -0
  738. package/runtime/bundled-fused-lib.d.ts +36 -0
  739. package/runtime/bundled-fused-lib.d.ts.map +1 -0
  740. package/runtime/bundled-fused-lib.js +77 -0
  741. package/runtime/channel-plugin-map.d.ts +1 -5
  742. package/runtime/channel-plugin-map.d.ts.map +1 -1
  743. package/runtime/channel-plugin-map.js +11 -31
  744. package/runtime/desktop/AppWindowRenderer.d.ts +17 -0
  745. package/runtime/desktop/AppWindowRenderer.d.ts.map +1 -0
  746. package/runtime/desktop/AppWindowRenderer.js +360 -0
  747. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts +2 -0
  748. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts.map +1 -0
  749. package/runtime/desktop/DesktopSurfaceNavigationRuntime.js +41 -0
  750. package/runtime/desktop/DesktopTrayRuntime.d.ts +2 -0
  751. package/runtime/desktop/DesktopTrayRuntime.d.ts.map +1 -0
  752. package/runtime/desktop/DesktopTrayRuntime.js +174 -0
  753. package/runtime/desktop/DetachedShellRoot.d.ts +10 -0
  754. package/runtime/desktop/DetachedShellRoot.d.ts.map +1 -0
  755. package/runtime/desktop/DetachedShellRoot.js +111 -0
  756. package/runtime/desktop/index.d.ts +6 -0
  757. package/runtime/desktop/index.d.ts.map +1 -0
  758. package/runtime/desktop/index.js +5 -0
  759. package/runtime/desktop/tray-menu.d.ts +20 -0
  760. package/runtime/desktop/tray-menu.d.ts.map +1 -0
  761. package/runtime/desktop/tray-menu.js +143 -0
  762. package/runtime/dev-server.d.ts +1 -1
  763. package/runtime/dev-server.d.ts.map +1 -1
  764. package/runtime/dev-server.js +104 -19
  765. package/runtime/eliza.d.ts +75 -1
  766. package/runtime/eliza.d.ts.map +1 -1
  767. package/runtime/eliza.js +606 -122
  768. package/runtime/ensure-text-to-speech-handler.d.ts.map +1 -1
  769. package/runtime/ensure-text-to-speech-handler.js +10 -3
  770. package/runtime/mobile-safe-runtime.d.ts +181 -2
  771. package/runtime/mobile-safe-runtime.d.ts.map +1 -1
  772. package/runtime/mobile-safe-runtime.js +1019 -12
  773. package/runtime/mode/remote-forwarder.d.ts.map +1 -1
  774. package/runtime/mode/remote-forwarder.js +2 -2
  775. package/runtime/mode/route-mode-guard.d.ts +2 -3
  776. package/runtime/mode/route-mode-guard.d.ts.map +1 -1
  777. package/runtime/mode/route-mode-guard.js +4 -5
  778. package/runtime/mode/route-mode-matrix.d.ts +1 -1
  779. package/runtime/mode/route-mode-matrix.d.ts.map +1 -1
  780. package/runtime/mode/route-mode-matrix.js +14 -1
  781. package/runtime/mode/runtime-mode.d.ts +1 -1
  782. package/runtime/mode/runtime-mode.js +1 -1
  783. package/runtime/runtime-bootstrap-policy.d.ts.map +1 -1
  784. package/runtime/runtime-bootstrap-policy.js +14 -2
  785. package/runtime/telegram-standalone-handler.d.ts.map +1 -1
  786. package/runtime/telegram-standalone-handler.js +10 -9
  787. package/runtime/tts-cache-wiring.d.ts +29 -0
  788. package/runtime/tts-cache-wiring.d.ts.map +1 -0
  789. package/runtime/tts-cache-wiring.js +114 -0
  790. package/runtime/voice-warmup.d.ts +66 -0
  791. package/runtime/voice-warmup.d.ts.map +1 -0
  792. package/runtime/voice-warmup.js +101 -0
  793. package/scripts/android-sms-gateway-template.test.mjs +1014 -0
  794. package/scripts/aosp/README.md +29 -16
  795. package/scripts/aosp/compile-libllama-zig-pin.test.mjs +147 -0
  796. package/scripts/aosp/compile-libllama.mjs +1750 -267
  797. package/scripts/aosp/compile-libllama.test.mjs +133 -0
  798. package/scripts/aosp/compile-shim.mjs +68 -19
  799. package/scripts/aosp/deploy-pixel.mjs +405 -0
  800. package/scripts/aosp/lib/load-variant-config.mjs +3 -3
  801. package/scripts/aosp/llama-cpp-patches/README.md +8 -8
  802. package/scripts/aosp/llama-cpp-patches/apply-patches.mjs +23 -6
  803. package/scripts/aosp/llama-cpp-patches/polarquant/README.md +37 -0
  804. package/scripts/aosp/llama-cpp-patches/qjl/README.md +37 -0
  805. package/scripts/aosp/seccomp-shim/sigsys-handler-arm64.c +169 -0
  806. package/scripts/aosp/seccomp-shim/sigsys-handler-riscv64.c +217 -0
  807. package/scripts/aosp/smoke-cuttlefish.mjs +34 -4
  808. package/scripts/aosp/stage-default-models.mjs +59 -35
  809. package/scripts/aosp/stage-default-models.test.mjs +23 -0
  810. package/scripts/aosp/variant-config-schema.ts +2 -2
  811. package/scripts/assert-required-bundled-packages.test.ts +555 -0
  812. package/scripts/audit-apple-store-sandbox.mjs +146 -0
  813. package/scripts/audit-live-test-surface.mjs +5 -2
  814. package/scripts/build-capacitor-app.mjs +21 -0
  815. package/scripts/build-flatpak.mjs +5 -5
  816. package/scripts/build-helpers/arm64-simd.mjs +72 -0
  817. package/scripts/build-helpers/omnivoice-merged.mjs +87 -0
  818. package/scripts/build-helpers/verify-fused-symbols.mjs +600 -0
  819. package/scripts/build-helpers/verify-fused-symbols.test.mjs +0 -0
  820. package/scripts/build-image.sh +1 -1
  821. package/scripts/build-llama-cpp-mtp.mjs +488 -0
  822. package/scripts/build-native-plugins.mjs +230 -18
  823. package/scripts/build-patched-electrobun-cli.mjs +68 -10
  824. package/scripts/build-win.mjs +1 -1
  825. package/scripts/bun-riscv64/Dockerfile +418 -0
  826. package/scripts/bun-riscv64/README.md +316 -0
  827. package/scripts/bun-riscv64/build.sh +469 -0
  828. package/scripts/bun-riscv64/bun-patches/0001-config-add-riscv64-arch.patch +74 -0
  829. package/scripts/bun-riscv64/bun-patches/0002-flags-add-riscv64-march-mabi.patch +16 -0
  830. package/scripts/bun-riscv64/bun-patches/0003-zig-add-riscv64-target-triple-and-cpu.patch +26 -0
  831. package/scripts/bun-riscv64/bun-patches/0004-webkit-force-local-mode-on-riscv64.patch +33 -0
  832. package/scripts/bun-riscv64/bun-patches/0005-tinycc-disable-on-riscv64.patch +16 -0
  833. package/scripts/bun-riscv64/bun-patches/0006-build-add-riscv64-cli-validation.patch +15 -0
  834. package/scripts/bun-riscv64/bun-patches/0007-deps-per-dep-riscv64-checks.patch +24 -0
  835. package/scripts/bun-riscv64/bun-patches/0008-source-stabilize-riscv64-musl-build.patch +226 -0
  836. package/scripts/bun-riscv64/bun-patches/0009-disable-wasm-streaming-hooks-for-c-loop.patch +162 -0
  837. package/scripts/bun-riscv64/bun-patches/0010-disable-inspector-profiler-for-riscv64-c-loop.patch +80 -0
  838. package/scripts/bun-riscv64/bun-patches/0011-process-arch-add-riscv64.patch +23 -0
  839. package/scripts/bun-riscv64/bun-patches/0012-cpu-features-add-riscv64-fallback.patch +13 -0
  840. package/scripts/bun-riscv64/bun-patches/0013-disable-console-inspector-hooks-for-riscv64-c-loop.patch +43 -0
  841. package/scripts/bun-riscv64/bun-patches/0014-disable-custom-inspector-dispatchers-on-riscv64.patch +127 -0
  842. package/scripts/bun-riscv64/bun-patches/0015-disable-jsc-profiler-builtins-on-riscv64.patch +75 -0
  843. package/scripts/bun-riscv64/bun-patches/0016-node-vm-disable-jit-cached-data-on-riscv64-c-loop.patch +96 -0
  844. package/scripts/bun-riscv64/bun-patches/0017-disable-performance-domjit-signature-on-riscv64-c-loop.patch +34 -0
  845. package/scripts/bun-riscv64/bun-patches/0018-fix-serialized-script-identifier-big-endian-path.patch +19 -0
  846. package/scripts/bun-riscv64/bun-patches/0019-add-wtf-timer-fire-bridge-for-c-loop.patch +24 -0
  847. package/scripts/bun-riscv64/bun-patches/0020-run-riscv64-smoke-test-under-qemu.patch +13 -0
  848. package/scripts/bun-riscv64/bun-patches/0021-fix-riscv64-linux-open-flags.patch +25 -0
  849. package/scripts/bun-riscv64/bun-patches/0022-zlib-riscv64-generic-kernels.patch +25 -0
  850. package/scripts/bun-riscv64/bun-patches/README.md +127 -0
  851. package/scripts/bun-riscv64/bun-version.json +202 -0
  852. package/scripts/bun-riscv64/run-build.sh +162 -0
  853. package/scripts/bun-riscv64/rust-core/0001-riscv64-rust-core-port.patch +868 -0
  854. package/scripts/bun-riscv64/rust-core/0002-second-wave-riscv64-source-gaps.patch +130 -0
  855. package/scripts/bun-riscv64/rust-core/0003-third-wave-riscv64-crash-handler-gaps.patch +78 -0
  856. package/scripts/bun-riscv64/rust-core/0004-rust-target-cpu-riscv64.patch +39 -0
  857. package/scripts/bun-riscv64/rust-core/0005-fifth-wave-riscv64-source-gaps.patch +96 -0
  858. package/scripts/bun-riscv64/rust-core/0006-cpp-wasm-and-inspector-guards-riscv64.patch +91 -0
  859. package/scripts/bun-riscv64/rust-core/0007-bun-alloc-max-align-t-riscv64.patch +36 -0
  860. package/scripts/bun-riscv64/rust-core/0008-workspace-lints-warn-not-deny-riscv64.patch +75 -0
  861. package/scripts/bun-riscv64/rust-core/0009-zigglobalobject-wasm-streaming-guards-riscv64.patch +109 -0
  862. package/scripts/bun-riscv64/rust-core/0010-tcc-externs-stub-on-riscv64.patch +62 -0
  863. package/scripts/bun-riscv64/rust-core/0011-clippy-ptr-cast-lints-warn-riscv64.patch +61 -0
  864. package/scripts/bun-riscv64/rust-core/README.md +80 -0
  865. package/scripts/bun-riscv64/rust-core/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  866. package/scripts/bun-riscv64/rust-core/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  867. package/scripts/bun-riscv64/rust-core/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  868. package/scripts/bun-riscv64/rust-core/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  869. package/scripts/bun-riscv64/rust-core/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +31 -0
  870. package/scripts/bun-riscv64/validate.sh +264 -0
  871. package/scripts/bun-riscv64/webkit-patches/0001-cherry-pick-llint-riscv64.recipe +155 -0
  872. package/scripts/bun-riscv64/webkit-patches/0002-cherry-pick-baseline-jit-riscv64.recipe +40 -0
  873. package/scripts/bun-riscv64/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  874. package/scripts/bun-riscv64/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  875. package/scripts/bun-riscv64/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  876. package/scripts/bun-riscv64/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  877. package/scripts/bun-riscv64/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +72 -0
  878. package/scripts/bun-riscv64/webkit-patches/README.md +146 -0
  879. package/scripts/check-homepage-public-readiness.mjs +353 -0
  880. package/scripts/check-homepage-release-data.mjs +110 -0
  881. package/scripts/check-i18n.mjs +1 -1
  882. package/scripts/check-real-local-chat.ts +147 -0
  883. package/scripts/check-real-local-provisioning.ts +104 -0
  884. package/scripts/check-real-local-reset.ts +249 -0
  885. package/scripts/check-sms-gateway-completion-audit.mjs +428 -0
  886. package/scripts/check-sms-gateway-readiness.mjs +266 -0
  887. package/scripts/clean-repo.mjs +5 -5
  888. package/scripts/codesign-mas.mjs +222 -16
  889. package/scripts/collect-docker-runtime-deps.mjs +229 -0
  890. package/scripts/continue-sms-gateway-work.mjs +121 -0
  891. package/scripts/copy-runtime-node-modules.ts +1050 -195
  892. package/scripts/deploy-cloud-api-production-gateway.mjs +52 -0
  893. package/scripts/desktop-build.mjs +965 -98
  894. package/scripts/dev-platform.mjs +346 -102
  895. package/scripts/dev-startup-smoke.mjs +248 -0
  896. package/scripts/dev-ui.mjs +418 -176
  897. package/scripts/disable-local-eliza-workspace.mjs +35 -0
  898. package/scripts/docker-ci-smoke.sh +465 -96
  899. package/scripts/docker-entrypoint.sh +62 -1
  900. package/scripts/docker-entrypoint.test.ts +283 -0
  901. package/scripts/ensure-avatars.mjs +2 -2
  902. package/scripts/ensure-electrobun-core.mjs +1 -1
  903. package/scripts/ensure-generated-core-proto-js.mjs +1 -1
  904. package/scripts/ensure-type-package-aliases.mjs +62 -5
  905. package/scripts/ensure-vision-deps.mjs +20 -1
  906. package/scripts/entry.ts +1 -1
  907. package/scripts/ffi-stub/Makefile +64 -0
  908. package/scripts/ffi-stub/README.md +391 -0
  909. package/scripts/ffi-stub/asr-ffi-smoke.ts +139 -0
  910. package/scripts/ffi-stub/ffi-stub.c +539 -0
  911. package/scripts/ffi-stub/ffi.h +538 -0
  912. package/scripts/ffi-stub/libelizainference_stub.so +0 -0
  913. package/scripts/ffi-stub/tts-stream-ffi-smoke.ts +349 -0
  914. package/scripts/generate-first-run-voicelines.mjs +194 -0
  915. package/scripts/generate-plugin-index.js +4 -3
  916. package/scripts/generate-static-asset-manifest.mjs +1 -1
  917. package/scripts/i18n-dynamic-keys.json +5 -5
  918. package/scripts/init-submodules.mjs +2 -2
  919. package/scripts/install-android-sms-gateway.md +177 -0
  920. package/scripts/install-android-sms-gateway.mjs +1088 -0
  921. package/scripts/ios-xcframework/README.md +74 -72
  922. package/scripts/ios-xcframework/build-xcframework.mjs +204 -43
  923. package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1943 -0
  924. package/scripts/ios-xcframework/runtime-symbol-shim.c +450 -0
  925. package/scripts/kernel-patches/cpu-polar-kernels.mjs +441 -0
  926. package/scripts/kernel-patches/cpu-simd-kernels.mjs +253 -0
  927. package/scripts/kernel-patches/cpu-thread-parallelism.mjs +368 -0
  928. package/scripts/kernel-patches/cuda-kernels.mjs +117 -0
  929. package/scripts/kernel-patches/metal-kernels.mjs +1698 -109
  930. package/scripts/kernel-patches/server-omnivoice-route.mjs +718 -0
  931. package/scripts/kernel-patches/server-structured-output.mjs +279 -0
  932. package/scripts/kernel-patches/vulkan-dispatch-log.mjs +166 -0
  933. package/scripts/kernel-patches/vulkan-dispatch-log.test.mjs +50 -0
  934. package/scripts/kernel-patches/vulkan-dispatch-patches/01-vulkan-shaders-gen.patch +30 -16
  935. package/scripts/kernel-patches/vulkan-dispatch-patches/02-ggml-vulkan-pipelines.patch +75 -30
  936. package/scripts/kernel-patches/vulkan-kernels.mjs +800 -49
  937. package/scripts/lib/agent-source-watcher.mjs +173 -0
  938. package/scripts/lib/agent-source-watcher.test.mjs +184 -0
  939. package/scripts/lib/api-supervisor.mjs +78 -9
  940. package/scripts/lib/api-supervisor.test.mjs +121 -0
  941. package/scripts/lib/app-dir.mjs +2 -16
  942. package/scripts/lib/apple-entitlement-audit.mjs +655 -0
  943. package/scripts/lib/apple-entitlement-audit.test.mjs +144 -0
  944. package/scripts/lib/artifact-staleness.d.mts +33 -0
  945. package/scripts/lib/artifact-staleness.mjs +122 -0
  946. package/scripts/lib/artifact-staleness.test.mts +98 -0
  947. package/scripts/lib/bun-version-guard.mjs +13 -13
  948. package/scripts/lib/capacitor-plugin-build-needed.mjs +4 -3
  949. package/scripts/lib/capacitor-plugin-names.mjs +30 -14
  950. package/scripts/lib/desktop-preflight.mjs +9 -5
  951. package/scripts/lib/desktop-startup-embedding-warmup-policy.mjs +51 -0
  952. package/scripts/lib/desktop-startup-embedding-warmup-policy.test.mjs +55 -0
  953. package/scripts/lib/duet-bridge.d.mts +63 -0
  954. package/scripts/lib/duet-bridge.mjs +193 -0
  955. package/scripts/lib/ios-plist-url-scheme.mjs +80 -0
  956. package/scripts/lib/mobile-build-decisions.mjs +97 -0
  957. package/scripts/lib/node-path-env.mjs +4 -2
  958. package/scripts/lib/orchestrator-desktop-dev-banner.mjs +12 -3
  959. package/scripts/lib/patch-bun-exports.mjs +90 -27
  960. package/scripts/lib/patch-bun-exports.test.mjs +79 -0
  961. package/scripts/lib/renderer-build-action.mjs +35 -0
  962. package/scripts/lib/renderer-build-action.test.mjs +70 -0
  963. package/scripts/lib/renderer-build-manifest.d.mts +65 -0
  964. package/scripts/lib/renderer-build-manifest.mjs +257 -0
  965. package/scripts/lib/renderer-build-manifest.test.mts +277 -0
  966. package/scripts/lib/stage-android-agent.mjs +757 -99
  967. package/scripts/lib/sync-eliza-env-aliases.mjs +3 -25
  968. package/scripts/lib/ui-smoke-stub-decision.mjs +33 -0
  969. package/scripts/lib/ui-smoke-stub-decision.test.mjs +46 -0
  970. package/scripts/lib/verify-ondevice-artifact.d.mts +16 -0
  971. package/scripts/lib/verify-ondevice-artifact.mjs +61 -0
  972. package/scripts/lib/verify-ondevice-artifact.test.mts +98 -0
  973. package/scripts/lib/vite-renderer-dist-stale.mjs +5 -0
  974. package/scripts/lib/voice-latency-report.mjs +154 -0
  975. package/scripts/lib/websocket-pending-queue.ts +92 -0
  976. package/scripts/lifeops-prompt-benchmark.ts +21 -12
  977. package/scripts/link-docker-local-app-packages.mjs +109 -36
  978. package/scripts/local-stt-bench.ts +192 -0
  979. package/scripts/maintain-cloud-api-production-gateway.mjs +54 -0
  980. package/scripts/mas-smoke.mjs +459 -0
  981. package/scripts/mas-smoke.test.mjs +220 -0
  982. package/scripts/mobile-auth-simulator-smoke.mjs +0 -1
  983. package/scripts/normalize-eliza-capture.ts +97 -0
  984. package/scripts/omnivoice-fuse/prepare.mjs +2543 -23
  985. package/scripts/pack-upstreams.mjs +65 -5
  986. package/scripts/package-electrobun-linux.mjs +303 -0
  987. package/scripts/patch-deps.mjs +5 -3
  988. package/scripts/patches/llama-asr-word-timestamps.patch +218 -0
  989. package/scripts/playwright-ui-live-stack.ts +588 -157
  990. package/scripts/playwright-ui-smoke-api-stub.mjs +3495 -111
  991. package/scripts/pre-review-local.mjs +2 -2
  992. package/scripts/prepare-ios-cocoapods.sh +41 -3
  993. package/scripts/release-check.ts +180 -84
  994. package/scripts/relink-workspace-packages-to-dist.mjs +21 -4
  995. package/scripts/rt.mjs +16 -1
  996. package/scripts/run-biome-check.mjs +1 -1
  997. package/scripts/run-coding-agent-e2e.mjs +3 -3
  998. package/scripts/run-eliza-app-core-script.mjs +34 -0
  999. package/scripts/run-local-plugin-live-smoke.mjs +66 -2
  1000. package/scripts/run-mobile-build-android-app-actions.test.mjs +426 -0
  1001. package/scripts/run-mobile-build-brand-separation.test.mts +33 -0
  1002. package/scripts/run-mobile-build-ios-engine-gate.test.mjs +85 -0
  1003. package/scripts/run-mobile-build-mtp-staleness.test.mts +198 -0
  1004. package/scripts/run-mobile-build.mjs +5082 -610
  1005. package/scripts/run-node-runtime.mjs +184 -7
  1006. package/scripts/run-node-runtime.test.mjs +167 -0
  1007. package/scripts/run-node-tsx.mjs +80 -33
  1008. package/scripts/run-node.mjs +41 -1
  1009. package/scripts/run-production-build.mjs +34 -27
  1010. package/scripts/run-release-check.mjs +19 -0
  1011. package/scripts/run-release-contract-suite.mjs +107 -14
  1012. package/scripts/run-ui-smoke-playwright-suite.mjs +0 -2
  1013. package/scripts/runtime-package-manifest.ts +21 -3
  1014. package/scripts/serve-real-local-agent.ts +72 -0
  1015. package/scripts/setup-upstreams.mjs +42 -1
  1016. package/scripts/sms-gateway-status.mjs +194 -0
  1017. package/scripts/stage-android-agent.test.mjs +97 -0
  1018. package/scripts/stage-desktop-fused-lib.mjs +453 -0
  1019. package/scripts/stage-elizavoice-lib.mjs +363 -0
  1020. package/scripts/startup-integration-script-drift.test.ts +82 -4
  1021. package/scripts/streaming-pipeline-bench.ts +543 -0
  1022. package/scripts/sync-homepage-porkbun-dns.mjs +262 -0
  1023. package/scripts/test-sms-gateway-software.mjs +100 -0
  1024. package/scripts/type-audit.mjs +1 -1
  1025. package/scripts/validate-bluebubbles-outbound.mjs +293 -0
  1026. package/scripts/validate-cdn-assets.mjs +15 -7
  1027. package/scripts/validate-regression-matrix.mjs +109 -8
  1028. package/scripts/verify-android-sms-gateway-e2e.mjs +362 -0
  1029. package/scripts/verify-bluebubbles-gateway-e2e.mjs +191 -0
  1030. package/scripts/verify-bluebubbles-inbound-readiness.mjs +88 -0
  1031. package/scripts/verify-cloud-api-production-deploy.mjs +87 -0
  1032. package/scripts/verify-cloud-sms-onboarding-flow.mjs +336 -0
  1033. package/scripts/verify-ondevice-artifact.mjs +111 -0
  1034. package/scripts/voice/freeze-voice.mjs +521 -0
  1035. package/scripts/voice-attribution-smoke.ts +644 -0
  1036. package/scripts/voice-create-profile.mjs +379 -0
  1037. package/scripts/voice-duet.mjs +1355 -0
  1038. package/scripts/voice-e2e-hardware.ts +877 -0
  1039. package/scripts/voice-interactive.mjs +1721 -0
  1040. package/scripts/voice-latency-report.mjs +96 -0
  1041. package/scripts/voice-latency-report.test.ts +176 -0
  1042. package/scripts/voice-preset/build-default-voice-preset.mjs +249 -0
  1043. package/scripts/voice-preset/build-onboarding-voice.mjs +281 -0
  1044. package/scripts/watch-sms-gateway-readiness.mjs +303 -0
  1045. package/scripts/write-homepage-release-data.mjs +458 -26
  1046. package/security/agent-vault-id.d.ts +2 -2
  1047. package/security/agent-vault-id.js +1 -1
  1048. package/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -1
  1049. package/security/hydrate-wallet-keys-from-platform-store.js +23 -14
  1050. package/security/platform-secure-store-node.d.ts +3 -3
  1051. package/security/platform-secure-store-node.js +3 -3
  1052. package/security/wallet-os-store-actions.d.ts +0 -9
  1053. package/security/wallet-os-store-actions.d.ts.map +1 -1
  1054. package/security/wallet-os-store-actions.js +3 -10
  1055. package/services/account-pool.d.ts +23 -14
  1056. package/services/account-pool.d.ts.map +1 -1
  1057. package/services/account-pool.js +86 -24
  1058. package/services/account-usage.d.ts.map +1 -1
  1059. package/services/account-usage.js +2 -5
  1060. package/services/ambient-audio/consent.d.ts +9 -0
  1061. package/services/ambient-audio/consent.d.ts.map +1 -0
  1062. package/services/ambient-audio/consent.js +28 -0
  1063. package/services/ambient-audio/index.d.ts +7 -0
  1064. package/services/ambient-audio/index.d.ts.map +1 -0
  1065. package/services/ambient-audio/index.js +4 -0
  1066. package/services/ambient-audio/replay-buffer.d.ts +14 -0
  1067. package/services/ambient-audio/replay-buffer.d.ts.map +1 -0
  1068. package/services/ambient-audio/replay-buffer.js +66 -0
  1069. package/services/ambient-audio/response-gate.d.ts +3 -0
  1070. package/services/ambient-audio/response-gate.d.ts.map +1 -0
  1071. package/services/ambient-audio/response-gate.js +33 -0
  1072. package/services/ambient-audio/service.d.ts +22 -0
  1073. package/services/ambient-audio/service.d.ts.map +1 -0
  1074. package/services/ambient-audio/service.js +47 -0
  1075. package/services/ambient-audio/types.d.ts +42 -0
  1076. package/services/ambient-audio/types.d.ts.map +1 -0
  1077. package/services/app-updates/update-policy.d.ts +64 -0
  1078. package/services/app-updates/update-policy.d.ts.map +1 -0
  1079. package/services/app-updates/update-policy.js +228 -0
  1080. package/services/auth-store.d.ts +37 -1
  1081. package/services/auth-store.d.ts.map +1 -1
  1082. package/services/auth-store.js +59 -26
  1083. package/services/cloud-jwks-store.d.ts +3 -3
  1084. package/services/cloud-jwks-store.d.ts.map +1 -1
  1085. package/services/cloud-jwks-store.js +5 -8
  1086. package/services/coding-account-bridge.d.ts +71 -0
  1087. package/services/coding-account-bridge.d.ts.map +1 -0
  1088. package/services/coding-account-bridge.js +267 -0
  1089. package/services/connector-target-catalog.d.ts +11 -4
  1090. package/services/connector-target-catalog.d.ts.map +1 -1
  1091. package/services/connector-target-catalog.js +7 -4
  1092. package/services/credential-tunnel-service.d.ts +66 -0
  1093. package/services/credential-tunnel-service.d.ts.map +1 -0
  1094. package/services/credential-tunnel-service.js +227 -0
  1095. package/services/github-credentials.d.ts +1 -1
  1096. package/services/github-credentials.js +1 -1
  1097. package/services/inference-abort.d.ts +47 -0
  1098. package/services/inference-abort.d.ts.map +1 -0
  1099. package/services/inference-abort.js +76 -0
  1100. package/services/persistence.d.ts +2 -3
  1101. package/services/persistence.d.ts.map +1 -1
  1102. package/services/persistence.js +2 -3
  1103. package/services/phrase-chunked-tts.d.ts +136 -0
  1104. package/services/phrase-chunked-tts.d.ts.map +1 -0
  1105. package/services/phrase-chunked-tts.js +208 -0
  1106. package/services/sandbox-registry.d.ts +78 -0
  1107. package/services/sandbox-registry.d.ts.map +1 -0
  1108. package/services/sandbox-registry.js +323 -0
  1109. package/services/secrets-manager-installer.d.ts +8 -1
  1110. package/services/secrets-manager-installer.d.ts.map +1 -1
  1111. package/services/secrets-manager-installer.js +27 -2
  1112. package/services/sensitive-requests/cloud-link-adapter.d.ts +15 -0
  1113. package/services/sensitive-requests/cloud-link-adapter.d.ts.map +1 -0
  1114. package/services/sensitive-requests/cloud-link-adapter.js +73 -0
  1115. package/services/sensitive-requests/index.d.ts +27 -0
  1116. package/services/sensitive-requests/index.d.ts.map +1 -0
  1117. package/services/sensitive-requests/index.js +51 -0
  1118. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts +14 -0
  1119. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts.map +1 -0
  1120. package/services/sensitive-requests/instruct-dm-only-adapter.js +22 -0
  1121. package/services/sensitive-requests/owner-app-inline-adapter.d.ts +3 -0
  1122. package/services/sensitive-requests/owner-app-inline-adapter.d.ts.map +1 -0
  1123. package/services/sensitive-requests/owner-app-inline-adapter.js +146 -0
  1124. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts +3 -0
  1125. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts.map +1 -0
  1126. package/services/sensitive-requests/owner-app-oauth-adapter.js +156 -0
  1127. package/services/sensitive-requests/public-link-adapter.d.ts +14 -0
  1128. package/services/sensitive-requests/public-link-adapter.d.ts.map +1 -0
  1129. package/services/sensitive-requests/public-link-adapter.js +86 -0
  1130. package/services/sensitive-requests/tunnel-link-adapter.d.ts +17 -0
  1131. package/services/sensitive-requests/tunnel-link-adapter.d.ts.map +1 -0
  1132. package/services/sensitive-requests/tunnel-link-adapter.js +38 -0
  1133. package/services/steward-credentials.d.ts +1 -1
  1134. package/services/steward-credentials.d.ts.map +1 -1
  1135. package/services/steward-credentials.js +10 -6
  1136. package/services/steward-sidecar/health-check.d.ts.map +1 -1
  1137. package/services/steward-sidecar/health-check.js +4 -3
  1138. package/services/steward-sidecar/process-management.d.ts +1 -1
  1139. package/services/steward-sidecar/process-management.d.ts.map +1 -1
  1140. package/services/steward-sidecar/process-management.js +9 -3
  1141. package/services/steward-sidecar/types.d.ts +1 -1
  1142. package/services/steward-sidecar/types.d.ts.map +1 -1
  1143. package/services/steward-sidecar/wallet-setup.d.ts +1 -1
  1144. package/services/steward-sidecar/wallet-setup.d.ts.map +1 -1
  1145. package/services/steward-sidecar/wallet-setup.js +8 -7
  1146. package/services/steward-sidecar.d.ts +5 -5
  1147. package/services/steward-sidecar.d.ts.map +1 -1
  1148. package/services/steward-sidecar.js +27 -19
  1149. package/services/task-host-capabilities.d.ts +60 -0
  1150. package/services/task-host-capabilities.d.ts.map +1 -0
  1151. package/services/task-host-capabilities.js +122 -0
  1152. package/services/tool-call-cache/index.d.ts +2 -2
  1153. package/services/tool-call-cache/index.d.ts.map +1 -1
  1154. package/services/tool-call-cache/index.js +1 -1
  1155. package/services/trigger-event-bridge.js +1 -1
  1156. package/services/tunnel-to-mobile/index.d.ts +2 -0
  1157. package/services/tunnel-to-mobile/index.d.ts.map +1 -0
  1158. package/services/tunnel-to-mobile/index.js +1 -0
  1159. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts +105 -0
  1160. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts.map +1 -0
  1161. package/services/tunnel-to-mobile/tunnel-to-mobile-client.js +190 -0
  1162. package/services/vault-bootstrap.d.ts.map +1 -1
  1163. package/services/vault-bootstrap.js +52 -21
  1164. package/services/vault-mirror.d.ts +1 -1
  1165. package/services/vault-mirror.d.ts.map +1 -1
  1166. package/services/vault-mirror.js +29 -6
  1167. package/services/voice-profiles/diarization-pipeline.d.ts +6 -0
  1168. package/services/voice-profiles/diarization-pipeline.d.ts.map +1 -0
  1169. package/services/voice-profiles/diarization-pipeline.js +20 -0
  1170. package/services/voice-profiles/index.d.ts +12 -0
  1171. package/services/voice-profiles/index.d.ts.map +1 -0
  1172. package/services/voice-profiles/index.js +5 -0
  1173. package/services/voice-profiles/nickname-evaluator.d.ts +14 -0
  1174. package/services/voice-profiles/nickname-evaluator.d.ts.map +1 -0
  1175. package/services/voice-profiles/nickname-evaluator.js +46 -0
  1176. package/services/voice-profiles/owner-confidence.d.ts +10 -0
  1177. package/services/voice-profiles/owner-confidence.d.ts.map +1 -0
  1178. package/services/voice-profiles/owner-confidence.js +38 -0
  1179. package/services/voice-profiles/private-challenge.d.ts +20 -0
  1180. package/services/voice-profiles/private-challenge.d.ts.map +1 -0
  1181. package/services/voice-profiles/private-challenge.js +44 -0
  1182. package/services/voice-profiles/store.d.ts +21 -0
  1183. package/services/voice-profiles/store.d.ts.map +1 -0
  1184. package/services/voice-profiles/store.js +50 -0
  1185. package/services/voice-profiles/types.d.ts +38 -0
  1186. package/services/voice-profiles/types.d.ts.map +1 -0
  1187. package/services/voice-profiles/types.js +1 -0
  1188. package/styles/electrobun-mac-window-drag.css +4 -4
  1189. package/test/helpers/__tests__/live-agent-test.smoke.test.ts +43 -70
  1190. package/test/helpers/browser-mocks.ts +2 -2
  1191. package/test/helpers/conditional-tests.ts +2 -2
  1192. package/test/helpers/live-agent-test.ts +537 -551
  1193. package/test/helpers/live-provider.test.ts +95 -5
  1194. package/test/helpers/live-provider.ts +234 -56
  1195. package/test/helpers/live-runtime-server.ts +4 -4
  1196. package/test/helpers/pglite-runtime.ts +1 -1
  1197. package/test/helpers/real-runtime.ts +72 -20
  1198. package/test/helpers/trajectory-harness.ts +11 -7
  1199. package/test/scripts/start-eliza-live.ts +9 -0
  1200. package/test/scripts/test-parallel.mjs +1 -1
  1201. package/test/scripts/test-root-unit.mjs +6 -7
  1202. package/test/scripts/websocket-pending-queue.test.ts +119 -0
  1203. package/test-support/test-helpers.d.ts +0 -33
  1204. package/test-support/test-helpers.d.ts.map +1 -1
  1205. package/test-support/test-helpers.js +81 -189
  1206. package/ui-compat.d.ts +14 -2
  1207. package/ui-compat.d.ts.map +1 -1
  1208. package/ui-compat.js +23 -3
  1209. package/api/auth-pairing-compat-routes.d.ts +0 -17
  1210. package/api/auth-pairing-compat-routes.d.ts.map +0 -1
  1211. package/api/auth-pairing-compat-routes.js +0 -301
  1212. package/api/local-inference-compat-routes.d.ts +0 -16
  1213. package/api/local-inference-compat-routes.d.ts.map +0 -1
  1214. package/api/local-inference-compat-routes.js +0 -617
  1215. package/api/onboarding-compat-routes.d.ts +0 -4
  1216. package/api/onboarding-compat-routes.d.ts.map +0 -1
  1217. package/api/onboarding-compat-routes.js +0 -207
  1218. package/api/plugins-compat-routes.d.ts +0 -103
  1219. package/api/plugins-compat-routes.d.ts.map +0 -1
  1220. package/api/plugins-compat-routes.js +0 -1181
  1221. package/api/server-onboarding-compat.d.ts +0 -31
  1222. package/api/server-onboarding-compat.d.ts.map +0 -1
  1223. package/api/server-onboarding-compat.js +0 -283
  1224. package/benchmark/cua-routes.d.ts +0 -10
  1225. package/benchmark/cua-routes.d.ts.map +0 -1
  1226. package/benchmark/cua-routes.js +0 -179
  1227. package/benchmark/mock-plugin-base.d.ts +0 -9
  1228. package/benchmark/mock-plugin-base.d.ts.map +0 -1
  1229. package/benchmark/mock-plugin-base.js +0 -325
  1230. package/cli/parse-duration.d.ts +0 -5
  1231. package/cli/parse-duration.d.ts.map +0 -1
  1232. package/cli/parse-duration.js +0 -27
  1233. package/patches/llama-cpp-capacitor@0.1.5.patch +0 -2387
  1234. package/platform/agent-browser-stub.d.ts +0 -27
  1235. package/platform/agent-browser-stub.d.ts.map +0 -1
  1236. package/platform/agent-browser-stub.js +0 -16
  1237. package/platforms/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +0 -26
  1238. package/platforms/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  1239. package/platforms/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  1240. package/platforms/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +0 -18
  1241. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512@2x.png +0 -0
  1242. package/platforms/electrobun/assets/appIcon.png +0 -0
  1243. package/platforms/electrobun/scripts/build-whisper-universal.sh +0 -137
  1244. package/platforms/electrobun/scripts/build-whisper.sh +0 -95
  1245. package/platforms/electrobun/scripts/ensure-whisper-model.sh +0 -93
  1246. package/platforms/electrobun/src/libMacWindowEffects.dylib +0 -0
  1247. package/platforms/electrobun/src/native/whisper.ts +0 -280
  1248. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  1249. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  1250. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  1251. package/registry/generate-apps.d.ts +0 -2
  1252. package/registry/generate-apps.d.ts.map +0 -1
  1253. package/registry/generate-apps.js +0 -338
  1254. package/registry/generate.d.ts +0 -2
  1255. package/registry/generate.d.ts.map +0 -1
  1256. package/registry/generate.js +0 -506
  1257. package/registry/loader.d.ts +0 -27
  1258. package/registry/loader.d.ts.map +0 -1
  1259. package/registry/loader.js +0 -111
  1260. package/registry/schema.d.ts +0 -989
  1261. package/registry/schema.d.ts.map +0 -1
  1262. package/registry/schema.js +0 -264
  1263. package/runtime/embedding-manager-support.d.ts +0 -77
  1264. package/runtime/embedding-manager-support.d.ts.map +0 -1
  1265. package/runtime/embedding-manager-support.js +0 -309
  1266. package/runtime/embedding-presets.d.ts +0 -5
  1267. package/runtime/embedding-presets.d.ts.map +0 -1
  1268. package/runtime/embedding-presets.js +0 -47
  1269. package/runtime/embedding-warmup-policy.d.ts +0 -13
  1270. package/runtime/embedding-warmup-policy.d.ts.map +0 -1
  1271. package/runtime/embedding-warmup-policy.js +0 -33
  1272. package/runtime/ensure-local-inference-handler.d.ts +0 -25
  1273. package/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  1274. package/runtime/ensure-local-inference-handler.js +0 -389
  1275. package/runtime/mobile-local-inference-gate.d.ts +0 -21
  1276. package/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  1277. package/runtime/mobile-local-inference-gate.js +0 -24
  1278. package/scripts/aosp/avd-test.mjs +0 -403
  1279. package/scripts/aosp/boot-validate.mjs +0 -536
  1280. package/scripts/aosp/build-aosp.mjs +0 -448
  1281. package/scripts/aosp/build-bootanimation.mjs +0 -178
  1282. package/scripts/aosp/capture-screens.mjs +0 -325
  1283. package/scripts/aosp/e2e-validate.mjs +0 -225
  1284. package/scripts/aosp/lint-init-rc.mjs +0 -258
  1285. package/scripts/aosp/llama-shim/eliza_llama_shim.c +0 -276
  1286. package/scripts/aosp/sim.mjs +0 -277
  1287. package/scripts/aosp/sync-to-aosp.mjs +0 -134
  1288. package/scripts/aosp/validate.mjs +0 -1273
  1289. package/scripts/build-llama-cpp-dflash.mjs +0 -1866
  1290. package/scripts/generate-onboarding-voicelines.mjs +0 -194
  1291. package/scripts/generated/static-asset-manifest.json +0 -4
  1292. package/scripts/normalize-parallax-capture.ts +0 -97
  1293. package/scripts/omnivoice-fuse/Makefile +0 -44
  1294. package/scripts/omnivoice-fuse/README.md +0 -266
  1295. package/scripts/omnivoice-fuse/cmake-graft.mjs +0 -180
  1296. package/scripts/omnivoice-fuse/ffi-stub.c +0 -222
  1297. package/scripts/omnivoice-fuse/ffi.h +0 -158
  1298. package/scripts/omnivoice-fuse/libelizainference_stub.dylib +0 -0
  1299. package/scripts/omnivoice-fuse/verify-symbols.mjs +0 -138
  1300. package/security/cloud-secret-store.d.ts +0 -34
  1301. package/security/cloud-secret-store.d.ts.map +0 -1
  1302. package/security/cloud-secret-store.js +0 -65
  1303. package/security/export-guard.d.ts +0 -34
  1304. package/security/export-guard.d.ts.map +0 -1
  1305. package/security/export-guard.js +0 -127
  1306. package/services/local-inference/__stress__/cache-stress-helpers.d.ts +0 -76
  1307. package/services/local-inference/__stress__/cache-stress-helpers.d.ts.map +0 -1
  1308. package/services/local-inference/__stress__/cache-stress-helpers.js +0 -238
  1309. package/services/local-inference/active-model.d.ts +0 -180
  1310. package/services/local-inference/active-model.d.ts.map +0 -1
  1311. package/services/local-inference/active-model.js +0 -362
  1312. package/services/local-inference/assignments.d.ts +0 -58
  1313. package/services/local-inference/assignments.d.ts.map +0 -1
  1314. package/services/local-inference/assignments.js +0 -179
  1315. package/services/local-inference/backend.d.ts +0 -200
  1316. package/services/local-inference/backend.d.ts.map +0 -1
  1317. package/services/local-inference/backend.js +0 -242
  1318. package/services/local-inference/bundled-models.d.ts +0 -34
  1319. package/services/local-inference/bundled-models.d.ts.map +0 -1
  1320. package/services/local-inference/bundled-models.js +0 -104
  1321. package/services/local-inference/cache-bridge.d.ts +0 -184
  1322. package/services/local-inference/cache-bridge.d.ts.map +0 -1
  1323. package/services/local-inference/cache-bridge.js +0 -333
  1324. package/services/local-inference/catalog.d.ts +0 -57
  1325. package/services/local-inference/catalog.d.ts.map +0 -1
  1326. package/services/local-inference/catalog.js +0 -262
  1327. package/services/local-inference/conversation-registry.d.ts +0 -122
  1328. package/services/local-inference/conversation-registry.d.ts.map +0 -1
  1329. package/services/local-inference/conversation-registry.js +0 -182
  1330. package/services/local-inference/device-bridge.d.ts +0 -139
  1331. package/services/local-inference/device-bridge.d.ts.map +0 -1
  1332. package/services/local-inference/device-bridge.js +0 -774
  1333. package/services/local-inference/dflash-doctor.d.ts +0 -27
  1334. package/services/local-inference/dflash-doctor.d.ts.map +0 -1
  1335. package/services/local-inference/dflash-doctor.js +0 -149
  1336. package/services/local-inference/dflash-server.d.ts +0 -248
  1337. package/services/local-inference/dflash-server.d.ts.map +0 -1
  1338. package/services/local-inference/dflash-server.js +0 -1076
  1339. package/services/local-inference/downloader.d.ts +0 -48
  1340. package/services/local-inference/downloader.d.ts.map +0 -1
  1341. package/services/local-inference/downloader.js +0 -688
  1342. package/services/local-inference/engine.d.ts +0 -282
  1343. package/services/local-inference/engine.d.ts.map +0 -1
  1344. package/services/local-inference/engine.js +0 -743
  1345. package/services/local-inference/external-scanner.d.ts +0 -17
  1346. package/services/local-inference/external-scanner.d.ts.map +0 -1
  1347. package/services/local-inference/external-scanner.js +0 -261
  1348. package/services/local-inference/handler-registry.d.ts +0 -72
  1349. package/services/local-inference/handler-registry.d.ts.map +0 -1
  1350. package/services/local-inference/handler-registry.js +0 -159
  1351. package/services/local-inference/hardware.d.ts +0 -26
  1352. package/services/local-inference/hardware.d.ts.map +0 -1
  1353. package/services/local-inference/hardware.js +0 -139
  1354. package/services/local-inference/hf-search.d.ts +0 -19
  1355. package/services/local-inference/hf-search.d.ts.map +0 -1
  1356. package/services/local-inference/hf-search.js +0 -169
  1357. package/services/local-inference/index.d.ts +0 -10
  1358. package/services/local-inference/index.d.ts.map +0 -1
  1359. package/services/local-inference/index.js +0 -7
  1360. package/services/local-inference/llama-server-metrics.d.ts +0 -108
  1361. package/services/local-inference/llama-server-metrics.d.ts.map +0 -1
  1362. package/services/local-inference/llama-server-metrics.js +0 -175
  1363. package/services/local-inference/manifest/index.d.ts +0 -4
  1364. package/services/local-inference/manifest/index.d.ts.map +0 -1
  1365. package/services/local-inference/manifest/index.js +0 -5
  1366. package/services/local-inference/manifest/schema.d.ts +0 -419
  1367. package/services/local-inference/manifest/schema.d.ts.map +0 -1
  1368. package/services/local-inference/manifest/schema.js +0 -227
  1369. package/services/local-inference/manifest/types.d.ts +0 -23
  1370. package/services/local-inference/manifest/types.d.ts.map +0 -1
  1371. package/services/local-inference/manifest/types.js +0 -5
  1372. package/services/local-inference/manifest/validator.d.ts +0 -43
  1373. package/services/local-inference/manifest/validator.d.ts.map +0 -1
  1374. package/services/local-inference/manifest/validator.js +0 -187
  1375. package/services/local-inference/paths.d.ts +0 -8
  1376. package/services/local-inference/paths.d.ts.map +0 -1
  1377. package/services/local-inference/paths.js +0 -7
  1378. package/services/local-inference/providers.d.ts +0 -61
  1379. package/services/local-inference/providers.d.ts.map +0 -1
  1380. package/services/local-inference/providers.js +0 -334
  1381. package/services/local-inference/ram-budget.d.ts +0 -57
  1382. package/services/local-inference/ram-budget.d.ts.map +0 -1
  1383. package/services/local-inference/ram-budget.js +0 -107
  1384. package/services/local-inference/readiness.d.ts +0 -9
  1385. package/services/local-inference/readiness.d.ts.map +0 -1
  1386. package/services/local-inference/readiness.js +0 -153
  1387. package/services/local-inference/recommendation.d.ts +0 -62
  1388. package/services/local-inference/recommendation.d.ts.map +0 -1
  1389. package/services/local-inference/recommendation.js +0 -309
  1390. package/services/local-inference/registry.d.ts +0 -35
  1391. package/services/local-inference/registry.d.ts.map +0 -1
  1392. package/services/local-inference/registry.js +0 -117
  1393. package/services/local-inference/router-handler.d.ts +0 -51
  1394. package/services/local-inference/router-handler.d.ts.map +0 -1
  1395. package/services/local-inference/router-handler.js +0 -165
  1396. package/services/local-inference/routing-policy.d.ts +0 -55
  1397. package/services/local-inference/routing-policy.d.ts.map +0 -1
  1398. package/services/local-inference/routing-policy.js +0 -195
  1399. package/services/local-inference/routing-preferences.d.ts +0 -8
  1400. package/services/local-inference/routing-preferences.d.ts.map +0 -1
  1401. package/services/local-inference/routing-preferences.js +0 -7
  1402. package/services/local-inference/service.d.ts +0 -88
  1403. package/services/local-inference/service.d.ts.map +0 -1
  1404. package/services/local-inference/service.js +0 -210
  1405. package/services/local-inference/session-pool.d.ts +0 -72
  1406. package/services/local-inference/session-pool.d.ts.map +0 -1
  1407. package/services/local-inference/session-pool.js +0 -125
  1408. package/services/local-inference/types.d.ts +0 -309
  1409. package/services/local-inference/types.d.ts.map +0 -1
  1410. package/services/local-inference/types.js +0 -23
  1411. package/services/local-inference/verify.d.ts +0 -8
  1412. package/services/local-inference/verify.d.ts.map +0 -1
  1413. package/services/local-inference/verify.js +0 -7
  1414. package/services/local-inference/voice/barge-in.d.ts +0 -15
  1415. package/services/local-inference/voice/barge-in.d.ts.map +0 -1
  1416. package/services/local-inference/voice/barge-in.js +0 -20
  1417. package/services/local-inference/voice/engine-bridge.d.ts +0 -256
  1418. package/services/local-inference/voice/engine-bridge.d.ts.map +0 -1
  1419. package/services/local-inference/voice/engine-bridge.js +0 -398
  1420. package/services/local-inference/voice/ffi-bindings.d.ts +0 -114
  1421. package/services/local-inference/voice/ffi-bindings.d.ts.map +0 -1
  1422. package/services/local-inference/voice/ffi-bindings.js +0 -281
  1423. package/services/local-inference/voice/index.d.ts +0 -51
  1424. package/services/local-inference/voice/index.d.ts.map +0 -1
  1425. package/services/local-inference/voice/index.js +0 -50
  1426. package/services/local-inference/voice/lifecycle.d.ts +0 -135
  1427. package/services/local-inference/voice/lifecycle.d.ts.map +0 -1
  1428. package/services/local-inference/voice/lifecycle.js +0 -189
  1429. package/services/local-inference/voice/phoneme-tokenizer.d.ts +0 -58
  1430. package/services/local-inference/voice/phoneme-tokenizer.d.ts.map +0 -1
  1431. package/services/local-inference/voice/phoneme-tokenizer.js +0 -53
  1432. package/services/local-inference/voice/phrase-cache.d.ts +0 -24
  1433. package/services/local-inference/voice/phrase-cache.d.ts.map +0 -1
  1434. package/services/local-inference/voice/phrase-cache.js +0 -32
  1435. package/services/local-inference/voice/phrase-chunker.d.ts +0 -20
  1436. package/services/local-inference/voice/phrase-chunker.d.ts.map +0 -1
  1437. package/services/local-inference/voice/phrase-chunker.js +0 -85
  1438. package/services/local-inference/voice/ring-buffer.d.ts +0 -40
  1439. package/services/local-inference/voice/ring-buffer.d.ts.map +0 -1
  1440. package/services/local-inference/voice/ring-buffer.js +0 -85
  1441. package/services/local-inference/voice/rollback-queue.d.ts +0 -24
  1442. package/services/local-inference/voice/rollback-queue.d.ts.map +0 -1
  1443. package/services/local-inference/voice/rollback-queue.js +0 -49
  1444. package/services/local-inference/voice/scheduler.d.ts +0 -47
  1445. package/services/local-inference/voice/scheduler.d.ts.map +0 -1
  1446. package/services/local-inference/voice/scheduler.js +0 -123
  1447. package/services/local-inference/voice/shared-resources.d.ts +0 -119
  1448. package/services/local-inference/voice/shared-resources.d.ts.map +0 -1
  1449. package/services/local-inference/voice/shared-resources.js +0 -83
  1450. package/services/local-inference/voice/speaker-preset-cache.d.ts +0 -28
  1451. package/services/local-inference/voice/speaker-preset-cache.d.ts.map +0 -1
  1452. package/services/local-inference/voice/speaker-preset-cache.js +0 -44
  1453. package/services/local-inference/voice/types.d.ts +0 -80
  1454. package/services/local-inference/voice/types.d.ts.map +0 -1
  1455. package/services/local-inference/voice/voice-preset-format.d.ts +0 -56
  1456. package/services/local-inference/voice/voice-preset-format.d.ts.map +0 -1
  1457. package/services/local-inference/voice/voice-preset-format.js +0 -184
  1458. package/services/plugin-installer.d.ts +0 -22
  1459. package/services/plugin-installer.d.ts.map +0 -1
  1460. package/services/plugin-installer.js +0 -41
  1461. package/test/helpers/i18n.ts +0 -5
  1462. package/test/helpers/loopback.ts +0 -33
  1463. package/test/helpers/react-test.ts +0 -40
  1464. package/test/helpers/skip-without.ts +0 -53
  1465. package/test/scripts/task-agent-live-smoke.ts +0 -1335
  1466. /package/services/{local-inference/voice → ambient-audio}/types.js +0 -0
@@ -9,9 +9,7 @@
9
9
  *
10
10
  * Layout produced under `packages/app/android/app/src/main/assets/agent/`:
11
11
  *
12
- * agent-bundle.js (ABI-independent entry point; placeholder
13
- * until Phase D replaces it with the real
14
- * @elizaos/agent bundle)
12
+ * agent-bundle.js (ABI-independent @elizaos/agent bundle)
15
13
  * launch.sh (ABI-independent device-side launcher,
16
14
  * a parameterised double-fork daemoniser)
17
15
  * x86_64/bun (cuttlefish + x86_64 emulator)
@@ -22,43 +20,56 @@
22
20
  * arm64-v8a/ld-musl-aarch64.so.1
23
21
  * arm64-v8a/libstdc++.so.6.0.33
24
22
  * arm64-v8a/libgcc_s.so.1
23
+ * riscv64/bun (cuttlefish riscv64; required unless
24
+ * ELIZA_BUN_RISCV64_OPTIONAL=1 since
25
+ * upstream Bun has no riscv64-linux-musl
26
+ * release)
27
+ * riscv64/ld-musl-riscv64.so.1
28
+ * riscv64/libstdc++.so.6.0.33
29
+ * riscv64/libgcc_s.so.1
25
30
  *
26
31
  * Downloads are cached under `~/.cache/eliza-android-agent/<bun-version>/`
27
- * and the staging step is idempotent — already-staged files with the
28
- * matching size are left in place.
32
+ * and the staging step is idempotent — already-staged files with matching
33
+ * bytes are left in place.
29
34
  *
30
- * Pinned versions (mirrors scripts/spike-android-agent/bootstrap.sh):
31
- * - bun 1.3.13 proven on the Phase 0 spike
35
+ * Pinned versions:
36
+ * - bun 1.3.14 validated by Android agent bring-up
32
37
  * - Alpine v3.21 ships gcc 14.2 → libstdc++.so.6.0.33
33
38
  *
34
- * The ABI-independent `launch.sh` and `agent-bundle.js` placeholder are
35
- * derived from `scripts/spike-android-agent/launch-on-device.sh` and
36
- * `scripts/spike-android-agent/server.js` respectively. Phase D replaces
37
- * `agent-bundle.js` with the real bundled runtime.
39
+ * The ABI-independent `launch.sh` is the packaged production launcher;
40
+ * `agent-bundle.js` is produced by `bun run --cwd packages/agent build:mobile`.
38
41
  */
39
42
  import { spawn } from "node:child_process";
43
+ import crypto from "node:crypto";
40
44
  import fs from "node:fs";
41
45
  import os from "node:os";
42
46
  import path from "node:path";
43
47
  import { fileURLToPath } from "node:url";
44
48
 
45
49
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
50
+ const APP_CORE_ROOT = path.resolve(__dirname, "..", "..");
51
+ const ELIZA_REPO_ROOT = path.resolve(APP_CORE_ROOT, "..", "..");
46
52
 
47
- const BUN_VERSION = "1.3.13";
48
- // Bun 1.3.13 has a segfault we hit during inference on Cuttlefish at
49
- // peak ~2.3 GB RSS ("panic(main thread): Segmentation fault at address
50
- // 0x5420"). The canary channel ships the upstream fix while we wait for
51
- // 1.3.14+. MILADY_BUN_CHANNEL=stable forces back to BUN_VERSION; default
52
- // is canary so AOSP/cvd inference doesn't crash mid-token.
53
- const BUN_CHANNEL = (process.env.MILADY_BUN_CHANNEL ?? "canary").toLowerCase();
53
+ const BUN_VERSION = "1.3.14";
54
+ // Bun 1.3.13 had a segfault during inference on Cuttlefish at peak
55
+ // ~2.3 GB RSS ("panic(main thread): Segmentation fault at address 0x5420").
56
+ // 1.3.14 (released 2026-05-13) is the stable release that supersedes the
57
+ // canary stopgap we used while waiting for it. The canary channel remains
58
+ // the default below for AOSP/CVD builds via run-mobile-build; stock APK
59
+ // builds use this stable pin unless explicitly overridden.
60
+ const DEFAULT_BUN_CHANNEL = "canary";
54
61
  const ALPINE_BRANCH = "v3.21";
62
+ const RISCV64_BUN_ARTIFACT_FILENAME = "bun-linux-riscv64-musl.zip";
63
+ export const RUNTIME_PROVENANCE_FILENAME =
64
+ "android-agent-runtime-provenance.json";
55
65
 
56
66
  /**
57
67
  * Default cache dir for compile-shim.mjs's outputs. Mirrors the default
58
- * in `scripts/elizaos/compile-shim.mjs`. We resolve from `os.homedir()`
59
- * directly instead of importing `compile-shim.mjs` to avoid pulling the
60
- * zig probe + shell-out machinery into the staging step (this module
61
- * runs unconditionally on every gradle build, not just AOSP).
68
+ * in `packages/app-core/scripts/aosp/compile-shim.mjs`. We resolve from
69
+ * `os.homedir()` directly instead of importing `compile-shim.mjs` to
70
+ * avoid pulling the zig probe + shell-out machinery into the staging
71
+ * step (this module runs unconditionally on every gradle build, not
72
+ * just AOSP).
62
73
  */
63
74
  const SECCOMP_SHIM_CACHE_DIR = path.join(
64
75
  os.homedir(),
@@ -80,6 +91,24 @@ const ABI_TARGETS = [
80
91
  alpineArch: "aarch64",
81
92
  ldName: "ld-musl-aarch64.so.1",
82
93
  },
94
+ {
95
+ // Upstream Bun has no riscv64-linux-musl release as of this writing,
96
+ // so this ABI only succeeds when `ELIZA_BUN_RISCV64_FILE` or
97
+ // `ELIZA_BUN_RISCV64_URL` points at a self-built canary zip produced
98
+ // by `packages/app-core/scripts/bun-riscv64/build.sh`. Objective AOSP
99
+ // builds fail closed by default; local native-library iteration can
100
+ // opt out with ELIZA_BUN_RISCV64_OPTIONAL=1.
101
+ androidAbi: "riscv64",
102
+ bunArch: "riscv64",
103
+ alpineArch: "riscv64",
104
+ ldName: "ld-musl-riscv64.so.1",
105
+ },
106
+ ];
107
+
108
+ const NATIVE_LLAMA_ASSET_ENV_KEYS = [
109
+ "ELIZA_ANDROID_AGENT_NATIVE_ASSET_DIR",
110
+ "ELIZA_AOSP_LLAMA_ASSET_DIR",
111
+ "ELIZA_MTP_ANDROID_LIBDIR",
83
112
  ];
84
113
 
85
114
  const APK_PACKAGES = [
@@ -88,9 +117,93 @@ const APK_PACKAGES = [
88
117
  { pkg: "libgcc", file: "libgcc.apk" },
89
118
  ];
90
119
 
120
+ const LLAMA_KERNEL_DIAGNOSTIC_SCRIPT = `#!/usr/bin/env bun
121
+ /**
122
+ * Model-free llama.cpp kernel capability diagnostic for ElizaOS Android.
123
+ *
124
+ * This does not load a model or claim inference throughput. It verifies that
125
+ * the ABI-local llama.cpp payload advertises the kernel families expected by
126
+ * the E1/AOSP path, and optionally checks llama-server --help for CLI surface.
127
+ */
128
+ import { spawnSync } from "node:child_process";
129
+ import fs from "node:fs";
130
+ import path from "node:path";
131
+ import process from "node:process";
132
+
133
+ const REQUIRED_KERNELS = ["mtp", "turbo3", "turbo4", "turbo3_tcq", "qjl_full", "polarquant"];
134
+ const REQUIRED_HELP_NEEDLES = ["--spec-type", "mtp", "tbq3_0", "tbq4_0", "qjl1_256", "q4_polar"];
135
+ const REQUIRED_FILES = [
136
+ "CAPABILITIES.json",
137
+ "libllama.so",
138
+ "libggml.so",
139
+ "libeliza-llama-shim.so",
140
+ "libeliza-llama-speculative-shim.so",
141
+ "llama-server",
142
+ ];
143
+
144
+ function hasKernel(capabilities, name) {
145
+ const kernels = capabilities.kernels ?? capabilities.kernel_features ?? {};
146
+ if (Array.isArray(kernels)) return kernels.includes(name);
147
+ if (typeof kernels === "object" && kernels !== null) {
148
+ const value = kernels[name];
149
+ if (value === true) return true;
150
+ if (typeof value === "object" && value !== null) {
151
+ return value.enabled === true || value.publishable === true;
152
+ }
153
+ }
154
+ return capabilities[name] === true;
155
+ }
156
+
157
+ const abiDir = path.resolve(process.argv[2] ?? process.cwd());
158
+ const staticOnly = process.argv.includes("--static-only");
159
+ const missingFiles = REQUIRED_FILES.filter((name) => !fs.existsSync(path.join(abiDir, name)));
160
+ const capabilitiesPath = path.join(abiDir, "CAPABILITIES.json");
161
+ let capabilities = {};
162
+ if (fs.existsSync(capabilitiesPath)) {
163
+ capabilities = JSON.parse(fs.readFileSync(capabilitiesPath, "utf8"));
164
+ }
165
+ const missingKernels = REQUIRED_KERNELS.filter((name) => !hasKernel(capabilities, name));
166
+ const publishable = capabilities.publishable === true || capabilities.release_status === "publishable";
167
+
168
+ let helpStatus = null;
169
+ let missingHelpNeedles = [];
170
+ if (!staticOnly && fs.existsSync(path.join(abiDir, "llama-server"))) {
171
+ const result = spawnSync(path.join(abiDir, "llama-server"), ["--help"], {
172
+ cwd: abiDir,
173
+ encoding: "utf8",
174
+ });
175
+ const text = (result.stdout ?? "") + "\\n" + (result.stderr ?? "");
176
+ helpStatus = result.status;
177
+ missingHelpNeedles = REQUIRED_HELP_NEEDLES.filter((needle) => !text.includes(needle));
178
+ }
179
+
180
+ const ok =
181
+ missingFiles.length === 0 &&
182
+ missingKernels.length === 0 &&
183
+ publishable &&
184
+ (staticOnly || (helpStatus === 0 && missingHelpNeedles.length === 0));
185
+
186
+ console.log(JSON.stringify({
187
+ schema: "eliza.android_llama_kernel_diagnostic.v1",
188
+ claim_boundary: "model_free_llama_cpp_kernel_capability_check_only_not_model_inference_or_performance_evidence",
189
+ abi_dir: abiDir,
190
+ ok,
191
+ publishable,
192
+ static_only: staticOnly,
193
+ required_files: REQUIRED_FILES,
194
+ missing_files: missingFiles,
195
+ required_kernels: REQUIRED_KERNELS,
196
+ missing_kernels: missingKernels,
197
+ llama_server_help_status: helpStatus,
198
+ missing_help_needles: missingHelpNeedles,
199
+ }, null, 2));
200
+ process.exit(ok ? 0 : 1);
201
+ `;
202
+
91
203
  function jniLoaderName(ldName) {
92
204
  if (ldName.includes("aarch64")) return "libeliza_ld_musl_aarch64.so";
93
205
  if (ldName.includes("x86_64")) return "libeliza_ld_musl_x86_64.so";
206
+ if (ldName.includes("riscv64")) return "libeliza_ld_musl_riscv64.so";
94
207
  return `libeliza_${ldName.replace(/[^a-zA-Z0-9]+/g, "_")}.so`;
95
208
  }
96
209
 
@@ -103,11 +216,10 @@ function jniRealLoaderName(ldName) {
103
216
  }
104
217
 
105
218
  /**
106
- * Adapted from scripts/spike-android-agent/launch-on-device.sh. The script
107
- * ships *inside* the APK and is copied (with executable bit set) into the
108
- * app data dir by ElizaAgentService at first launch. It accepts the device
109
- * path, ABI-specific musl loader, and listen port as env vars so a single
110
- * shell file can drive both ABIs at runtime.
219
+ * The script ships *inside* the APK and is copied (with executable bit set)
220
+ * into the app data dir by ElizaAgentService at first launch. It accepts the
221
+ * device path, ABI-specific musl loader, and listen port as env vars so a
222
+ * single shell file can drive both ABIs at runtime.
111
223
  */
112
224
  const LAUNCH_SCRIPT = `#!/system/bin/sh
113
225
  # launch.sh — device-side launcher for the on-device Eliza agent.
@@ -118,26 +230,46 @@ const LAUNCH_SCRIPT = `#!/system/bin/sh
118
230
  # it off; without that adb shell / Service.onCreate parents reap it.
119
231
  #
120
232
  # Required env vars:
121
- # DEVICE_DIR Absolute path on the device that holds bun + musl + bundle.
233
+ # DEVICE_DIR Absolute path on the device that holds bun + musl.
122
234
  # LD_NAME Per-ABI musl loader filename (ld-musl-{x86_64,aarch64}.so.1).
123
235
  # PORT Loopback port for Bun.serve() to bind 127.0.0.1 on.
124
236
  #
125
237
  # Optional:
126
- # AGENT_BUNDLE Defaults to "agent-bundle.js" in DEVICE_DIR.
127
- # LOG_FILE Defaults to "agent.log" in DEVICE_DIR.
238
+ # AGENT_ROOT Directory that holds agent-bundle.js; defaults DEVICE_DIR.
239
+ # RUNTIME_DIR Directory that holds bun + runtime libs; defaults DEVICE_DIR.
240
+ # BUN_PATH Absolute bun executable path; defaults RUNTIME_DIR/bun.
241
+ # LD_PATH Absolute musl-loader path; defaults RUNTIME_DIR/LD_NAME.
242
+ # AGENT_BUNDLE Bundle filename; defaults agent-bundle.js.
243
+ # AGENT_BUNDLE_PATH Absolute bundle path; defaults AGENT_ROOT/AGENT_BUNDLE.
244
+ # AGENT_COMMAND Optional agent CLI command, e.g. android-bridge.
245
+ # LOG_FILE Defaults to agent.log in AGENT_ROOT.
128
246
 
129
247
  DEVICE_DIR=\${DEVICE_DIR:-/data/local/tmp}
248
+ RUNTIME_DIR=\${RUNTIME_DIR:-\${DEVICE_DIR}}
249
+ AGENT_ROOT=\${AGENT_ROOT:-\${DEVICE_DIR}}
130
250
  LD_NAME=\${LD_NAME:-ld-musl-x86_64.so.1}
131
251
  PORT=\${PORT:-31337}
132
252
  AGENT_BUNDLE=\${AGENT_BUNDLE:-agent-bundle.js}
133
- LOG_FILE=\${LOG_FILE:-\${DEVICE_DIR}/agent.log}
253
+ BUN_PATH=\${BUN_PATH:-\${RUNTIME_DIR}/bun}
254
+ LD_PATH=\${LD_PATH:-\${RUNTIME_DIR}/\${LD_NAME}}
255
+ AGENT_BUNDLE_PATH=\${AGENT_BUNDLE_PATH:-\${AGENT_ROOT}/\${AGENT_BUNDLE}}
256
+ AGENT_COMMAND=\${AGENT_COMMAND:-}
257
+ LOG_FILE=\${LOG_FILE:-\${AGENT_ROOT}/agent.log}
258
+ RUNTIME_LD_LIBRARY_PATH=\${LD_LIBRARY_PATH:-\${RUNTIME_DIR}}
134
259
 
135
- cd "$DEVICE_DIR" || exit 1
136
- pkill -f "\${DEVICE_DIR}/bun" 2>/dev/null
260
+ cd "$AGENT_ROOT" || exit 1
261
+ pkill -f "\${BUN_PATH}" 2>/dev/null
262
+ pkill -f "\${AGENT_BUNDLE_PATH}" 2>/dev/null
137
263
  sleep 1
138
264
 
265
+ if [ -n "\${AGENT_COMMAND}" ]; then
266
+ set -- "\${LD_PATH}" "\${BUN_PATH}" "\${AGENT_BUNDLE_PATH}" "\${AGENT_COMMAND}"
267
+ else
268
+ set -- "\${LD_PATH}" "\${BUN_PATH}" "\${AGENT_BUNDLE_PATH}"
269
+ fi
270
+
139
271
  (
140
- setsid sh -c "exec </dev/null >\\"$LOG_FILE\\" 2>&1; LD_LIBRARY_PATH=\\"$DEVICE_DIR\\" PORT=\\"$PORT\\" exec \\"$DEVICE_DIR/$LD_NAME\\" \\"$DEVICE_DIR/bun\\" \\"$DEVICE_DIR/$AGENT_BUNDLE\\"" &
272
+ setsid sh -c 'log_file=$1; agent_root=$2; runtime_ld=$3; port=$4; shift 4; exec </dev/null >"$log_file" 2>&1; cd "$agent_root" || exit 1; LD_LIBRARY_PATH="$runtime_ld" PORT="$port" exec "$@"' sh "\${LOG_FILE}" "\${AGENT_ROOT}" "\${RUNTIME_LD_LIBRARY_PATH}" "\${PORT}" "$@" &
141
273
  ) &
142
274
  disown 2>/dev/null || true
143
275
  exit 0
@@ -182,33 +314,273 @@ async function downloadFile(url, targetPath) {
182
314
  fs.writeFileSync(targetPath, buf);
183
315
  }
184
316
 
185
- async function ensureBunBinary({ cacheDir, bunArch, log }) {
186
- const channelTag =
187
- BUN_CHANNEL === "canary" ? "canary" : `bun-${BUN_VERSION}`;
188
- const cacheKey = BUN_CHANNEL === "canary" ? "canary" : BUN_VERSION;
317
+ function normalizeSha256(value, envName) {
318
+ const sha256 = value?.trim().toLowerCase();
319
+ if (!sha256) return null;
320
+ if (!/^[a-f0-9]{64}$/.test(sha256)) {
321
+ throw new Error(
322
+ `${envName} must be a lowercase or uppercase 64-character SHA-256 hex digest.`,
323
+ );
324
+ }
325
+ return sha256;
326
+ }
327
+
328
+ function firstEnvValue(names) {
329
+ for (const name of names) {
330
+ const value = process.env[name]?.trim();
331
+ if (value) return { name, value };
332
+ }
333
+ return null;
334
+ }
335
+
336
+ function riscv64BunSha256() {
337
+ const configured = firstEnvValue(["ELIZA_BUN_RISCV64_SHA256"]);
338
+ return normalizeSha256(
339
+ configured?.value,
340
+ configured?.name ?? "ELIZA_BUN_RISCV64_SHA256",
341
+ );
342
+ }
343
+
344
+ function defaultRiscv64BunArtifactPath() {
345
+ return path.resolve(
346
+ __dirname,
347
+ "..",
348
+ "bun-riscv64",
349
+ "dist",
350
+ RISCV64_BUN_ARTIFACT_FILENAME,
351
+ );
352
+ }
353
+
354
+ function riscv64BunFilePath() {
355
+ const configured = firstEnvValue(["ELIZA_BUN_RISCV64_FILE"]);
356
+ if (configured) return path.resolve(configured.value);
357
+ const defaultPath = defaultRiscv64BunArtifactPath();
358
+ return fs.existsSync(defaultPath) ? defaultPath : null;
359
+ }
360
+
361
+ function riscv64BunUrl() {
362
+ return firstEnvValue(["ELIZA_BUN_RISCV64_URL"])?.value ?? null;
363
+ }
364
+
365
+ function riscv64BunArtifactSource() {
366
+ const filePath = riscv64BunFilePath();
367
+ if (filePath) return { kind: "file", ...provenancePath(filePath) };
368
+ const url = riscv64BunUrl();
369
+ if (url) return { kind: "url", url };
370
+ return null;
371
+ }
372
+
373
+ function sha256File(filePath) {
374
+ const hash = crypto.createHash("sha256");
375
+ hash.update(fs.readFileSync(filePath));
376
+ return hash.digest("hex");
377
+ }
378
+
379
+ function toPosixPath(value) {
380
+ return value.replace(/\\/g, "/");
381
+ }
382
+
383
+ function pathWithin(root, filePath) {
384
+ const relative = path.relative(root, filePath);
385
+ return relative && !relative.startsWith("..") && !path.isAbsolute(relative)
386
+ ? toPosixPath(relative)
387
+ : null;
388
+ }
389
+
390
+ function provenancePath(filePath) {
391
+ const absolute = path.resolve(filePath);
392
+ const repoRelative = pathWithin(ELIZA_REPO_ROOT, absolute);
393
+ if (repoRelative) {
394
+ return {
395
+ path: repoRelative,
396
+ path_provenance: "relative_to_git_checkout",
397
+ };
398
+ }
399
+ const appCoreRelative = pathWithin(APP_CORE_ROOT, absolute);
400
+ if (appCoreRelative) {
401
+ return {
402
+ path: appCoreRelative,
403
+ path_provenance: "relative_to_app_core",
404
+ };
405
+ }
406
+ return {
407
+ path: path.basename(absolute),
408
+ path_provenance: "external_artifact_basename",
409
+ };
410
+ }
411
+
412
+ function normalizeSourceForProvenance(value) {
413
+ if (Array.isArray(value)) return value.map(normalizeSourceForProvenance);
414
+ if (!value || typeof value !== "object") return value;
415
+ const normalized = {};
416
+ for (const [key, child] of Object.entries(value)) {
417
+ if (
418
+ typeof child === "string" &&
419
+ path.isAbsolute(child) &&
420
+ (key === "path" || key.endsWith("_path"))
421
+ ) {
422
+ Object.assign(normalized, provenancePath(child));
423
+ } else if (
424
+ typeof child === "string" &&
425
+ path.isAbsolute(child) &&
426
+ (key === "cache_dir" || key.endsWith("_dir"))
427
+ ) {
428
+ normalized[key] = path.basename(child);
429
+ normalized[`${key}_provenance`] = "external_cache_dir_basename";
430
+ } else {
431
+ normalized[key] = normalizeSourceForProvenance(child);
432
+ }
433
+ }
434
+ return normalized;
435
+ }
436
+
437
+ function readJsonIfExists(filePath) {
438
+ if (!fs.existsSync(filePath)) return null;
439
+ return JSON.parse(fs.readFileSync(filePath, "utf8"));
440
+ }
441
+
442
+ function fileProvenanceEntry({ filePath, relativePath, source }) {
443
+ const stat = fs.statSync(filePath);
444
+ return {
445
+ path: androidApkEntryPath(relativePath),
446
+ size_bytes: stat.size,
447
+ sha256: sha256File(filePath),
448
+ source: normalizeSourceForProvenance(source),
449
+ };
450
+ }
451
+
452
+ function androidApkEntryPath(relativePath) {
453
+ const entryPath = toPosixPath(relativePath);
454
+ return entryPath.replace(/^jniLibs\//, "lib/");
455
+ }
456
+
457
+ function normalizeBunChannel(value) {
458
+ const channel = String(value ?? DEFAULT_BUN_CHANNEL)
459
+ .trim()
460
+ .toLowerCase();
461
+ if (channel === "stable" || channel === "release") return "stable";
462
+ if (channel === "canary") return "canary";
463
+ throw new Error(
464
+ `Unsupported ELIZA_BUN_CHANNEL=${JSON.stringify(value)}. ` +
465
+ "Expected stable or canary.",
466
+ );
467
+ }
468
+
469
+ function resolveBunChannel(preferredChannel) {
470
+ return normalizeBunChannel(
471
+ process.env.ELIZA_BUN_CHANNEL ?? preferredChannel ?? DEFAULT_BUN_CHANNEL,
472
+ );
473
+ }
474
+
475
+ function bunCacheKey(channel) {
476
+ return channel === "canary" ? "canary" : BUN_VERSION;
477
+ }
478
+
479
+ function bunChannelLabel(channel) {
480
+ return channel === "canary" ? "bun-canary" : `bun-${BUN_VERSION}`;
481
+ }
482
+
483
+ function defaultBunCacheDir(channel) {
484
+ return path.join(
485
+ os.homedir(),
486
+ ".cache",
487
+ "eliza-android-agent",
488
+ `bun-${bunCacheKey(channel)}`,
489
+ );
490
+ }
491
+
492
+ async function ensureBunBinary({ cacheDir, bunArch, bunChannel, log }) {
493
+ const channelTag = bunChannel === "canary" ? "canary" : `bun-v${BUN_VERSION}`;
494
+ const cacheKey = bunCacheKey(bunChannel);
189
495
  const archCache = path.join(cacheDir, `bun-${bunArch}-${cacheKey}`);
190
496
  const bunPath = path.join(archCache, "bun");
497
+ const sourceSha256Path = path.join(archCache, ".source.sha256");
498
+ const expectedRiscv64Sha256 =
499
+ bunArch === "riscv64" ? riscv64BunSha256() : null;
191
500
  // Canary cache invalidates after 24h so we pull bug-fix snapshots
192
501
  // automatically without forcing every CI run to re-download.
193
502
  const isFresh = (() => {
194
503
  if (!fs.existsSync(bunPath)) return false;
195
504
  const st = fs.statSync(bunPath);
196
505
  if (st.size <= 1_000_000) return false;
197
- if (BUN_CHANNEL !== "canary") return true;
506
+ if (bunArch === "riscv64") {
507
+ if (!expectedRiscv64Sha256) return false;
508
+ if (!fs.existsSync(sourceSha256Path)) return false;
509
+ const cachedSha256 = fs
510
+ .readFileSync(sourceSha256Path, "utf8")
511
+ .trim()
512
+ .toLowerCase();
513
+ if (cachedSha256 !== expectedRiscv64Sha256) return false;
514
+ }
515
+ if (bunChannel !== "canary") return true;
198
516
  const ageMs = Date.now() - st.mtimeMs;
199
517
  return ageMs < 24 * 60 * 60 * 1000;
200
518
  })();
201
- if (isFresh) return bunPath;
519
+ if (isFresh) {
520
+ return {
521
+ bunPath,
522
+ source: {
523
+ kind: "cache",
524
+ cache_key: path.basename(archCache),
525
+ artifact_sha256: expectedRiscv64Sha256,
526
+ },
527
+ };
528
+ }
202
529
  fs.mkdirSync(archCache, { recursive: true });
203
530
  const zipPath = path.join(archCache, "bun.zip");
204
- const url =
205
- BUN_CHANNEL === "canary"
206
- ? `https://github.com/oven-sh/bun/releases/download/canary/bun-linux-${bunArch}-musl.zip`
207
- : `https://github.com/oven-sh/bun/releases/download/${channelTag}/bun-linux-${bunArch}-musl.zip`;
208
- const channelLabel =
209
- BUN_CHANNEL === "canary" ? "bun-canary" : `bun-${BUN_VERSION}`;
210
- log(`Downloading ${channelLabel} (${bunArch}-musl) from ${url}`);
211
- await downloadFile(url, zipPath);
531
+ // riscv64 has no upstream Bun release. Allow operators to point at a
532
+ // self-built canary artifact via a local file or URL; otherwise refuse to
533
+ // download from a guessed URL and surface a clear pointer at the cross-build
534
+ // pipeline. We never invent a default URL.
535
+ let url;
536
+ let sourceFile;
537
+ if (bunArch === "riscv64") {
538
+ sourceFile = riscv64BunFilePath();
539
+ url = riscv64BunUrl();
540
+ if (!sourceFile && !url) {
541
+ throw new Error(
542
+ "Bun riscv64 artifact not available: upstream Bun has no riscv64-linux-musl release. " +
543
+ "Set ELIZA_BUN_RISCV64_FILE to a local " +
544
+ "self-built zip, or set ELIZA_BUN_RISCV64_URL " +
545
+ "to a hosted zip produced by packages/app-core/scripts/bun-riscv64/build.sh, " +
546
+ "or set ELIZA_BUN_RISCV64_OPTIONAL=1 for local non-objective builds.",
547
+ );
548
+ }
549
+ if (!expectedRiscv64Sha256) {
550
+ throw new Error(
551
+ "Bun riscv64 artifact hash is required: set ELIZA_BUN_RISCV64_SHA256 " +
552
+ "to the SHA-256 of bun-linux-riscv64-musl.zip.",
553
+ );
554
+ }
555
+ } else {
556
+ url =
557
+ bunChannel === "canary"
558
+ ? `https://github.com/oven-sh/bun/releases/download/canary/bun-linux-${bunArch}-musl.zip`
559
+ : `https://github.com/oven-sh/bun/releases/download/${channelTag}/bun-linux-${bunArch}-musl.zip`;
560
+ }
561
+ const channelLabel = bunChannelLabel(bunChannel);
562
+ if (sourceFile) {
563
+ if (!fs.existsSync(sourceFile)) {
564
+ throw new Error(`Bun riscv64 artifact file not found: ${sourceFile}`);
565
+ }
566
+ log(
567
+ `Using local ${channelLabel} (${bunArch}-musl) artifact at ${sourceFile}`,
568
+ );
569
+ fs.copyFileSync(sourceFile, zipPath);
570
+ } else {
571
+ log(`Downloading ${channelLabel} (${bunArch}-musl) from ${url}`);
572
+ await downloadFile(url, zipPath);
573
+ }
574
+ if (expectedRiscv64Sha256) {
575
+ const actualSha256 = sha256File(zipPath);
576
+ if (actualSha256 !== expectedRiscv64Sha256) {
577
+ fs.rmSync(zipPath, { force: true });
578
+ throw new Error(
579
+ `bun-linux-riscv64-musl.zip SHA-256 mismatch: expected ` +
580
+ `${expectedRiscv64Sha256}, got ${actualSha256}`,
581
+ );
582
+ }
583
+ }
212
584
  await run("unzip", ["-q", "-o", zipPath, "-d", archCache]);
213
585
  const extractedDir = path.join(archCache, `bun-linux-${bunArch}-musl`);
214
586
  const extractedBun = path.join(extractedDir, "bun");
@@ -220,7 +592,22 @@ async function ensureBunBinary({ cacheDir, bunArch, log }) {
220
592
  fs.rmSync(extractedDir, { recursive: true, force: true });
221
593
  fs.rmSync(zipPath, { force: true });
222
594
  fs.chmodSync(bunPath, 0o755);
223
- return bunPath;
595
+ if (expectedRiscv64Sha256) {
596
+ fs.writeFileSync(sourceSha256Path, `${expectedRiscv64Sha256}\n`, "utf8");
597
+ }
598
+ return {
599
+ bunPath,
600
+ source: {
601
+ kind: sourceFile ? "file" : "url",
602
+ ...(sourceFile ? provenancePath(sourceFile) : {}),
603
+ url: sourceFile ? null : url,
604
+ artifact_filename:
605
+ bunArch === "riscv64"
606
+ ? RISCV64_BUN_ARTIFACT_FILENAME
607
+ : path.basename(url),
608
+ artifact_sha256: expectedRiscv64Sha256,
609
+ },
610
+ };
224
611
  }
225
612
 
226
613
  /**
@@ -304,12 +691,124 @@ function copyIfDifferent(source, target) {
304
691
  if (fs.existsSync(target)) {
305
692
  const a = fs.statSync(source);
306
693
  const b = fs.statSync(target);
307
- if (a.size === b.size && a.mtimeMs <= b.mtimeMs) return false;
694
+ if (a.size === b.size) {
695
+ const sameBytes = fs.readFileSync(source).equals(fs.readFileSync(target));
696
+ if (sameBytes) return false;
697
+ }
308
698
  }
309
699
  fs.copyFileSync(source, target);
310
700
  return true;
311
701
  }
312
702
 
703
+ function resolveNativeLlamaAssetDir(androidAbi) {
704
+ // Look up an env-var-supplied prebuilt native llama asset dir for this
705
+ // ABI. Each env var may be either:
706
+ // - a single absolute dir (legacy arm64-only contract — the prebuilt
707
+ // lives directly inside; only honoured when androidAbi is arm64-v8a),
708
+ // - a per-ABI suffixed variant `<KEY>_<ABI>` where ABI is the upper-
709
+ // snake-cased androidAbi (e.g. ELIZA_AOSP_LLAMA_ASSET_DIR_ARM64_V8A,
710
+ // _X86_64, _RISCV64),
711
+ // - or a base dir that contains per-ABI subdirectories named after the
712
+ // androidAbi (e.g. `<dir>/arm64-v8a/`, `<dir>/x86_64/`, `<dir>/riscv64/`).
713
+ // The first env key that resolves to a real dir for this ABI wins. We
714
+ // never fall back across ABIs (an arm64 prebuilt is not valid for x86_64
715
+ // or riscv64).
716
+ const abiSuffix = androidAbi.replace(/-/g, "_").toUpperCase();
717
+ for (const key of NATIVE_LLAMA_ASSET_ENV_KEYS) {
718
+ // 1. Per-ABI env var wins outright.
719
+ const perAbiRaw = process.env[`${key}_${abiSuffix}`]?.trim();
720
+ if (perAbiRaw) {
721
+ const resolved = path.resolve(perAbiRaw);
722
+ if (fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()) {
723
+ return { dir: resolved, key: `${key}_${abiSuffix}` };
724
+ }
725
+ }
726
+ const raw = process.env[key]?.trim();
727
+ if (!raw) continue;
728
+ const baseResolved = path.resolve(raw);
729
+ if (!fs.existsSync(baseResolved)) continue;
730
+ if (!fs.statSync(baseResolved).isDirectory()) continue;
731
+ // 2. Base dir containing per-ABI subdirs.
732
+ const perAbiSubdir = path.join(baseResolved, androidAbi);
733
+ if (
734
+ fs.existsSync(perAbiSubdir) &&
735
+ fs.statSync(perAbiSubdir).isDirectory()
736
+ ) {
737
+ return { dir: perAbiSubdir, key: `${key}/${androidAbi}` };
738
+ }
739
+ // 3. Legacy: the env var points directly at the prebuilt dir; honour
740
+ // it only for arm64-v8a since that's the only ABI the legacy
741
+ // contract ever shipped a prebuilt for.
742
+ if (androidAbi === "arm64-v8a") {
743
+ return { dir: baseResolved, key };
744
+ }
745
+ }
746
+ return null;
747
+ }
748
+
749
+ function shouldStageNativeLlamaAsset(name) {
750
+ return (
751
+ /^lib(?:llama|llama-common|ggml|mtmd|eliza-llama|elizainference).*(?:\.so|\.so\.\d.*)$/.test(
752
+ name,
753
+ ) ||
754
+ /^libomnivoice(?:\.so|\.so\.\d.*)$/.test(name) ||
755
+ name === "llama-server" ||
756
+ name === "llama-omnivoice-server" ||
757
+ name === "CAPABILITIES.json" ||
758
+ name === "OMNIVOICE_FUSE_VERIFY.json"
759
+ );
760
+ }
761
+
762
+ function stageNativeLlamaAssetsForAbi({ androidAbi, abiAssetsDir, log }) {
763
+ const source = resolveNativeLlamaAssetDir(androidAbi);
764
+ if (!source) return 0;
765
+
766
+ let changes = 0;
767
+ let copied = 0;
768
+ for (const entry of fs.readdirSync(source.dir, { withFileTypes: true })) {
769
+ if (!entry.isFile() || !shouldStageNativeLlamaAsset(entry.name)) continue;
770
+ const src = path.join(source.dir, entry.name);
771
+ const dst = path.join(abiAssetsDir, entry.name);
772
+ if (copyIfDifferent(src, dst)) changes += 1;
773
+ if (
774
+ entry.name === "llama-server" ||
775
+ entry.name === "llama-omnivoice-server"
776
+ ) {
777
+ fs.chmodSync(dst, fs.statSync(dst).mode | 0o755);
778
+ }
779
+ copied += 1;
780
+ }
781
+
782
+ // The fused libelizainference.so is the activation lib (ElizaAgentService
783
+ // gates ELIZA_LOCAL_LLAMA on it). As of the static-fuse build recipe
784
+ // (BUILD_SHARED_LIBS=OFF + CMAKE_POSITION_INDEPENDENT_CODE=ON in
785
+ // build-helpers/omnivoice-merged.mjs fusedExtraCmakeFlags + the bionic JNI
786
+ // builder) it is SELF-CONTAINED: llama/ggml/mtmd are folded in as static
787
+ // archives, so its only DT_NEEDED entries are libc/libm/libdl — there is no
788
+ // runtime libllama.so / libggml*.so sibling to resolve via LD_LIBRARY_PATH.
789
+ // So only libelizainference.so is required. A non-fused bulk build may still
790
+ // emit libllama.so + the libggml* family as a byproduct; if present they
791
+ // stage harmlessly via shouldStageNativeLlamaAsset() above, but they are no
792
+ // longer a hard requirement for the fused activation path. The
793
+ // eliza-llama-shim was retired with the libllama TS adapter.
794
+ const required = ["libelizainference.so"];
795
+ const missing = required.filter(
796
+ (name) => !fs.existsSync(path.join(abiAssetsDir, name)),
797
+ );
798
+ if (missing.length > 0) {
799
+ log(
800
+ `Native llama asset dir from ${source.key} did not provide ${missing.join(", ")}; ` +
801
+ `ELIZA_LOCAL_LLAMA will remain disabled for ${androidAbi}.`,
802
+ );
803
+ } else {
804
+ log(
805
+ `Staged ${copied} native llama asset file(s) for ${androidAbi} from ${source.key}` +
806
+ (changes > 0 ? ` (${changes} updated)` : " (already current)"),
807
+ );
808
+ }
809
+ return changes;
810
+ }
811
+
313
812
  function writeIfChanged(target, content) {
314
813
  if (fs.existsSync(target)) {
315
814
  const current = fs.readFileSync(target, "utf8");
@@ -331,8 +830,8 @@ function writeIfChanged(target, content) {
331
830
  * - Drop `libsigsys-handler.so` next to it.
332
831
  *
333
832
  * Returns the number of files changed this call (0 when nothing
334
- * happened). When no compiled shim exists for the ABI we no-op and
335
- * return 0 — the Capacitor APK build path keeps the legacy loader.
833
+ * happened). When no compiled shim exists for the ABI this returns 0 and
834
+ * the Capacitor APK build path keeps the legacy loader.
336
835
  *
337
836
  * Exported for testing.
338
837
  */
@@ -343,17 +842,14 @@ export function stageSeccompShimForAbi({
343
842
  cacheDir = SECCOMP_SHIM_CACHE_DIR,
344
843
  log,
345
844
  }) {
346
- // ARM64 short-circuits: compile-shim never builds for that ABI.
347
- if (androidAbi !== "x86_64") return 0;
348
-
349
845
  const abiCacheDir = path.join(cacheDir, androidAbi);
350
846
  const cachedWrap = path.join(abiCacheDir, ldName);
351
847
  const cachedShim = path.join(abiCacheDir, "libsigsys-handler.so");
352
848
  if (!fs.existsSync(cachedWrap) || !fs.existsSync(cachedShim)) {
353
849
  log?.(
354
850
  `No compiled SIGSYS shim for ${androidAbi}; leaving the Alpine ` +
355
- `loader at ${ldName} (run \`node scripts/elizaos/compile-shim.mjs\` for ` +
356
- `the AOSP path).`,
851
+ `loader at ${ldName} (run \`node packages/app-core/scripts/aosp/compile-shim.mjs\` ` +
852
+ `for the AOSP path).`,
357
853
  );
358
854
  return 0;
359
855
  }
@@ -416,23 +912,21 @@ export function stageSeccompShimForAbi({
416
912
  *
417
913
  * Required:
418
914
  * androidDir Absolute path to packages/app/android/.
419
- * spikeDir Absolute path to scripts/spike-android-agent/ (source of
420
- * the placeholder agent-bundle.js until Phase D wires up the
421
- * real @elizaos/agent bundle).
915
+ * spikeDir Absolute path to the Android-agent script directory. Kept
916
+ * for legacy workspace-root resolution; it is not used as a
917
+ * bundle fallback.
422
918
  *
423
919
  * Optional:
424
920
  * cacheDir Defaults to ~/.cache/eliza-android-agent/<bun-version>/.
921
+ * bunChannel stable | canary. ELIZA_BUN_CHANNEL overrides this option.
425
922
  * log Defaults to console.log.
426
923
  */
427
924
  export async function stageAndroidAgentRuntime({
428
925
  androidDir,
429
926
  spikeDir,
430
- cacheDir = path.join(
431
- os.homedir(),
432
- ".cache",
433
- "eliza-android-agent",
434
- `bun-${BUN_CHANNEL === "canary" ? "canary" : BUN_VERSION}`,
435
- ),
927
+ cacheDir,
928
+ bunChannel: preferredBunChannel,
929
+ objective = false,
436
930
  log = console.log,
437
931
  } = {}) {
438
932
  if (!androidDir)
@@ -441,7 +935,10 @@ export async function stageAndroidAgentRuntime({
441
935
  throw new Error("stageAndroidAgentRuntime: spikeDir is required");
442
936
 
443
937
  const tlog = logFor(log);
444
- fs.mkdirSync(cacheDir, { recursive: true });
938
+ const bunChannel = resolveBunChannel(preferredBunChannel);
939
+ const resolvedCacheDir = cacheDir ?? defaultBunCacheDir(bunChannel);
940
+ tlog(`Staging Android agent runtime with ${bunChannelLabel(bunChannel)}.`);
941
+ fs.mkdirSync(resolvedCacheDir, { recursive: true });
445
942
 
446
943
  // Runtime files ship under `assets/agent/{abi}/` for AOSP builds that can
447
944
  // execute from priv-app data, and under `jniLibs/{abi}/libeliza_*.so` for
@@ -461,17 +958,57 @@ export async function stageAndroidAgentRuntime({
461
958
  fs.mkdirSync(jniLibsDir, { recursive: true });
462
959
 
463
960
  let stagedCount = 0;
961
+ const stagedFiles = [];
962
+ const riscv64Artifact = {
963
+ required: objective,
964
+ filename: RISCV64_BUN_ARTIFACT_FILENAME,
965
+ sha256: riscv64BunSha256(),
966
+ source: riscv64BunArtifactSource(),
967
+ };
464
968
 
465
969
  for (const target of ABI_TARGETS) {
466
970
  const { androidAbi, bunArch, alpineArch, ldName } = target;
971
+ // Objective builds fail closed on riscv64. Upstream Bun has no
972
+ // riscv64-linux-musl release, so provide ELIZA_BUN_RISCV64_FILE or
973
+ // ELIZA_BUN_RISCV64_URL from packages/app-core/scripts/bun-riscv64/build.sh.
974
+ // Local native-library iteration may opt out with
975
+ // ELIZA_BUN_RISCV64_OPTIONAL=1, but that build is not valid AOSP/chip
976
+ // objective evidence.
977
+ if (bunArch === "riscv64") {
978
+ const riscvFile = riscv64BunFilePath();
979
+ const riscvUrl = riscv64BunUrl();
980
+ // riscv64 is fail-closed ONLY for objective AOSP/chip builds (they ship
981
+ // riscv64 and must prove it). A stock arm64 phone build skips the slice
982
+ // when no artifact is configured instead of aborting — upstream Bun has
983
+ // no riscv64-linux-musl release, so a plain `build:android` would
984
+ // otherwise demand a binary it never packages. ELIZA_BUN_RISCV64_OPTIONAL=1
985
+ // still force-skips even for objective builds (native-lib iteration). A
986
+ // genuine riscv64 build supplies ELIZA_BUN_RISCV64_FILE/_URL, so the slice
987
+ // stages either way — the skip only fires when there is no artifact at all.
988
+ const forceSkip = process.env.ELIZA_BUN_RISCV64_OPTIONAL === "1";
989
+ if (!riscvFile && !riscvUrl && (!objective || forceSkip)) {
990
+ tlog(
991
+ `Skipping ABI ${androidAbi}: no ELIZA_BUN_RISCV64_FILE or URL is set ` +
992
+ `(upstream Bun has no riscv64-linux-musl release). Build with ` +
993
+ `packages/app-core/scripts/bun-riscv64/build.sh and re-run for AOSP/chip evidence.`,
994
+ );
995
+ continue;
996
+ }
997
+ }
467
998
  const abiAssetsDir = path.join(assetsAgentDir, androidAbi);
468
999
  const abiJniDir = path.join(jniLibsDir, androidAbi);
469
1000
  fs.mkdirSync(abiAssetsDir, { recursive: true });
470
1001
  fs.mkdirSync(abiJniDir, { recursive: true });
471
1002
 
472
- const bunPath = await ensureBunBinary({ cacheDir, bunArch, log: tlog });
1003
+ const bun = await ensureBunBinary({
1004
+ cacheDir: resolvedCacheDir,
1005
+ bunArch,
1006
+ bunChannel,
1007
+ log: tlog,
1008
+ });
1009
+ const bunPath = bun.bunPath;
473
1010
  const extractDir = await ensureAlpineApkExtracted({
474
- cacheDir,
1011
+ cacheDir: resolvedCacheDir,
475
1012
  alpineArch,
476
1013
  log: tlog,
477
1014
  });
@@ -496,11 +1033,17 @@ export async function stageAndroidAgentRuntime({
496
1033
  if (copyIfDifferent(src, dst)) abiChanges += 1;
497
1034
  }
498
1035
 
1036
+ abiChanges += stageNativeLlamaAssetsForAbi({
1037
+ androidAbi,
1038
+ abiAssetsDir,
1039
+ log: tlog,
1040
+ });
1041
+
499
1042
  // llama-server is produced by compile-libllama.mjs (per-ABI). It already
500
1043
  // lands at <abiAssetsDir>/llama-server when that script ran successfully,
501
1044
  // so we don't re-copy here — but we do ensure the bit is +x because some
502
1045
  // file-copy paths (e.g. zip → unzip on Windows builders) lose the
503
- // executable bit. The aosp-llama-adapter spawns it for DFlash decode;
1046
+ // executable bit. The aosp-llama-adapter spawns it for MTP decode;
504
1047
  // without +x exec fails with EACCES at runtime.
505
1048
  const llamaServerStaged = path.join(abiAssetsDir, "llama-server");
506
1049
  if (fs.existsSync(llamaServerStaged)) {
@@ -512,16 +1055,16 @@ export async function stageAndroidAgentRuntime({
512
1055
  }
513
1056
  } else {
514
1057
  tlog(
515
- `No llama-server staged for ${androidAbi}; DFlash spec-decode on AOSP ` +
1058
+ `No llama-server staged for ${androidAbi}; MTP spec-decode on AOSP ` +
516
1059
  `will fall back to single-model decode. Run \`node ` +
517
1060
  `packages/app-core/scripts/aosp/compile-libllama.mjs\` to build it.`,
518
1061
  );
519
1062
  }
520
1063
 
521
- // Per-ABI seccomp shim install. Only x86_64 has compiled shim
522
- // artifacts (arm64's kernel ABI omits the legacy syscalls Android's
523
- // x86_64 seccomp filter traps on, so the shim is irrelevant). When
524
- // the artifacts exist:
1064
+ // Per-ABI seccomp shim install. Both x86_64 (legacy non-AT syscalls)
1065
+ // and arm64-v8a (the new-syscall case bun's `epoll_pwait2` blocked
1066
+ // by Android's `untrusted_app` filter) have compiled shim artifacts.
1067
+ // When the artifacts exist:
525
1068
  // 1. Stage `libsigsys-handler.so` next to bun.
526
1069
  // 2. Rename the Alpine-extracted ld-musl-*.so.1 → .so.1.real.
527
1070
  // 3. Stage our `loader-wrap` ELF as ld-musl-*.so.1.
@@ -531,8 +1074,8 @@ export async function stageAndroidAgentRuntime({
531
1074
  //
532
1075
  // Idempotent: if the wrapper is already in place we just refresh
533
1076
  // the .real loader and the shim file (handled by copyIfDifferent's
534
- // size+mtime check). If shim artifacts are missing we leave the
535
- // legacy loader in place so the Capacitor APK build still works.
1077
+ // size+mtime check). If shim artifacts are missing we leave the packaged
1078
+ // musl loader in place so the Capacitor APK build still works.
536
1079
  const shimChanges = stageSeccompShimForAbi({
537
1080
  androidAbi,
538
1081
  ldName,
@@ -583,6 +1126,27 @@ export async function stageAndroidAgentRuntime({
583
1126
  if (copyIfDifferent(src, dst)) abiChanges += 1;
584
1127
  }
585
1128
 
1129
+ const stagedSource = {
1130
+ bun: bun.source,
1131
+ alpine: {
1132
+ branch: ALPINE_BRANCH,
1133
+ arch: alpineArch,
1134
+ packages: APK_PACKAGES.map(({ pkg }) => pkg),
1135
+ },
1136
+ };
1137
+ for (const [, dst] of [...sources, ...jniSources]) {
1138
+ stagedFiles.push(
1139
+ fileProvenanceEntry({
1140
+ filePath: dst,
1141
+ relativePath: path.relative(
1142
+ path.join(androidDir, "app", "src", "main"),
1143
+ dst,
1144
+ ),
1145
+ source: stagedSource,
1146
+ }),
1147
+ );
1148
+ }
1149
+
586
1150
  stagedCount += abiChanges;
587
1151
  tlog(
588
1152
  `Staged ${sources.length} runtime file(s) for ABI ${androidAbi}` +
@@ -590,9 +1154,8 @@ export async function stageAndroidAgentRuntime({
590
1154
  );
591
1155
  }
592
1156
 
593
- // ABI-independent assets: agent-bundle.js + PGlite payload, falling back
594
- // to the spike's tiny stub if Phase D hasn't been built yet. Phase D
595
- // produces a 33 MB real bundle in packages/agent/dist-mobile/ via
1157
+ // ABI-independent assets: agent-bundle.js + PGlite payload. The real
1158
+ // bundle is produced in packages/agent/dist-mobile/ via
596
1159
  // `bun run --cwd packages/agent build:mobile`. PGlite at runtime
597
1160
  // resolves vector.tar.gz and fuzzystrmatch.tar.gz with `new URL("../X",
598
1161
  // import.meta.url)`, so those two files must land ONE DIR ABOVE the
@@ -645,30 +1208,34 @@ export async function stageAndroidAgentRuntime({
645
1208
  distMobileDir = elizaPackagesAgentDistMobile;
646
1209
  distBundle = path.join(distMobileDir, "agent-bundle.js");
647
1210
  }
648
- const spikeServerJs = path.join(spikeDir, "server.js");
649
-
650
- let bundleSrc;
651
- if (fs.existsSync(distBundle)) {
652
- bundleSrc = distBundle;
653
- tlog(
654
- `Using Phase D agent bundle (${(fs.statSync(distBundle).size / (1024 * 1024)).toFixed(1)} MB)`,
655
- );
656
- } else if (fs.existsSync(spikeServerJs)) {
657
- bundleSrc = spikeServerJs;
658
- tlog(
659
- "Using spike placeholder agent-bundle.js — run `bun run --cwd " +
660
- "packages/agent build:mobile` to ship the real agent.",
661
- );
662
- } else {
1211
+ if (!fs.existsSync(distBundle)) {
663
1212
  throw new Error(
664
- `No agent bundle source found. Tried: ${distBundle}, ${spikeServerJs}.`,
1213
+ `No mobile agent bundle found at ${distBundle}. Run ` +
1214
+ "`bun run --cwd packages/agent build:mobile` before staging Android assets.",
665
1215
  );
666
1216
  }
1217
+ const bundleSrc = distBundle;
1218
+ tlog(
1219
+ `Using mobile agent bundle (${(fs.statSync(distBundle).size / (1024 * 1024)).toFixed(1)} MB)`,
1220
+ );
667
1221
  const bundleTarget = path.join(assetsAgentDir, "agent-bundle.js");
668
1222
  if (copyIfDifferent(bundleSrc, bundleTarget)) stagedCount += 1;
1223
+ stagedFiles.push(
1224
+ fileProvenanceEntry({
1225
+ filePath: bundleTarget,
1226
+ relativePath: path.relative(
1227
+ path.join(androidDir, "app", "src", "main"),
1228
+ bundleTarget,
1229
+ ),
1230
+ source: {
1231
+ kind: "mobile-agent-bundle",
1232
+ path: bundleSrc,
1233
+ },
1234
+ }),
1235
+ );
669
1236
 
670
- // PGlite runtime artifacts. Only present when Phase D's build has run.
671
- // Skip silently when missing so the spike-bundle path still works.
1237
+ // PGlite runtime artifacts. They are optional because minimal mobile bundles
1238
+ // can run without embedded database extensions.
672
1239
  const pgliteAssets = [
673
1240
  "pglite.wasm",
674
1241
  "initdb.wasm",
@@ -682,17 +1249,100 @@ export async function stageAndroidAgentRuntime({
682
1249
  if (!fs.existsSync(src)) continue;
683
1250
  const dst = path.join(assetsAgentDir, name);
684
1251
  if (copyIfDifferent(src, dst)) stagedCount += 1;
1252
+ stagedFiles.push(
1253
+ fileProvenanceEntry({
1254
+ filePath: dst,
1255
+ relativePath: path.relative(
1256
+ path.join(androidDir, "app", "src", "main"),
1257
+ dst,
1258
+ ),
1259
+ source: {
1260
+ kind: "mobile-agent-bundle",
1261
+ path: src,
1262
+ },
1263
+ }),
1264
+ );
685
1265
  }
686
1266
 
687
1267
  const launchTarget = path.join(assetsAgentDir, "launch.sh");
688
1268
  if (writeIfChanged(launchTarget, LAUNCH_SCRIPT)) stagedCount += 1;
1269
+ stagedFiles.push(
1270
+ fileProvenanceEntry({
1271
+ filePath: launchTarget,
1272
+ relativePath: path.relative(
1273
+ path.join(androidDir, "app", "src", "main"),
1274
+ launchTarget,
1275
+ ),
1276
+ source: { kind: "stage-android-agent", constant: "LAUNCH_SCRIPT" },
1277
+ }),
1278
+ );
1279
+ const llamaDiagnosticTarget = path.join(
1280
+ assetsAgentDir,
1281
+ "llama-kernel-diagnostic.mjs",
1282
+ );
1283
+ if (writeIfChanged(llamaDiagnosticTarget, LLAMA_KERNEL_DIAGNOSTIC_SCRIPT)) {
1284
+ stagedCount += 1;
1285
+ }
1286
+ stagedFiles.push(
1287
+ fileProvenanceEntry({
1288
+ filePath: llamaDiagnosticTarget,
1289
+ relativePath: path.relative(
1290
+ path.join(androidDir, "app", "src", "main"),
1291
+ llamaDiagnosticTarget,
1292
+ ),
1293
+ source: {
1294
+ kind: "stage-android-agent",
1295
+ constant: "LLAMA_KERNEL_DIAGNOSTIC_SCRIPT",
1296
+ },
1297
+ }),
1298
+ );
1299
+
1300
+ const bunRiscv64VersionPath = path.resolve(
1301
+ __dirname,
1302
+ "..",
1303
+ "bun-riscv64",
1304
+ "bun-version.json",
1305
+ );
1306
+ const runtimeProvenanceTarget = path.join(
1307
+ assetsAgentDir,
1308
+ RUNTIME_PROVENANCE_FILENAME,
1309
+ );
1310
+ const runtimeProvenance = {
1311
+ schema: "eliza.android_agent_runtime_provenance.v1",
1312
+ generated_by: "packages/app-core/scripts/lib/stage-android-agent.mjs",
1313
+ claim_boundary:
1314
+ "apk_staged_runtime_file_hashes_only_not_android_boot_or_runtime_execution_evidence",
1315
+ bun: {
1316
+ version: BUN_VERSION,
1317
+ channel: bunChannel,
1318
+ cache_key: bunCacheKey(bunChannel),
1319
+ },
1320
+ alpine: {
1321
+ branch: ALPINE_BRANCH,
1322
+ },
1323
+ riscv64_bun_artifact: riscv64Artifact,
1324
+ riscv64_bun_build_contract: readJsonIfExists(bunRiscv64VersionPath),
1325
+ files: stagedFiles.sort((a, b) => a.path.localeCompare(b.path)),
1326
+ };
1327
+ if (
1328
+ writeIfChanged(
1329
+ runtimeProvenanceTarget,
1330
+ `${JSON.stringify(runtimeProvenance, null, 2)}\n`,
1331
+ )
1332
+ ) {
1333
+ stagedCount += 1;
1334
+ }
689
1335
 
690
1336
  tlog(
691
1337
  `Staged on-device agent runtime in ${path.relative(androidDir, assetsAgentDir)} ` +
692
1338
  `(${stagedCount} file change${stagedCount === 1 ? "" : "s"} this run).`,
693
1339
  );
694
1340
 
695
- return { assetsAgentDir, stagedCount };
1341
+ return {
1342
+ assetsAgentDir,
1343
+ stagedCount,
1344
+ runtimeProvenancePath: runtimeProvenanceTarget,
1345
+ };
696
1346
  }
697
1347
 
698
1348
  export const __testables = {
@@ -701,4 +1351,12 @@ export const __testables = {
701
1351
  ABI_TARGETS,
702
1352
  APK_PACKAGES,
703
1353
  LAUNCH_SCRIPT,
1354
+ LLAMA_KERNEL_DIAGNOSTIC_SCRIPT,
1355
+ RISCV64_BUN_ARTIFACT_FILENAME,
1356
+ RUNTIME_PROVENANCE_FILENAME,
1357
+ defaultRiscv64BunArtifactPath,
1358
+ riscv64BunFilePath,
1359
+ riscv64BunArtifactSource,
1360
+ riscv64BunSha256,
1361
+ provenancePath,
704
1362
  };