@elizaos/app-core 2.0.0-beta.2 → 2.0.11-beta.5

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 (1534) 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.js +1 -1
  6. package/api/auth/auth-context.js +1 -1
  7. package/api/auth/bootstrap-token.js +2 -2
  8. package/api/auth/index.d.ts +9 -10
  9. package/api/auth/index.d.ts.map +1 -1
  10. package/api/auth/index.js +9 -10
  11. package/api/auth/passwords.js +2 -2
  12. package/api/auth/sensitive-rate-limit.d.ts +1 -4
  13. package/api/auth/sensitive-rate-limit.d.ts.map +1 -1
  14. package/api/auth/sensitive-rate-limit.js +6 -6
  15. package/api/auth/sessions.js +2 -2
  16. package/api/auth-bootstrap-routes.d.ts +6 -13
  17. package/api/auth-bootstrap-routes.d.ts.map +1 -1
  18. package/api/auth-bootstrap-routes.js +14 -27
  19. package/api/auth-pairing-routes.d.ts +17 -0
  20. package/api/auth-pairing-routes.d.ts.map +1 -0
  21. package/api/auth-pairing-routes.js +300 -0
  22. package/api/auth-session-routes.d.ts.map +1 -1
  23. package/api/auth-session-routes.js +36 -15
  24. package/api/auth.d.ts +12 -19
  25. package/api/auth.d.ts.map +1 -1
  26. package/api/auth.js +32 -27
  27. package/api/automations-compat-routes.d.ts.map +1 -1
  28. package/api/automations-compat-routes.js +5 -5
  29. package/api/background-tasks-routes.d.ts +4 -0
  30. package/api/background-tasks-routes.d.ts.map +1 -0
  31. package/api/background-tasks-routes.js +63 -0
  32. package/api/catalog-routes.js +3 -3
  33. package/api/cloud-pair-route.d.ts +26 -0
  34. package/api/cloud-pair-route.d.ts.map +1 -0
  35. package/api/cloud-pair-route.js +222 -0
  36. package/api/cloud-voice-routes.d.ts +52 -0
  37. package/api/cloud-voice-routes.d.ts.map +1 -0
  38. package/api/cloud-voice-routes.js +50 -0
  39. package/api/compat-route-shared.d.ts +2 -2
  40. package/api/compat-route-shared.d.ts.map +1 -1
  41. package/api/compat-route-shared.js +11 -7
  42. package/api/credential-resolver.d.ts +2 -2
  43. package/api/credential-resolver.d.ts.map +1 -1
  44. package/api/credential-resolver.js +8 -2
  45. package/api/database-rows-compat-routes.d.ts.map +1 -1
  46. package/api/database-rows-compat-routes.js +69 -31
  47. package/api/dev-boot-history.d.ts +26 -0
  48. package/api/dev-boot-history.d.ts.map +1 -0
  49. package/api/dev-boot-history.js +69 -0
  50. package/api/dev-compat-routes.d.ts +5 -0
  51. package/api/dev-compat-routes.d.ts.map +1 -1
  52. package/api/dev-compat-routes.js +127 -4
  53. package/api/dev-console-log.d.ts +2 -2
  54. package/api/dev-console-log.d.ts.map +1 -1
  55. package/api/dev-console-log.js +8 -5
  56. package/api/dev-route-catalog.d.ts +58 -0
  57. package/api/dev-route-catalog.d.ts.map +1 -0
  58. package/api/dev-route-catalog.js +447 -0
  59. package/api/dev-stack.d.ts.map +1 -1
  60. package/api/dev-stack.js +6 -9
  61. package/api/first-run-routes.d.ts +4 -0
  62. package/api/first-run-routes.d.ts.map +1 -0
  63. package/api/first-run-routes.js +208 -0
  64. package/api/first-run-tts-route.d.ts +19 -0
  65. package/api/first-run-tts-route.d.ts.map +1 -0
  66. package/api/first-run-tts-route.js +59 -0
  67. package/api/internal-routes.d.ts +23 -0
  68. package/api/internal-routes.d.ts.map +1 -0
  69. package/api/internal-routes.js +203 -0
  70. package/api/ios-local-agent-transport.d.ts +36 -0
  71. package/api/ios-local-agent-transport.d.ts.map +1 -0
  72. package/api/ios-local-agent-transport.js +566 -0
  73. package/api/onboarding-voice-lines.d.ts +23 -0
  74. package/api/onboarding-voice-lines.d.ts.map +1 -0
  75. package/api/onboarding-voice-lines.js +8 -0
  76. package/api/perf-instrument.d.ts +43 -0
  77. package/api/perf-instrument.d.ts.map +1 -0
  78. package/api/perf-instrument.js +113 -0
  79. package/api/response.d.ts.map +1 -1
  80. package/api/response.js +14 -14
  81. package/api/runtime-mode-routes.d.ts.map +1 -1
  82. package/api/runtime-mode-routes.js +2 -2
  83. package/api/secrets-inventory-routes.js +2 -2
  84. package/api/secrets-manager-routes.d.ts +1 -1
  85. package/api/secrets-manager-routes.d.ts.map +1 -1
  86. package/api/secrets-manager-routes.js +9 -10
  87. package/api/sensitive-request-routes.d.ts.map +1 -1
  88. package/api/sensitive-request-routes.js +5 -5
  89. package/api/sensitive-request-store.d.ts +12 -3
  90. package/api/sensitive-request-store.d.ts.map +1 -1
  91. package/api/server-cors.d.ts.map +1 -1
  92. package/api/server-cors.js +13 -2
  93. package/api/server-first-run-helpers.d.ts +26 -0
  94. package/api/server-first-run-helpers.d.ts.map +1 -0
  95. package/api/server-first-run-helpers.js +271 -0
  96. package/api/server-security.js +1 -1
  97. package/api/server-startup.d.ts.map +1 -1
  98. package/api/server-startup.js +3 -4
  99. package/api/server-wallet-trade.js +1 -1
  100. package/api/server.d.ts +4 -4
  101. package/api/server.d.ts.map +1 -1
  102. package/api/server.js +222 -88
  103. package/api/setup-contract.d.ts +63 -0
  104. package/api/setup-contract.d.ts.map +1 -0
  105. package/api/setup-contract.js +39 -0
  106. package/api/training-benchmarks.d.ts +97 -0
  107. package/api/training-benchmarks.d.ts.map +1 -0
  108. package/api/training-benchmarks.js +307 -0
  109. package/api/workbench-compat-routes.js +2 -2
  110. package/benchmark/cerebras-autowire.d.ts +28 -0
  111. package/benchmark/cerebras-autowire.d.ts.map +1 -0
  112. package/benchmark/cerebras-autowire.js +62 -0
  113. package/benchmark/lifeops-bench-handler.d.ts +36 -0
  114. package/benchmark/lifeops-bench-handler.d.ts.map +1 -1
  115. package/benchmark/lifeops-bench-handler.js +63 -1
  116. package/benchmark/lifeops-fake-backend.d.ts +39 -0
  117. package/benchmark/lifeops-fake-backend.d.ts.map +1 -1
  118. package/benchmark/lifeops-fake-backend.js +993 -21
  119. package/benchmark/mock-plugin.d.ts.map +1 -1
  120. package/benchmark/mock-plugin.js +0 -24
  121. package/benchmark/plugin.d.ts +2 -1
  122. package/benchmark/plugin.d.ts.map +1 -1
  123. package/benchmark/plugin.js +989 -68
  124. package/benchmark/replay-capture.d.ts +2 -2
  125. package/benchmark/replay-capture.d.ts.map +1 -1
  126. package/benchmark/replay-capture.js +3 -3
  127. package/benchmark/server-utils.d.ts +162 -9
  128. package/benchmark/server-utils.d.ts.map +1 -1
  129. package/benchmark/server-utils.js +625 -62
  130. package/benchmark/server.d.ts.map +1 -1
  131. package/benchmark/server.js +1962 -118
  132. package/boot-profile.d.ts +3 -0
  133. package/boot-profile.d.ts.map +1 -0
  134. package/boot-profile.js +30 -0
  135. package/browser.d.ts +23 -1
  136. package/browser.d.ts.map +1 -1
  137. package/browser.js +20 -1
  138. package/cli/argv.js +1 -1
  139. package/cli/banner.js +1 -1
  140. package/cli/command-format.js +2 -2
  141. package/cli/doctor/checks.d.ts.map +1 -1
  142. package/cli/doctor/checks.js +6 -6
  143. package/cli/plugins-cli.d.ts.map +1 -1
  144. package/cli/plugins-cli.js +77 -32
  145. package/cli/profile.d.ts.map +1 -1
  146. package/cli/profile.js +5 -4
  147. package/cli/program/build-program.js +4 -4
  148. package/cli/program/command-registry.d.ts.map +1 -1
  149. package/cli/program/command-registry.js +13 -11
  150. package/cli/program/help.js +5 -5
  151. package/cli/program/preaction.js +5 -5
  152. package/cli/program/register.auth.d.ts.map +1 -1
  153. package/cli/program/register.auth.js +6 -12
  154. package/cli/program/register.capability-router.d.ts +29 -0
  155. package/cli/program/register.capability-router.d.ts.map +1 -0
  156. package/cli/program/register.capability-router.js +568 -0
  157. package/cli/program/register.config.js +1 -1
  158. package/cli/program/register.configure.d.ts.map +1 -1
  159. package/cli/program/register.configure.js +1 -1
  160. package/cli/program/register.dashboard.d.ts.map +1 -1
  161. package/cli/program/register.dashboard.js +6 -7
  162. package/cli/program/register.db.d.ts.map +1 -1
  163. package/cli/program/register.db.js +3 -4
  164. package/cli/program/register.doctor.js +7 -7
  165. package/cli/program/register.setup.d.ts.map +1 -1
  166. package/cli/program/register.setup.js +14 -10
  167. package/cli/program/register.start.d.ts.map +1 -1
  168. package/cli/program/register.start.js +5 -3
  169. package/cli/program/register.subclis.js +3 -3
  170. package/cli/program/register.update.d.ts +6 -0
  171. package/cli/program/register.update.d.ts.map +1 -1
  172. package/cli/program/register.update.js +58 -6
  173. package/cli/program.js +1 -1
  174. package/cli/run-main.js +4 -4
  175. package/config/app-config.d.ts +2 -0
  176. package/config/app-config.d.ts.map +1 -0
  177. package/config/app-config.js +1 -0
  178. package/connectors/capacitor-jsc.d.ts.map +1 -1
  179. package/connectors/capacitor-jsc.js +16 -10
  180. package/connectors/capacitor-quickjs.d.ts.map +1 -1
  181. package/connectors/capacitor-quickjs.js +18 -13
  182. package/connectors/capacitor-sqlite.d.ts.map +1 -1
  183. package/connectors/capacitor-sqlite.js +27 -12
  184. package/dispatch/approval-queue.d.ts +37 -0
  185. package/dispatch/approval-queue.d.ts.map +1 -0
  186. package/dispatch/approval-queue.js +25 -0
  187. package/dispatch/channel-registry.d.ts +30 -0
  188. package/dispatch/channel-registry.d.ts.map +1 -0
  189. package/dispatch/channel-registry.js +22 -0
  190. package/dispatch/connector-registry.d.ts +39 -0
  191. package/dispatch/connector-registry.d.ts.map +1 -0
  192. package/dispatch/connector-registry.js +24 -0
  193. package/dispatch/index.d.ts +14 -0
  194. package/dispatch/index.d.ts.map +1 -0
  195. package/dispatch/index.js +13 -0
  196. package/dispatch/send-policy.d.ts +36 -0
  197. package/dispatch/send-policy.d.ts.map +1 -0
  198. package/dispatch/send-policy.js +16 -0
  199. package/entry.js +28 -11
  200. package/first-run/first-run-config.d.ts +55 -0
  201. package/first-run/first-run-config.d.ts.map +1 -0
  202. package/first-run/first-run-config.js +178 -0
  203. package/first-run/runtime-target.d.ts +4 -0
  204. package/first-run/runtime-target.d.ts.map +1 -0
  205. package/first-run/runtime-target.js +13 -0
  206. package/index.d.ts +16 -3
  207. package/index.d.ts.map +1 -1
  208. package/index.js +57 -33
  209. package/package.json +159 -50
  210. package/packaging/debian/apt-repo-config/README.md +18 -0
  211. package/packaging/debian/apt-repo-config/conf/distributions +11 -0
  212. package/packaging/flatpak/README.md +26 -16
  213. package/packaging/flatpak/ai.elizaos.App.metainfo.xml +17 -12
  214. package/packaging/flatpak/ai.elizaos.App.store.yml +5 -5
  215. package/packaging/flatpak/ai.elizaos.App.yml +10 -24
  216. package/packaging/flatpak/elizaos-app-wrapper.store.sh +2 -2
  217. package/packaging/flatpak/generate-sources.sh +74 -0
  218. package/packaging/flatpak/node-sources.json +7930 -0
  219. package/packaging/inno/build-inno.ps1 +34 -9
  220. package/packaging/msix/AppxManifest.store.xml +1 -1
  221. package/packaging/msix/README.md +39 -19
  222. package/packaging/msix/build-msix.ps1 +44 -14
  223. package/packaging/snap/snapcraft.yaml +22 -21
  224. package/packaging/test-packaging.sh +2 -2
  225. package/permissions/types.d.ts +1 -1
  226. package/permissions/types.js +1 -1
  227. package/platform/elizaos-agent-browser-stub.d.ts +144 -0
  228. package/platform/elizaos-agent-browser-stub.d.ts.map +1 -0
  229. package/platform/elizaos-agent-browser-stub.js +158 -0
  230. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts +34 -0
  231. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts.map +1 -0
  232. package/platform/elizaos-plugin-elizacloud-browser-stub.js +51 -0
  233. package/platform/empty-node-module.d.ts +148 -0
  234. package/platform/empty-node-module.d.ts.map +1 -1
  235. package/platform/empty-node-module.js +140 -3
  236. package/platform/ios-runtime-backends.d.ts +83 -0
  237. package/platform/ios-runtime-backends.d.ts.map +1 -0
  238. package/platform/ios-runtime-backends.js +133 -0
  239. package/platform/ios-runtime-bridge.d.ts +15 -0
  240. package/platform/ios-runtime-bridge.d.ts.map +1 -0
  241. package/platform/ios-runtime-bridge.js +527 -0
  242. package/platform/native-library-policy.d.ts +23 -0
  243. package/platform/native-library-policy.d.ts.map +1 -0
  244. package/platform/native-library-policy.js +112 -0
  245. package/platform/native-plugin-entrypoints.d.ts +19 -0
  246. package/platform/native-plugin-entrypoints.d.ts.map +1 -0
  247. package/platform/native-plugin-entrypoints.js +29 -0
  248. package/platforms/android/README.md +68 -10
  249. package/platforms/android/app/build.gradle +268 -3
  250. package/platforms/android/app/capacitor.build.gradle +18 -1
  251. package/platforms/android/app/proguard-rules.pro +17 -2
  252. package/platforms/android/app/src/androidTest/java/ai/elizaos/app/ElizaOsInstrumentedTest.java +1 -1
  253. package/platforms/android/app/src/main/AndroidManifest.xml +334 -17
  254. package/platforms/android/app/src/main/assets/runners/eliza-tasks.js +177 -0
  255. package/platforms/android/app/src/main/elizavoice-jni/CMakeLists.txt +75 -0
  256. package/platforms/android/app/src/main/elizavoice-jni/elizavoice-jni.cpp +1045 -0
  257. package/platforms/android/app/src/main/java/ai/elizaos/app/AgentPlugin.java +111 -171
  258. package/platforms/android/app/src/main/java/ai/elizaos/app/AndroidVirtualizationBridge.java +284 -0
  259. package/platforms/android/app/src/main/java/ai/elizaos/app/BatteryOptimizationPlugin.java +95 -0
  260. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAccessibilityService.java +55 -0
  261. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +1198 -141
  262. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAndroidSystemBridge.java +83 -0
  263. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAssistActivity.java +50 -1
  264. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBootReceiver.java +90 -8
  265. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBrowserActivity.java +2 -2
  266. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCalendarActivity.java +1 -1
  267. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCameraActivity.java +1 -1
  268. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaClockActivity.java +2 -2
  269. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaContactsActivity.java +1 -1
  270. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaDialActivity.java +1 -1
  271. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaInCallService.java +1 -1
  272. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaMmsReceiver.java +1 -1
  273. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +22 -0
  274. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNotificationListenerService.java +45 -0
  275. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaQuickActionsWidgetProvider.java +68 -0
  276. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaShareActivity.java +132 -0
  277. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsComposeActivity.java +1 -1
  278. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsGatewayService.java +268 -0
  279. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsReceiver.java +12 -1
  280. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaTasksWorker.java +194 -0
  281. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceCaptureService.java +198 -0
  282. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceNative.java +160 -0
  283. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +450 -0
  284. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceTileService.java +39 -0
  285. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaWorkScheduler.java +60 -0
  286. package/platforms/android/app/src/main/java/ai/elizaos/app/GatewayConnectionService.java +53 -19
  287. package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +160 -33
  288. package/platforms/android/app/src/main/java/ai/elizaos/app/ResourceProbePlugin.java +169 -0
  289. package/platforms/android/app/src/main/java/ai/elizaos/app/VoiceCapturePlugin.java +119 -0
  290. package/platforms/android/app/src/main/res/drawable/eliza_widget_background.xml +10 -0
  291. package/platforms/android/app/src/main/res/drawable/eliza_widget_button_background.xml +13 -0
  292. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  293. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  294. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  295. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  296. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  297. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  298. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  299. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  300. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  301. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  302. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  303. package/platforms/android/app/src/main/res/layout/eliza_quick_actions_widget.xml +86 -0
  304. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +2 -1
  305. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +2 -1
  306. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  307. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  308. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png +0 -0
  309. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  310. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  311. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  312. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png +0 -0
  313. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  314. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  315. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  316. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png +0 -0
  317. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  318. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  319. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  320. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png +0 -0
  321. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  322. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  323. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  324. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png +0 -0
  325. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  326. package/platforms/android/app/src/main/res/values/android_app_actions.xml +48 -0
  327. package/platforms/android/app/src/main/res/values/colors.xml +8 -0
  328. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +2 -2
  329. package/platforms/android/app/src/main/res/values/strings.xml +2 -2
  330. package/platforms/android/app/src/main/res/values/styles.xml +25 -1
  331. package/platforms/android/app/src/main/res/xml/eliza_accessibility_service.xml +9 -0
  332. package/platforms/android/app/src/main/res/xml/eliza_quick_actions_widget.xml +13 -0
  333. package/platforms/android/app/src/main/res/xml/shortcuts.xml +121 -0
  334. package/platforms/android/build.gradle +2 -2
  335. package/platforms/android/capacitor-cordova-android-plugins/build.gradle +9 -3
  336. package/platforms/android/capacitor-cordova-android-plugins/cordova.variables.gradle +6 -2
  337. package/platforms/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml +7 -2
  338. package/platforms/android/capacitor-cordova-android-plugins/src/main/java/.gitkeep +0 -1
  339. package/platforms/android/capacitor.settings.gradle +66 -16
  340. package/platforms/android/gradle.properties +1 -0
  341. package/platforms/android/update-manifest/generate-manifest.mjs +97 -0
  342. package/platforms/android/update-manifest/schema.json +26 -0
  343. package/platforms/apple-store-entitlements.reviewed.json +155 -0
  344. package/platforms/electrobun/.generated/brand-config.json +3 -2
  345. package/platforms/electrobun/LICENSE +21 -0
  346. package/platforms/electrobun/README.md +15 -1
  347. package/platforms/electrobun/assets/appIcon.icns +0 -0
  348. package/platforms/electrobun/assets/appIcon.ico +0 -0
  349. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128.png +0 -0
  350. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128@2x.png +0 -0
  351. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16.png +0 -0
  352. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16@2x.png +0 -0
  353. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256.png +0 -0
  354. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256@2x.png +0 -0
  355. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32.png +0 -0
  356. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32@2x.png +0 -0
  357. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512.png +0 -0
  358. package/platforms/electrobun/assets/brand-config.json +6 -6
  359. package/platforms/electrobun/biome.json +9 -9
  360. package/platforms/electrobun/docs/capability-collapse-matrix.json +318 -0
  361. package/platforms/electrobun/docs/capability-collapse-matrix.md +129 -0
  362. package/platforms/electrobun/docs/capability-routing.md +86 -0
  363. package/platforms/electrobun/docs/convergence-audit.json +3505 -0
  364. package/platforms/electrobun/docs/convergence-audit.md +694 -0
  365. package/platforms/electrobun/docs/database-boot-policy.md +90 -0
  366. package/platforms/electrobun/docs/riscv64-port.md +175 -0
  367. package/platforms/electrobun/docs/startup-first-run-cleanup.md +18 -0
  368. package/platforms/electrobun/docs/trace-first-annotations.md +52 -0
  369. package/platforms/electrobun/docs/ui-boundary-audit.json +580 -0
  370. package/platforms/electrobun/docs/ui-boundary-audit.md +257 -0
  371. package/platforms/electrobun/electrobun.config.ts +592 -364
  372. package/platforms/electrobun/entitlements/JUSTIFICATIONS.md +141 -0
  373. package/platforms/electrobun/entitlements/README.md +34 -6
  374. package/platforms/electrobun/entitlements/mas-bun.entitlements +15 -0
  375. package/platforms/electrobun/entitlements/mas.entitlements +6 -4
  376. package/platforms/electrobun/native/macos/window-effects.mm +1522 -0
  377. package/platforms/electrobun/package.json +18 -12
  378. package/platforms/electrobun/remotes/fs/README.md +70 -0
  379. package/platforms/electrobun/remotes/fs/electrobun.config.ts +38 -0
  380. package/platforms/electrobun/remotes/fs/package.json +12 -0
  381. package/platforms/electrobun/remotes/fs/plugin.json +25 -0
  382. package/platforms/electrobun/remotes/fs/src/bun/errors.ts +57 -0
  383. package/platforms/electrobun/remotes/fs/src/bun/file-limits.ts +50 -0
  384. package/platforms/electrobun/remotes/fs/src/bun/fs-service.ts +389 -0
  385. package/platforms/electrobun/remotes/fs/src/bun/path-guard.ts +270 -0
  386. package/platforms/electrobun/remotes/fs/src/bun/protocol.ts +149 -0
  387. package/platforms/electrobun/remotes/fs/src/bun/worker.ts +174 -0
  388. package/platforms/electrobun/remotes/fs/src/dev/phase5-smoke.ts +171 -0
  389. package/platforms/electrobun/remotes/fs/src/web/index.html +8 -0
  390. package/platforms/electrobun/remotes/git/README.md +75 -0
  391. package/platforms/electrobun/remotes/git/electrobun.config.ts +44 -0
  392. package/platforms/electrobun/remotes/git/package.json +12 -0
  393. package/platforms/electrobun/remotes/git/plugin.json +31 -0
  394. package/platforms/electrobun/remotes/git/src/bun/errors.ts +69 -0
  395. package/platforms/electrobun/remotes/git/src/bun/git-command.ts +156 -0
  396. package/platforms/electrobun/remotes/git/src/bun/git-service.ts +446 -0
  397. package/platforms/electrobun/remotes/git/src/bun/operation-history.ts +124 -0
  398. package/platforms/electrobun/remotes/git/src/bun/protocol.ts +252 -0
  399. package/platforms/electrobun/remotes/git/src/bun/worker.ts +316 -0
  400. package/platforms/electrobun/remotes/git/src/dev/phase7-smoke.ts +141 -0
  401. package/platforms/electrobun/remotes/git/src/web/index.html +8 -0
  402. package/platforms/electrobun/remotes/local-model/README.md +138 -0
  403. package/platforms/electrobun/remotes/local-model/electrobun.config.ts +46 -0
  404. package/platforms/electrobun/remotes/local-model/package.json +12 -0
  405. package/platforms/electrobun/remotes/local-model/plugin.json +33 -0
  406. package/platforms/electrobun/remotes/local-model/src/bun/download-state.ts +115 -0
  407. package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +425 -0
  408. package/platforms/electrobun/remotes/local-model/src/bun/errors.ts +74 -0
  409. package/platforms/electrobun/remotes/local-model/src/bun/hf-eliza1-client.ts +169 -0
  410. package/platforms/electrobun/remotes/local-model/src/bun/local-inference-api-client.ts +245 -0
  411. package/platforms/electrobun/remotes/local-model/src/bun/model-service.ts +490 -0
  412. package/platforms/electrobun/remotes/local-model/src/bun/protocol.ts +301 -0
  413. package/platforms/electrobun/remotes/local-model/src/bun/worker.ts +248 -0
  414. package/platforms/electrobun/remotes/local-model/src/dev/phase8-smoke.ts +117 -0
  415. package/platforms/electrobun/remotes/local-model/src/web/index.html +13 -0
  416. package/platforms/electrobun/remotes/pty/README.md +65 -0
  417. package/platforms/electrobun/remotes/pty/electrobun.config.ts +47 -0
  418. package/platforms/electrobun/remotes/pty/package.json +12 -0
  419. package/platforms/electrobun/remotes/pty/plugin.json +34 -0
  420. package/platforms/electrobun/remotes/pty/src/bun/errors.ts +57 -0
  421. package/platforms/electrobun/remotes/pty/src/bun/output-buffer.ts +127 -0
  422. package/platforms/electrobun/remotes/pty/src/bun/protocol.ts +192 -0
  423. package/platforms/electrobun/remotes/pty/src/bun/pty-service.ts +562 -0
  424. package/platforms/electrobun/remotes/pty/src/bun/worker.ts +218 -0
  425. package/platforms/electrobun/remotes/pty/src/dev/phase6-smoke.ts +127 -0
  426. package/platforms/electrobun/remotes/pty/src/web/index.html +8 -0
  427. package/platforms/electrobun/remotes/runtime/README.md +370 -0
  428. package/platforms/electrobun/remotes/runtime/electrobun.config.ts +48 -0
  429. package/platforms/electrobun/remotes/runtime/package.json +14 -0
  430. package/platforms/electrobun/remotes/runtime/plugin.json +30 -0
  431. package/platforms/electrobun/remotes/runtime/src/bun/api-client.ts +620 -0
  432. package/platforms/electrobun/remotes/runtime/src/bun/errors.ts +45 -0
  433. package/platforms/electrobun/remotes/runtime/src/bun/log-buffer.ts +33 -0
  434. package/platforms/electrobun/remotes/runtime/src/bun/protocol.ts +366 -0
  435. package/platforms/electrobun/remotes/runtime/src/bun/route-discovery.ts +419 -0
  436. package/platforms/electrobun/remotes/runtime/src/bun/runtime-manager.ts +423 -0
  437. package/platforms/electrobun/remotes/runtime/src/bun/sse-parser.ts +99 -0
  438. package/platforms/electrobun/remotes/runtime/src/bun/stream-manager.ts +887 -0
  439. package/platforms/electrobun/remotes/runtime/src/bun/worker.ts +1231 -0
  440. package/platforms/electrobun/remotes/runtime/src/dev/phase1-smoke.ts +34 -0
  441. package/platforms/electrobun/remotes/runtime/src/dev/phase2-smoke.ts +86 -0
  442. package/platforms/electrobun/remotes/runtime/src/dev/phase3-smoke.ts +141 -0
  443. package/platforms/electrobun/remotes/runtime/src/web/index.css +187 -0
  444. package/platforms/electrobun/remotes/runtime/src/web/index.html +76 -0
  445. package/platforms/electrobun/remotes/runtime/src/web/index.ts +192 -0
  446. package/platforms/electrobun/remotes/surface/README.md +201 -0
  447. package/platforms/electrobun/remotes/surface/electrobun.config.ts +38 -0
  448. package/platforms/electrobun/remotes/surface/package.json +12 -0
  449. package/platforms/electrobun/remotes/surface/plugin.json +28 -0
  450. package/platforms/electrobun/remotes/surface/src/bun/worker.ts +132 -0
  451. package/platforms/electrobun/remotes/surface/src/dev/phase4-smoke.ts +566 -0
  452. package/platforms/electrobun/remotes/surface/src/protocol/event-types.ts +84 -0
  453. package/platforms/electrobun/remotes/surface/src/protocol/runtime-client.ts +673 -0
  454. package/platforms/electrobun/remotes/surface/src/web/app.ts +595 -0
  455. package/platforms/electrobun/remotes/surface/src/web/index.css +460 -0
  456. package/platforms/electrobun/remotes/surface/src/web/index.html +466 -0
  457. package/platforms/electrobun/remotes/surface/src/web/index.ts +5 -0
  458. package/platforms/electrobun/remotes/surface/src/web/render.ts +455 -0
  459. package/platforms/electrobun/remotes/surface/src/web/state.ts +427 -0
  460. package/platforms/electrobun/scripts/build-macos-effects.sh +4 -0
  461. package/platforms/electrobun/scripts/ensure-build-folder.ts +28 -0
  462. package/platforms/electrobun/scripts/ensure-whisper-gguf.sh +55 -0
  463. package/platforms/electrobun/scripts/ensure-whisper-model.sh +22 -80
  464. package/platforms/electrobun/scripts/generate-convergence-audit.ts +1203 -0
  465. package/platforms/electrobun/scripts/local-adhoc-sign-macos.ts +159 -159
  466. package/platforms/electrobun/scripts/postwrap-diagnostics.ts +424 -339
  467. package/platforms/electrobun/scripts/postwrap-sign-runtime-macos.ts +302 -271
  468. package/platforms/electrobun/scripts/smoke-test-windows.ps1 +17 -16
  469. package/platforms/electrobun/scripts/smoke-test.sh +5 -7
  470. package/platforms/electrobun/scripts/sync-web-assets.mjs +13 -13
  471. package/platforms/electrobun/scripts/verify-rpc-handlers.ts +109 -110
  472. package/platforms/electrobun/scripts/verify-windows-installer-proof.ps1 +3 -8
  473. package/platforms/electrobun/src/__stubs__/bun-ffi.ts +31 -31
  474. package/platforms/electrobun/src/__stubs__/electrobun-bun.ts +1 -1
  475. package/platforms/electrobun/src/agent-ready-state.ts +8 -8
  476. package/platforms/electrobun/src/agent-reset-from-main.test.ts +162 -0
  477. package/platforms/electrobun/src/agent-reset-from-main.ts +62 -62
  478. package/platforms/electrobun/src/agent-status-rpc.test.ts +95 -0
  479. package/platforms/electrobun/src/agent-status-rpc.ts +156 -0
  480. package/platforms/electrobun/src/api-base.test.ts +247 -0
  481. package/platforms/electrobun/src/api-base.ts +202 -93
  482. package/platforms/electrobun/src/application-menu-action-registry.ts +9 -9
  483. package/platforms/electrobun/src/application-menu.ts +348 -348
  484. package/platforms/electrobun/src/background-notice.ts +36 -36
  485. package/platforms/electrobun/src/boot-progress.test.ts +188 -0
  486. package/platforms/electrobun/src/boot-progress.ts +111 -0
  487. package/platforms/electrobun/src/brand-config.test.ts +39 -0
  488. package/platforms/electrobun/src/brand-config.ts +141 -129
  489. package/platforms/electrobun/src/bridge/browser-tabs-renderer-registry.ts +28 -28
  490. package/platforms/electrobun/src/bridge/electrobun-boot-config.ts +42 -0
  491. package/platforms/electrobun/src/bridge/electrobun-crypto-ready.ts +120 -0
  492. package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +342 -357
  493. package/platforms/electrobun/src/bridge/electrobun-stub.ts +13 -13
  494. package/platforms/electrobun/src/browser-workspace-bridge-server.ts +285 -243
  495. package/platforms/electrobun/src/cloud-auth-window.ts +136 -136
  496. package/platforms/electrobun/src/cloud-disconnect-from-main.ts +90 -90
  497. package/platforms/electrobun/src/config-and-auth-rpc.test.ts +256 -0
  498. package/platforms/electrobun/src/config-and-auth-rpc.ts +302 -0
  499. package/platforms/electrobun/src/conversations-and-character-rpc.test.ts +185 -0
  500. package/platforms/electrobun/src/conversations-and-character-rpc.ts +131 -0
  501. package/platforms/electrobun/src/dashboard-rpc.test.ts +200 -0
  502. package/platforms/electrobun/src/dashboard-rpc.ts +344 -0
  503. package/platforms/electrobun/src/database/database-lock.ts +141 -0
  504. package/platforms/electrobun/src/database/database-mode.ts +149 -0
  505. package/platforms/electrobun/src/database/database-recovery.ts +72 -0
  506. package/platforms/electrobun/src/database/database-snapshot.ts +190 -0
  507. package/platforms/electrobun/src/database/database.test.ts +196 -0
  508. package/platforms/electrobun/src/database/index.ts +5 -0
  509. package/platforms/electrobun/src/database/pglite-paths.ts +100 -0
  510. package/platforms/electrobun/src/desktop-deep-link-events.test.ts +30 -0
  511. package/platforms/electrobun/src/desktop-deep-link-events.ts +17 -0
  512. package/platforms/electrobun/src/desktop-http-request.test.ts +73 -73
  513. package/platforms/electrobun/src/desktop-http-request.ts +85 -85
  514. package/platforms/electrobun/src/desktop-pill-config.test.ts +27 -0
  515. package/platforms/electrobun/src/desktop-pill-config.ts +40 -0
  516. package/platforms/electrobun/src/desktop-test-bridge-server.ts +204 -204
  517. package/platforms/electrobun/src/desktop-tray-config.test.ts +87 -0
  518. package/platforms/electrobun/src/desktop-tray-config.ts +84 -0
  519. package/platforms/electrobun/src/devtools-layout.ts +41 -41
  520. package/platforms/electrobun/src/diagnostic-format.test.ts +71 -0
  521. package/platforms/electrobun/src/diagnostic-format.ts +75 -36
  522. package/platforms/electrobun/src/dynamic-view-rpc-schema.test.ts +37 -0
  523. package/platforms/electrobun/src/dynamic-views/README.md +44 -0
  524. package/platforms/electrobun/src/dynamic-views/demo/agent-run-trace.html +135 -0
  525. package/platforms/electrobun/src/dynamic-views/errors.ts +29 -0
  526. package/platforms/electrobun/src/dynamic-views/host.test.ts +353 -0
  527. package/platforms/electrobun/src/dynamic-views/host.ts +332 -0
  528. package/platforms/electrobun/src/dynamic-views/index.ts +57 -0
  529. package/platforms/electrobun/src/dynamic-views/kiosk-canvas.ts +89 -0
  530. package/platforms/electrobun/src/dynamic-views/registry.test.ts +139 -0
  531. package/platforms/electrobun/src/dynamic-views/registry.ts +196 -0
  532. package/platforms/electrobun/src/dynamic-views/session-manager.test.ts +355 -0
  533. package/platforms/electrobun/src/dynamic-views/session-manager.ts +348 -0
  534. package/platforms/electrobun/src/dynamic-views/types.ts +105 -0
  535. package/platforms/electrobun/src/electrobun-boot-config.test.ts +50 -0
  536. package/platforms/electrobun/src/electrobun-config.test.ts +62 -0
  537. package/platforms/electrobun/src/electrobun-crypto-ready.test.ts +65 -0
  538. package/platforms/electrobun/src/electrobun-window-options.ts +25 -0
  539. package/platforms/electrobun/src/extension-rpc.test.ts +88 -0
  540. package/platforms/electrobun/src/extension-rpc.ts +102 -0
  541. package/platforms/electrobun/src/fatal-shutdown.test.ts +10 -10
  542. package/platforms/electrobun/src/fatal-shutdown.ts +1 -1
  543. package/platforms/electrobun/src/first-party-remotes.test.ts +169 -0
  544. package/platforms/electrobun/src/first-party-remotes.ts +297 -0
  545. package/platforms/electrobun/src/first-run-rpc.test.ts +192 -0
  546. package/platforms/electrobun/src/first-run-rpc.ts +146 -0
  547. package/platforms/electrobun/src/floating-chat-window.ts +181 -181
  548. package/platforms/electrobun/src/inbox-rpc.test.ts +123 -0
  549. package/platforms/electrobun/src/inbox-rpc.ts +158 -0
  550. package/platforms/electrobun/src/index.ts +2555 -2096
  551. package/platforms/electrobun/src/kiosk-mode.ts +50 -0
  552. package/platforms/electrobun/src/launch/index.ts +4 -0
  553. package/platforms/electrobun/src/launch/launch-dynamic-view.ts +37 -0
  554. package/platforms/electrobun/src/launch/launch-orchestrator.test.ts +224 -0
  555. package/platforms/electrobun/src/launch/launch-orchestrator.ts +456 -0
  556. package/platforms/electrobun/src/launch/launch-store.test.ts +97 -0
  557. package/platforms/electrobun/src/launch/launch-store.ts +134 -0
  558. package/platforms/electrobun/src/launch/types.ts +103 -0
  559. package/platforms/electrobun/src/launch/views/launch-diagnostics.html +205 -0
  560. package/platforms/electrobun/src/lifecycle/agent-ready-publish.test.ts +50 -0
  561. package/platforms/electrobun/src/lifecycle/agent-ready-publish.ts +27 -0
  562. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +42 -31
  563. package/platforms/electrobun/src/lifecycle/desktop-session-prime.ts +44 -44
  564. package/platforms/electrobun/src/logger.ts +14 -14
  565. package/platforms/electrobun/src/main-window-runtime.ts +83 -83
  566. package/platforms/electrobun/src/main-window-session.test.ts +109 -0
  567. package/platforms/electrobun/src/main-window-session.ts +87 -51
  568. package/platforms/electrobun/src/menu-reset-from-main.ts +158 -158
  569. package/platforms/electrobun/src/native/agent-env.test.ts +52 -0
  570. package/platforms/electrobun/src/native/agent-runtime-layout.test.ts +42 -0
  571. package/platforms/electrobun/src/native/agent-state-dir.test.ts +91 -0
  572. package/platforms/electrobun/src/native/agent.ts +2122 -1682
  573. package/platforms/electrobun/src/native/auth-bridge.test.ts +67 -0
  574. package/platforms/electrobun/src/native/auth-bridge.ts +464 -360
  575. package/platforms/electrobun/src/native/browser-workspace.ts +723 -471
  576. package/platforms/electrobun/src/native/camera.ts +50 -50
  577. package/platforms/electrobun/src/native/canvas.ts +444 -445
  578. package/platforms/electrobun/src/native/credentials.ts +673 -616
  579. package/platforms/electrobun/src/native/desktop-window.test.ts +300 -0
  580. package/platforms/electrobun/src/native/desktop.ts +2196 -2156
  581. package/platforms/electrobun/src/native/editor-bridge.ts +201 -201
  582. package/platforms/electrobun/src/native/file-watcher.ts +154 -154
  583. package/platforms/electrobun/src/native/gateway.ts +179 -180
  584. package/platforms/electrobun/src/native/gpu-window.ts +256 -256
  585. package/platforms/electrobun/src/native/index.ts +76 -74
  586. package/platforms/electrobun/src/native/location.test.ts +44 -0
  587. package/platforms/electrobun/src/native/location.ts +90 -80
  588. package/platforms/electrobun/src/native/loopback-port.ts +60 -60
  589. package/platforms/electrobun/src/native/mac-window-effects.ts +166 -104
  590. package/platforms/electrobun/src/native/music-player.ts +38 -38
  591. package/platforms/electrobun/src/native/permissions-shared.ts +249 -150
  592. package/platforms/electrobun/src/native/permissions.ts +301 -208
  593. package/platforms/electrobun/src/native/power-state.ts +129 -129
  594. package/platforms/electrobun/src/native/remote-plugin-host.test.ts +1394 -0
  595. package/platforms/electrobun/src/native/remote-plugin-host.ts +1531 -0
  596. package/platforms/electrobun/src/native/screencapture.ts +667 -573
  597. package/platforms/electrobun/src/native/steward.ts +207 -204
  598. package/platforms/electrobun/src/native/swabble.ts +68 -324
  599. package/platforms/electrobun/src/native/talkmode.ts +253 -422
  600. package/platforms/electrobun/src/native/webgpu-browser-support.test.ts +18 -0
  601. package/platforms/electrobun/src/native/webgpu-browser-support.ts +165 -147
  602. package/platforms/electrobun/src/native/whisper-env.test.ts +71 -0
  603. package/platforms/electrobun/src/native/whisper-env.ts +68 -0
  604. package/platforms/electrobun/src/native-onboarding.ts +270 -0
  605. package/platforms/electrobun/src/onboarding-overlay-window.ts +141 -0
  606. package/platforms/electrobun/src/persisted-deployment.ts +91 -0
  607. package/platforms/electrobun/src/pill-window.test.ts +91 -0
  608. package/platforms/electrobun/src/pill-window.ts +99 -0
  609. package/platforms/electrobun/src/preload-validation.ts +44 -44
  610. package/platforms/electrobun/src/preload.js +1 -1
  611. package/platforms/electrobun/src/print-electrobun-dev-settings-banner.ts +120 -120
  612. package/platforms/electrobun/src/renderer-api-proxy.test.ts +73 -0
  613. package/platforms/electrobun/src/renderer-api-proxy.ts +86 -0
  614. package/platforms/electrobun/src/renderer-static.test.ts +53 -0
  615. package/platforms/electrobun/src/renderer-static.ts +144 -57
  616. package/platforms/electrobun/src/rpc-handler-slices.ts +121 -0
  617. package/platforms/electrobun/src/rpc-handlers.test.ts +267 -0
  618. package/platforms/electrobun/src/rpc-handlers.ts +1306 -913
  619. package/platforms/electrobun/src/rpc-parse-utils.ts +57 -0
  620. package/platforms/electrobun/src/rpc-port-resolver.test.ts +45 -0
  621. package/platforms/electrobun/src/rpc-port-resolver.ts +31 -0
  622. package/platforms/electrobun/src/rpc-schema.ts +2556 -1619
  623. package/platforms/electrobun/src/runtime-layout.ts +105 -105
  624. package/platforms/electrobun/src/runtime-permissions.ts +95 -95
  625. package/platforms/electrobun/src/runtime-rpc.test.ts +126 -0
  626. package/platforms/electrobun/src/runtime-rpc.ts +237 -0
  627. package/platforms/electrobun/src/screenshot-dev-server.ts +87 -87
  628. package/platforms/electrobun/src/settings-mutations-rpc.test.ts +193 -0
  629. package/platforms/electrobun/src/settings-mutations-rpc.ts +220 -0
  630. package/platforms/electrobun/src/startup-trace.ts +274 -270
  631. package/platforms/electrobun/src/subscription-rpc.test.ts +89 -0
  632. package/platforms/electrobun/src/subscription-rpc.ts +192 -0
  633. package/platforms/electrobun/src/surface-windows.test.ts +355 -0
  634. package/platforms/electrobun/src/surface-windows.ts +410 -410
  635. package/platforms/electrobun/src/trace/README.md +73 -0
  636. package/platforms/electrobun/src/trace/errors.ts +21 -0
  637. package/platforms/electrobun/src/trace/index.ts +40 -0
  638. package/platforms/electrobun/src/trace/trace-dynamic-view.ts +40 -0
  639. package/platforms/electrobun/src/trace/trace-host-requests.ts +473 -0
  640. package/platforms/electrobun/src/trace/trace-service.test.ts +186 -0
  641. package/platforms/electrobun/src/trace/trace-service.ts +324 -0
  642. package/platforms/electrobun/src/trace/trace-store.test.ts +141 -0
  643. package/platforms/electrobun/src/trace/trace-store.ts +551 -0
  644. package/platforms/electrobun/src/trace/types.ts +250 -0
  645. package/platforms/electrobun/src/trace/views/agent-run-trace.html +311 -0
  646. package/platforms/electrobun/src/types/web-speech.d.ts +28 -28
  647. package/platforms/electrobun/src/types.ts +5 -5
  648. package/platforms/electrobun/src/update-availability.test.ts +72 -0
  649. package/platforms/electrobun/src/update-availability.ts +90 -0
  650. package/platforms/electrobun/src/update-rpc.test.ts +83 -0
  651. package/platforms/electrobun/src/update-rpc.ts +123 -0
  652. package/platforms/electrobun/src/voice/README.md +184 -0
  653. package/platforms/electrobun/src/voice/errors.ts +42 -0
  654. package/platforms/electrobun/src/voice/index.ts +78 -0
  655. package/platforms/electrobun/src/voice/types.ts +316 -0
  656. package/platforms/electrobun/src/voice/voice-host-requests.ts +259 -0
  657. package/platforms/electrobun/src/voice/voice-latency-budget.test.ts +66 -0
  658. package/platforms/electrobun/src/voice/voice-latency-budget.ts +243 -0
  659. package/platforms/electrobun/src/voice/voice-live-validation.test.ts +352 -0
  660. package/platforms/electrobun/src/voice/voice-live-validation.ts +838 -0
  661. package/platforms/electrobun/src/voice/voice-pipeline.ts +250 -0
  662. package/platforms/electrobun/src/voice/voice-playback-adapter.ts +31 -0
  663. package/platforms/electrobun/src/voice/voice-runtime-adapter.test.ts +213 -0
  664. package/platforms/electrobun/src/voice/voice-runtime-adapter.ts +686 -0
  665. package/platforms/electrobun/src/voice/voice-service.test.ts +561 -0
  666. package/platforms/electrobun/src/voice/voice-service.ts +1027 -0
  667. package/platforms/electrobun/src/voice/voice-stream-coordinator.test.ts +115 -0
  668. package/platforms/electrobun/src/voice/voice-stream-coordinator.ts +270 -0
  669. package/platforms/electrobun/src/voice/voice-trace.ts +97 -0
  670. package/platforms/electrobun/src/voice/voice-tts-chunker.test.ts +91 -0
  671. package/platforms/electrobun/src/voice/voice-tts-chunker.ts +194 -0
  672. package/platforms/electrobun/src/windows-cef-profile.ts +88 -88
  673. package/platforms/electrobun/tsconfig.json +73 -13
  674. package/platforms/electrobun/update-channels.json +22 -0
  675. package/platforms/electrobun/vitest.electrobun.config.ts +72 -42
  676. package/platforms/ios/App/App/App.entitlements +4 -0
  677. package/platforms/ios/App/App/AppDelegate.swift +80 -18
  678. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ios-marketing-1024.png +0 -0
  679. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@1x.png +0 -0
  680. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@2x.png +0 -0
  681. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@1x.png +0 -0
  682. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@2x.png +0 -0
  683. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@1x.png +0 -0
  684. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@2x.png +0 -0
  685. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@1x.png +0 -0
  686. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@2x.png +0 -0
  687. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-83_5x83_5@2x.png +0 -0
  688. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@2x.png +0 -0
  689. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@3x.png +0 -0
  690. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@2x.png +0 -0
  691. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@3x.png +0 -0
  692. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@2x.png +0 -0
  693. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@3x.png +0 -0
  694. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@2x.png +0 -0
  695. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@3x.png +0 -0
  696. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +1 -4
  697. package/platforms/ios/App/App/ComputerUseBridge.swift +589 -0
  698. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements +12 -0
  699. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift +34 -0
  700. package/platforms/ios/App/App/DeviceActivityMonitorExtension/Info.plist +29 -0
  701. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.entitlements +12 -0
  702. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.swift +53 -0
  703. package/platforms/ios/App/App/DeviceActivityReportExtension/Info.plist +27 -0
  704. package/platforms/ios/App/App/ElizaAppIntents.swift +183 -0
  705. package/platforms/ios/App/App/ElizaIntentPlugin.swift +342 -5
  706. package/platforms/ios/App/App/Info.plist +17 -1
  707. package/platforms/ios/App/App/runners/eliza-tasks.js +177 -0
  708. package/platforms/ios/App/App.xcodeproj/project.pbxproj +262 -6
  709. package/platforms/ios/App/BroadcastExtension/SampleHandler.swift +100 -0
  710. package/platforms/ios/App/Podfile +5 -0
  711. package/platforms/ios/App/Podfile.lock +83 -59
  712. package/register-runtime-hooks.js +11 -5
  713. package/registry/app-registry.d.ts +14 -0
  714. package/registry/app-registry.d.ts.map +1 -0
  715. package/registry/app-registry.js +29 -0
  716. package/registry/entries/apps/app-polymarket.json +31 -0
  717. package/registry/entries/apps/clawville.json +27 -0
  718. package/registry/entries/apps/companion.json +28 -0
  719. package/registry/entries/apps/database-viewer.json +27 -0
  720. package/registry/entries/apps/defense-of-the-agents.json +27 -0
  721. package/registry/entries/apps/documents.json +30 -0
  722. package/registry/entries/apps/feed.json +27 -0
  723. package/registry/entries/apps/hyperliquid.json +31 -0
  724. package/registry/entries/apps/log-viewer.json +27 -0
  725. package/registry/entries/apps/memory-viewer.json +27 -0
  726. package/registry/entries/apps/model-tester.json +31 -0
  727. package/registry/entries/apps/plugin-viewer.json +27 -0
  728. package/registry/entries/apps/relationship-viewer.json +27 -0
  729. package/registry/entries/apps/runtime-debugger.json +27 -0
  730. package/registry/entries/apps/shopify.json +31 -0
  731. package/registry/entries/apps/skills-viewer.json +27 -0
  732. package/registry/entries/apps/steward.json +31 -0
  733. package/registry/entries/apps/training.json +54 -0
  734. package/registry/entries/apps/trajectory-viewer.json +27 -0
  735. package/registry/entries/apps/vincent.json +31 -0
  736. package/registry/entries/connectors/bluebubbles.json +99 -0
  737. package/registry/entries/connectors/bluesky.json +173 -0
  738. package/registry/entries/connectors/discord.json +119 -0
  739. package/registry/entries/connectors/farcaster.json +174 -0
  740. package/registry/entries/connectors/feishu.json +79 -0
  741. package/registry/entries/connectors/google-chat.json +120 -0
  742. package/registry/entries/connectors/google.json +82 -0
  743. package/registry/entries/connectors/imessage.json +96 -0
  744. package/registry/entries/connectors/instagram.json +64 -0
  745. package/registry/entries/connectors/line.json +86 -0
  746. package/registry/entries/connectors/matrix.json +94 -0
  747. package/registry/entries/connectors/mattermost.json +110 -0
  748. package/registry/entries/connectors/msteams.json +104 -0
  749. package/registry/entries/connectors/nextcloud-talk.json +104 -0
  750. package/registry/entries/connectors/nostr.json +70 -0
  751. package/registry/entries/connectors/signal.json +81 -0
  752. package/registry/entries/connectors/slack.json +102 -0
  753. package/registry/entries/connectors/telegram.json +71 -0
  754. package/registry/entries/connectors/tlon.json +94 -0
  755. package/registry/entries/connectors/twitch.json +110 -0
  756. package/registry/entries/connectors/whatsapp.json +113 -0
  757. package/registry/entries/connectors/x.json +231 -0
  758. package/registry/entries/connectors/zalo.json +112 -0
  759. package/registry/entries/connectors/zalouser.json +122 -0
  760. package/registry/entries/plugins/agent-orchestrator.json +33 -0
  761. package/registry/entries/plugins/agent-skills.json +72 -0
  762. package/registry/entries/plugins/anthropic.json +73 -0
  763. package/registry/entries/plugins/app-control.json +23 -0
  764. package/registry/entries/plugins/auto-trader.json +203 -0
  765. package/registry/entries/plugins/background-runner.json +26 -0
  766. package/registry/entries/plugins/blooio.json +102 -0
  767. package/registry/entries/plugins/browser.json +75 -0
  768. package/registry/entries/plugins/cli.json +40 -0
  769. package/registry/entries/plugins/clipboard.json +44 -0
  770. package/registry/entries/plugins/coding-tools.json +71 -0
  771. package/registry/entries/plugins/commands.json +63 -0
  772. package/registry/entries/plugins/computeruse.json +74 -0
  773. package/registry/entries/plugins/copilot-proxy.json +93 -0
  774. package/registry/entries/plugins/directives.json +63 -0
  775. package/registry/entries/plugins/edge-tts.json +97 -0
  776. package/registry/entries/plugins/elevenlabs.json +169 -0
  777. package/registry/entries/plugins/elizacloud.json +208 -0
  778. package/registry/entries/plugins/evm.json +134 -0
  779. package/registry/entries/plugins/experience.json +34 -0
  780. package/registry/entries/plugins/facewear.json +131 -0
  781. package/registry/entries/plugins/form.json +26 -0
  782. package/registry/entries/plugins/github.json +93 -0
  783. package/registry/entries/plugins/gmail-watch.json +25 -0
  784. package/registry/entries/plugins/goals.json +77 -0
  785. package/registry/entries/plugins/google-genai.json +106 -0
  786. package/registry/entries/plugins/groq.json +93 -0
  787. package/registry/entries/plugins/hedera.json +48 -0
  788. package/registry/entries/plugins/inmemorydb.json +25 -0
  789. package/registry/entries/plugins/linear.json +51 -0
  790. package/registry/entries/plugins/local-inference.json +142 -0
  791. package/registry/entries/plugins/local-storage.json +36 -0
  792. package/registry/entries/plugins/localdb.json +25 -0
  793. package/registry/entries/plugins/mcp.json +44 -0
  794. package/registry/entries/plugins/memory.json +124 -0
  795. package/registry/entries/plugins/minecraft.json +79 -0
  796. package/registry/entries/plugins/moltbook.json +83 -0
  797. package/registry/entries/plugins/music.json +155 -0
  798. package/registry/entries/plugins/mysticism.json +48 -0
  799. package/registry/entries/plugins/nearai.json +82 -0
  800. package/registry/entries/plugins/ngrok.json +69 -0
  801. package/registry/entries/plugins/ollama.json +96 -0
  802. package/registry/entries/plugins/openai.json +189 -0
  803. package/registry/entries/plugins/openrouter.json +188 -0
  804. package/registry/entries/plugins/pdf.json +26 -0
  805. package/registry/entries/plugins/plugin-manager.json +23 -0
  806. package/registry/entries/plugins/prose.json +48 -0
  807. package/registry/entries/plugins/rlm.json +26 -0
  808. package/registry/entries/plugins/roblox.json +88 -0
  809. package/registry/entries/plugins/rss.json +64 -0
  810. package/registry/entries/plugins/s3-storage.json +91 -0
  811. package/registry/entries/plugins/scheduling.json +35 -0
  812. package/registry/entries/plugins/shell.json +94 -0
  813. package/registry/entries/plugins/social-alpha.json +72 -0
  814. package/registry/entries/plugins/tailscale.json +81 -0
  815. package/registry/entries/plugins/tee.json +53 -0
  816. package/registry/entries/plugins/todos.json +26 -0
  817. package/registry/entries/plugins/trajectory-logger.json +33 -0
  818. package/registry/entries/plugins/trust.json +39 -0
  819. package/registry/entries/plugins/tts.json +71 -0
  820. package/registry/entries/plugins/tunnel.json +45 -0
  821. package/registry/entries/plugins/twilio.json +168 -0
  822. package/registry/entries/plugins/vercel-ai-gateway.json +128 -0
  823. package/registry/entries/plugins/video.json +23 -0
  824. package/registry/entries/plugins/vision.json +43 -0
  825. package/registry/entries/plugins/webhooks.json +23 -0
  826. package/registry/entries/plugins/workflow.json +25 -0
  827. package/registry/entries/plugins/xai.json +75 -0
  828. package/registry/index.d.ts +2 -1
  829. package/registry/index.d.ts.map +1 -1
  830. package/registry/index.js +46 -12
  831. package/registry/loader.d.ts +2 -1
  832. package/registry/loader.d.ts.map +1 -1
  833. package/registry/loader.js +49 -2
  834. package/registry/schema.d.ts +244 -34
  835. package/registry/schema.d.ts.map +1 -1
  836. package/registry/schema.js +36 -0
  837. package/runtime/android-avf-microdroid-bridge.d.ts +29 -0
  838. package/runtime/android-avf-microdroid-bridge.d.ts.map +1 -0
  839. package/runtime/android-avf-microdroid-bridge.js +149 -0
  840. package/runtime/api-dev-settings-banner.d.ts.map +1 -1
  841. package/runtime/api-dev-settings-banner.js +5 -13
  842. package/runtime/app-core-runtime-hooks.d.ts +21 -0
  843. package/runtime/app-core-runtime-hooks.d.ts.map +1 -0
  844. package/runtime/app-core-runtime-hooks.js +10 -0
  845. package/runtime/autonomy-policy.d.ts +2 -0
  846. package/runtime/autonomy-policy.d.ts.map +1 -0
  847. package/runtime/autonomy-policy.js +4 -0
  848. package/runtime/desktop/AppWindowRenderer.d.ts +17 -0
  849. package/runtime/desktop/AppWindowRenderer.d.ts.map +1 -0
  850. package/runtime/desktop/AppWindowRenderer.js +360 -0
  851. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts +2 -0
  852. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts.map +1 -0
  853. package/runtime/desktop/DesktopSurfaceNavigationRuntime.js +41 -0
  854. package/runtime/desktop/DesktopTrayRuntime.d.ts +2 -0
  855. package/runtime/desktop/DesktopTrayRuntime.d.ts.map +1 -0
  856. package/runtime/desktop/DesktopTrayRuntime.js +174 -0
  857. package/runtime/desktop/DetachedShellRoot.d.ts +10 -0
  858. package/runtime/desktop/DetachedShellRoot.d.ts.map +1 -0
  859. package/runtime/desktop/DetachedShellRoot.js +111 -0
  860. package/runtime/desktop/index.d.ts +6 -0
  861. package/runtime/desktop/index.d.ts.map +1 -0
  862. package/runtime/desktop/index.js +5 -0
  863. package/runtime/desktop/tray-menu.d.ts +20 -0
  864. package/runtime/desktop/tray-menu.d.ts.map +1 -0
  865. package/runtime/desktop/tray-menu.js +143 -0
  866. package/runtime/dev-server.d.ts +1 -1
  867. package/runtime/dev-server.d.ts.map +1 -1
  868. package/runtime/dev-server.js +93 -17
  869. package/runtime/eliza.d.ts +75 -1
  870. package/runtime/eliza.d.ts.map +1 -1
  871. package/runtime/eliza.js +596 -122
  872. package/runtime/ensure-text-to-speech-handler.d.ts.map +1 -1
  873. package/runtime/ensure-text-to-speech-handler.js +10 -3
  874. package/runtime/mobile-safe-runtime.d.ts +181 -2
  875. package/runtime/mobile-safe-runtime.d.ts.map +1 -1
  876. package/runtime/mobile-safe-runtime.js +1019 -12
  877. package/runtime/mode/remote-forwarder.d.ts.map +1 -1
  878. package/runtime/mode/remote-forwarder.js +2 -2
  879. package/runtime/mode/route-mode-guard.d.ts +1 -2
  880. package/runtime/mode/route-mode-guard.d.ts.map +1 -1
  881. package/runtime/mode/route-mode-guard.js +4 -5
  882. package/runtime/mode/route-mode-matrix.d.ts.map +1 -1
  883. package/runtime/mode/route-mode-matrix.js +14 -1
  884. package/runtime/mode/runtime-mode.d.ts +1 -1
  885. package/runtime/mode/runtime-mode.d.ts.map +1 -1
  886. package/runtime/mode/runtime-mode.js +15 -4
  887. package/runtime/runtime-bootstrap-policy.d.ts.map +1 -1
  888. package/runtime/runtime-bootstrap-policy.js +14 -2
  889. package/runtime/telegram-standalone-handler.d.ts.map +1 -1
  890. package/runtime/telegram-standalone-handler.js +10 -9
  891. package/runtime/tts-cache-wiring.d.ts +29 -0
  892. package/runtime/tts-cache-wiring.d.ts.map +1 -0
  893. package/runtime/tts-cache-wiring.js +114 -0
  894. package/runtime/voice-warmup.d.ts +81 -0
  895. package/runtime/voice-warmup.d.ts.map +1 -0
  896. package/runtime/voice-warmup.js +111 -0
  897. package/scripts/android-sms-gateway-template.test.mjs +1014 -0
  898. package/scripts/aosp/README.md +19 -15
  899. package/scripts/aosp/compile-libllama.mjs +1344 -248
  900. package/scripts/aosp/compile-shim.mjs +47 -18
  901. package/scripts/aosp/deploy-pixel.mjs +405 -0
  902. package/scripts/aosp/lib/load-variant-config.mjs +3 -3
  903. package/scripts/aosp/llama-cpp-patches/README.md +8 -8
  904. package/scripts/aosp/llama-cpp-patches/apply-patches.mjs +23 -6
  905. package/scripts/aosp/llama-cpp-patches/polarquant/README.md +37 -0
  906. package/scripts/aosp/llama-cpp-patches/qjl/README.md +37 -0
  907. package/scripts/aosp/seccomp-shim/sigsys-handler-arm64.c +169 -0
  908. package/scripts/aosp/seccomp-shim/sigsys-handler-riscv64.c +217 -0
  909. package/scripts/aosp/smoke-cuttlefish.mjs +34 -4
  910. package/scripts/aosp/stage-default-models.mjs +18 -18
  911. package/scripts/aosp/variant-config-schema.ts +2 -2
  912. package/scripts/assert-required-bundled-packages.test.ts +534 -0
  913. package/scripts/audit-apple-store-sandbox.mjs +146 -0
  914. package/scripts/audit-live-test-surface.mjs +5 -2
  915. package/scripts/build-capacitor-app.mjs +21 -0
  916. package/scripts/build-flatpak.mjs +5 -5
  917. package/scripts/build-helpers/arm64-simd.mjs +72 -0
  918. package/scripts/build-helpers/omnivoice-merged.mjs +87 -0
  919. package/scripts/build-helpers/verify-fused-symbols.mjs +567 -0
  920. package/scripts/build-image.sh +1 -1
  921. package/scripts/build-llama-cpp-mtp.mjs +487 -0
  922. package/scripts/build-native-plugins.mjs +230 -18
  923. package/scripts/build-patched-electrobun-cli.mjs +68 -10
  924. package/scripts/build-win.mjs +1 -1
  925. package/scripts/bun-riscv64/Dockerfile +418 -0
  926. package/scripts/bun-riscv64/README.md +316 -0
  927. package/scripts/bun-riscv64/build.sh +469 -0
  928. package/scripts/bun-riscv64/bun-patches/0001-config-add-riscv64-arch.patch +74 -0
  929. package/scripts/bun-riscv64/bun-patches/0002-flags-add-riscv64-march-mabi.patch +16 -0
  930. package/scripts/bun-riscv64/bun-patches/0003-zig-add-riscv64-target-triple-and-cpu.patch +26 -0
  931. package/scripts/bun-riscv64/bun-patches/0004-webkit-force-local-mode-on-riscv64.patch +33 -0
  932. package/scripts/bun-riscv64/bun-patches/0005-tinycc-disable-on-riscv64.patch +16 -0
  933. package/scripts/bun-riscv64/bun-patches/0006-build-add-riscv64-cli-validation.patch +15 -0
  934. package/scripts/bun-riscv64/bun-patches/0007-deps-per-dep-riscv64-checks.patch +24 -0
  935. package/scripts/bun-riscv64/bun-patches/0008-source-stabilize-riscv64-musl-build.patch +226 -0
  936. package/scripts/bun-riscv64/bun-patches/0009-disable-wasm-streaming-hooks-for-c-loop.patch +162 -0
  937. package/scripts/bun-riscv64/bun-patches/0010-disable-inspector-profiler-for-riscv64-c-loop.patch +80 -0
  938. package/scripts/bun-riscv64/bun-patches/0011-process-arch-add-riscv64.patch +23 -0
  939. package/scripts/bun-riscv64/bun-patches/0012-cpu-features-add-riscv64-fallback.patch +13 -0
  940. package/scripts/bun-riscv64/bun-patches/0013-disable-console-inspector-hooks-for-riscv64-c-loop.patch +43 -0
  941. package/scripts/bun-riscv64/bun-patches/0014-disable-custom-inspector-dispatchers-on-riscv64.patch +127 -0
  942. package/scripts/bun-riscv64/bun-patches/0015-disable-jsc-profiler-builtins-on-riscv64.patch +75 -0
  943. package/scripts/bun-riscv64/bun-patches/0016-node-vm-disable-jit-cached-data-on-riscv64-c-loop.patch +96 -0
  944. package/scripts/bun-riscv64/bun-patches/0017-disable-performance-domjit-signature-on-riscv64-c-loop.patch +34 -0
  945. package/scripts/bun-riscv64/bun-patches/0018-fix-serialized-script-identifier-big-endian-path.patch +19 -0
  946. package/scripts/bun-riscv64/bun-patches/0019-add-wtf-timer-fire-bridge-for-c-loop.patch +24 -0
  947. package/scripts/bun-riscv64/bun-patches/0020-run-riscv64-smoke-test-under-qemu.patch +13 -0
  948. package/scripts/bun-riscv64/bun-patches/0021-fix-riscv64-linux-open-flags.patch +25 -0
  949. package/scripts/bun-riscv64/bun-patches/0022-zlib-riscv64-generic-kernels.patch +25 -0
  950. package/scripts/bun-riscv64/bun-patches/README.md +127 -0
  951. package/scripts/bun-riscv64/bun-version.json +202 -0
  952. package/scripts/bun-riscv64/run-build.sh +162 -0
  953. package/scripts/bun-riscv64/rust-core/0001-riscv64-rust-core-port.patch +868 -0
  954. package/scripts/bun-riscv64/rust-core/0002-second-wave-riscv64-source-gaps.patch +130 -0
  955. package/scripts/bun-riscv64/rust-core/0003-third-wave-riscv64-crash-handler-gaps.patch +78 -0
  956. package/scripts/bun-riscv64/rust-core/0004-rust-target-cpu-riscv64.patch +39 -0
  957. package/scripts/bun-riscv64/rust-core/0005-fifth-wave-riscv64-source-gaps.patch +96 -0
  958. package/scripts/bun-riscv64/rust-core/0006-cpp-wasm-and-inspector-guards-riscv64.patch +91 -0
  959. package/scripts/bun-riscv64/rust-core/0007-bun-alloc-max-align-t-riscv64.patch +36 -0
  960. package/scripts/bun-riscv64/rust-core/0008-workspace-lints-warn-not-deny-riscv64.patch +75 -0
  961. package/scripts/bun-riscv64/rust-core/0009-zigglobalobject-wasm-streaming-guards-riscv64.patch +109 -0
  962. package/scripts/bun-riscv64/rust-core/0010-tcc-externs-stub-on-riscv64.patch +62 -0
  963. package/scripts/bun-riscv64/rust-core/0011-clippy-ptr-cast-lints-warn-riscv64.patch +61 -0
  964. package/scripts/bun-riscv64/rust-core/README.md +80 -0
  965. package/scripts/bun-riscv64/rust-core/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  966. package/scripts/bun-riscv64/rust-core/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  967. package/scripts/bun-riscv64/rust-core/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  968. package/scripts/bun-riscv64/rust-core/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  969. package/scripts/bun-riscv64/rust-core/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +31 -0
  970. package/scripts/bun-riscv64/validate.sh +264 -0
  971. package/scripts/bun-riscv64/webkit-patches/0001-cherry-pick-llint-riscv64.recipe +155 -0
  972. package/scripts/bun-riscv64/webkit-patches/0002-cherry-pick-baseline-jit-riscv64.recipe +40 -0
  973. package/scripts/bun-riscv64/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  974. package/scripts/bun-riscv64/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  975. package/scripts/bun-riscv64/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  976. package/scripts/bun-riscv64/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  977. package/scripts/bun-riscv64/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +72 -0
  978. package/scripts/bun-riscv64/webkit-patches/README.md +146 -0
  979. package/scripts/check-homepage-public-readiness.mjs +353 -0
  980. package/scripts/check-homepage-release-data.mjs +110 -0
  981. package/scripts/check-i18n.mjs +2 -1
  982. package/scripts/check-real-local-chat.ts +147 -0
  983. package/scripts/check-real-local-provisioning.ts +104 -0
  984. package/scripts/check-real-local-reset.ts +249 -0
  985. package/scripts/check-sms-gateway-completion-audit.mjs +428 -0
  986. package/scripts/check-sms-gateway-readiness.mjs +266 -0
  987. package/scripts/clean-repo.mjs +5 -5
  988. package/scripts/codesign-mas.mjs +222 -16
  989. package/scripts/collect-docker-runtime-deps.mjs +229 -0
  990. package/scripts/continue-sms-gateway-work.mjs +121 -0
  991. package/scripts/copy-runtime-node-modules.ts +903 -195
  992. package/scripts/deploy-cloud-api-production-gateway.mjs +52 -0
  993. package/scripts/desktop-build.mjs +655 -101
  994. package/scripts/dev-platform.mjs +346 -102
  995. package/scripts/dev-startup-smoke.mjs +248 -0
  996. package/scripts/dev-ui.mjs +418 -176
  997. package/scripts/disable-local-eliza-workspace.mjs +35 -0
  998. package/scripts/docker-ci-smoke.sh +298 -96
  999. package/scripts/docker-entrypoint.sh +62 -1
  1000. package/scripts/docker-entrypoint.test.ts +283 -0
  1001. package/scripts/ensure-avatars.mjs +2 -2
  1002. package/scripts/ensure-electrobun-core.mjs +1 -1
  1003. package/scripts/ensure-generated-core-proto-js.mjs +1 -1
  1004. package/scripts/ensure-type-package-aliases.mjs +62 -5
  1005. package/scripts/ensure-vision-deps.mjs +20 -1
  1006. package/scripts/entry.ts +1 -1
  1007. package/scripts/ffi-stub/Makefile +64 -0
  1008. package/scripts/ffi-stub/README.md +391 -0
  1009. package/scripts/ffi-stub/asr-ffi-smoke.ts +139 -0
  1010. package/scripts/ffi-stub/ffi-stub.c +539 -0
  1011. package/scripts/ffi-stub/ffi.h +538 -0
  1012. package/scripts/ffi-stub/libelizainference_stub.so +0 -0
  1013. package/scripts/ffi-stub/tts-stream-ffi-smoke.ts +349 -0
  1014. package/scripts/generate-first-run-voicelines.mjs +194 -0
  1015. package/scripts/generate-plugin-index.js +4 -3
  1016. package/scripts/generate-static-asset-manifest.mjs +1 -1
  1017. package/scripts/i18n-dynamic-keys.json +5 -5
  1018. package/scripts/init-submodules.mjs +2 -2
  1019. package/scripts/install-android-sms-gateway.md +177 -0
  1020. package/scripts/install-android-sms-gateway.mjs +1088 -0
  1021. package/scripts/ios-xcframework/README.md +74 -72
  1022. package/scripts/ios-xcframework/build-xcframework.mjs +204 -43
  1023. package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1943 -0
  1024. package/scripts/ios-xcframework/runtime-symbol-shim.c +450 -0
  1025. package/scripts/kernel-patches/cpu-polar-kernels.mjs +441 -0
  1026. package/scripts/kernel-patches/cpu-simd-kernels.mjs +253 -0
  1027. package/scripts/kernel-patches/cpu-thread-parallelism.mjs +368 -0
  1028. package/scripts/kernel-patches/cuda-kernels.mjs +117 -0
  1029. package/scripts/kernel-patches/metal-kernels.mjs +1698 -109
  1030. package/scripts/kernel-patches/server-omnivoice-route.mjs +718 -0
  1031. package/scripts/kernel-patches/server-structured-output.mjs +279 -0
  1032. package/scripts/kernel-patches/vulkan-dispatch-log.mjs +166 -0
  1033. package/scripts/kernel-patches/vulkan-dispatch-log.test.mjs +50 -0
  1034. package/scripts/kernel-patches/vulkan-dispatch-patches/01-vulkan-shaders-gen.patch +30 -16
  1035. package/scripts/kernel-patches/vulkan-dispatch-patches/02-ggml-vulkan-pipelines.patch +75 -30
  1036. package/scripts/kernel-patches/vulkan-kernels.mjs +800 -49
  1037. package/scripts/lib/agent-source-watcher.mjs +174 -0
  1038. package/scripts/lib/agent-source-watcher.test.mjs +184 -0
  1039. package/scripts/lib/api-supervisor.mjs +78 -9
  1040. package/scripts/lib/api-supervisor.test.mjs +121 -0
  1041. package/scripts/lib/app-dir.mjs +2 -16
  1042. package/scripts/lib/apple-entitlement-audit.mjs +655 -0
  1043. package/scripts/lib/apple-entitlement-audit.test.mjs +144 -0
  1044. package/scripts/lib/bun-version-guard.mjs +13 -13
  1045. package/scripts/lib/capacitor-plugin-build-needed.mjs +4 -3
  1046. package/scripts/lib/capacitor-plugin-names.mjs +30 -14
  1047. package/scripts/lib/desktop-preflight.mjs +9 -5
  1048. package/scripts/lib/desktop-startup-embedding-warmup-policy.mjs +51 -0
  1049. package/scripts/lib/desktop-startup-embedding-warmup-policy.test.mjs +55 -0
  1050. package/scripts/lib/duet-bridge.d.mts +63 -0
  1051. package/scripts/lib/duet-bridge.mjs +193 -0
  1052. package/scripts/lib/node-path-env.mjs +4 -2
  1053. package/scripts/lib/orchestrator-desktop-dev-banner.mjs +12 -3
  1054. package/scripts/lib/patch-bun-exports.mjs +90 -27
  1055. package/scripts/lib/patch-bun-exports.test.mjs +79 -0
  1056. package/scripts/lib/renderer-build-action.mjs +35 -0
  1057. package/scripts/lib/renderer-build-action.test.mjs +70 -0
  1058. package/scripts/lib/stage-android-agent.mjs +748 -99
  1059. package/scripts/lib/sync-eliza-env-aliases.mjs +3 -25
  1060. package/scripts/lib/ui-smoke-stub-decision.mjs +33 -0
  1061. package/scripts/lib/ui-smoke-stub-decision.test.mjs +46 -0
  1062. package/scripts/lib/vite-renderer-dist-stale.mjs +5 -0
  1063. package/scripts/lib/voice-latency-report.mjs +154 -0
  1064. package/scripts/lifeops-prompt-benchmark.ts +21 -12
  1065. package/scripts/link-docker-local-app-packages.mjs +89 -36
  1066. package/scripts/local-stt-bench.ts +192 -0
  1067. package/scripts/maintain-cloud-api-production-gateway.mjs +54 -0
  1068. package/scripts/mas-smoke.mjs +459 -0
  1069. package/scripts/mas-smoke.test.mjs +220 -0
  1070. package/scripts/mobile-auth-simulator-smoke.mjs +0 -1
  1071. package/scripts/normalize-eliza-capture.ts +97 -0
  1072. package/scripts/omnivoice-fuse/prepare.mjs +2543 -23
  1073. package/scripts/pack-upstreams.mjs +65 -5
  1074. package/scripts/package-electrobun-linux.mjs +303 -0
  1075. package/scripts/patch-deps.mjs +5 -3
  1076. package/scripts/patches/llama-mobile-kokoro-tts.patch +480 -0
  1077. package/scripts/playwright-ui-live-stack.ts +194 -49
  1078. package/scripts/playwright-ui-smoke-api-stub.mjs +3501 -109
  1079. package/scripts/pre-review-local.mjs +2 -2
  1080. package/scripts/prepare-ios-cocoapods.sh +41 -3
  1081. package/scripts/release-check.ts +180 -84
  1082. package/scripts/release-workflow-drift.test.ts +57 -0
  1083. package/scripts/relink-workspace-packages-to-dist.mjs +21 -4
  1084. package/scripts/rt.mjs +16 -1
  1085. package/scripts/run-biome-check.mjs +1 -1
  1086. package/scripts/run-coding-agent-e2e.mjs +3 -3
  1087. package/scripts/run-eliza-app-core-script.mjs +34 -0
  1088. package/scripts/run-local-plugin-live-smoke.mjs +71 -2
  1089. package/scripts/run-mobile-build-android-app-actions.test.mjs +426 -0
  1090. package/scripts/run-mobile-build.mjs +4757 -607
  1091. package/scripts/run-node-runtime.mjs +184 -7
  1092. package/scripts/run-node-runtime.test.mjs +167 -0
  1093. package/scripts/run-node-tsx.mjs +80 -33
  1094. package/scripts/run-node.mjs +41 -1
  1095. package/scripts/run-production-build.mjs +34 -27
  1096. package/scripts/run-release-check.mjs +19 -0
  1097. package/scripts/run-release-contract-suite.mjs +107 -14
  1098. package/scripts/run-ui-smoke-playwright-suite.mjs +0 -2
  1099. package/scripts/runtime-package-manifest.ts +21 -3
  1100. package/scripts/setup-upstreams.mjs +42 -1
  1101. package/scripts/sms-gateway-status.mjs +194 -0
  1102. package/scripts/stage-android-agent.test.mjs +97 -0
  1103. package/scripts/stage-elizavoice-lib.mjs +203 -0
  1104. package/scripts/startup-integration-script-drift.test.ts +82 -4
  1105. package/scripts/streaming-pipeline-bench.ts +543 -0
  1106. package/scripts/sync-homepage-porkbun-dns.mjs +262 -0
  1107. package/scripts/test-sms-gateway-software.mjs +100 -0
  1108. package/scripts/type-audit.mjs +1 -1
  1109. package/scripts/validate-bluebubbles-outbound.mjs +293 -0
  1110. package/scripts/validate-cdn-assets.mjs +15 -7
  1111. package/scripts/validate-regression-matrix.mjs +109 -8
  1112. package/scripts/verify-android-sms-gateway-e2e.mjs +362 -0
  1113. package/scripts/verify-bluebubbles-gateway-e2e.mjs +191 -0
  1114. package/scripts/verify-bluebubbles-inbound-readiness.mjs +88 -0
  1115. package/scripts/verify-cloud-api-production-deploy.mjs +87 -0
  1116. package/scripts/verify-cloud-sms-onboarding-flow.mjs +336 -0
  1117. package/scripts/voice/freeze-voice.mjs +521 -0
  1118. package/scripts/voice-attribution-smoke.ts +538 -0
  1119. package/scripts/voice-create-profile.mjs +379 -0
  1120. package/scripts/voice-duet.mjs +1355 -0
  1121. package/scripts/voice-e2e-hardware.ts +871 -0
  1122. package/scripts/voice-interactive.mjs +1750 -0
  1123. package/scripts/voice-latency-report.mjs +96 -0
  1124. package/scripts/voice-latency-report.test.ts +176 -0
  1125. package/scripts/voice-preset/build-default-voice-preset.mjs +249 -0
  1126. package/scripts/voice-preset/build-onboarding-voice.mjs +281 -0
  1127. package/scripts/watch-sms-gateway-readiness.mjs +303 -0
  1128. package/scripts/write-homepage-release-data.mjs +458 -26
  1129. package/security/agent-vault-id.d.ts +1 -1
  1130. package/security/agent-vault-id.js +1 -1
  1131. package/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -1
  1132. package/security/hydrate-wallet-keys-from-platform-store.js +23 -14
  1133. package/security/platform-secure-store-node.d.ts +2 -2
  1134. package/security/platform-secure-store-node.js +3 -3
  1135. package/security/wallet-os-store-actions.d.ts +0 -9
  1136. package/security/wallet-os-store-actions.d.ts.map +1 -1
  1137. package/security/wallet-os-store-actions.js +3 -10
  1138. package/services/account-pool.d.ts +23 -14
  1139. package/services/account-pool.d.ts.map +1 -1
  1140. package/services/account-pool.js +86 -24
  1141. package/services/account-usage.d.ts.map +1 -1
  1142. package/services/account-usage.js +2 -5
  1143. package/services/ambient-audio/consent.d.ts +9 -0
  1144. package/services/ambient-audio/consent.d.ts.map +1 -0
  1145. package/services/ambient-audio/consent.js +28 -0
  1146. package/services/ambient-audio/index.d.ts +7 -0
  1147. package/services/ambient-audio/index.d.ts.map +1 -0
  1148. package/services/ambient-audio/index.js +4 -0
  1149. package/services/ambient-audio/replay-buffer.d.ts +14 -0
  1150. package/services/ambient-audio/replay-buffer.d.ts.map +1 -0
  1151. package/services/ambient-audio/replay-buffer.js +66 -0
  1152. package/services/ambient-audio/response-gate.d.ts +3 -0
  1153. package/services/ambient-audio/response-gate.d.ts.map +1 -0
  1154. package/services/ambient-audio/response-gate.js +33 -0
  1155. package/services/ambient-audio/service.d.ts +22 -0
  1156. package/services/ambient-audio/service.d.ts.map +1 -0
  1157. package/services/ambient-audio/service.js +47 -0
  1158. package/services/ambient-audio/types.d.ts +42 -0
  1159. package/services/ambient-audio/types.d.ts.map +1 -0
  1160. package/services/app-updates/update-policy.d.ts +64 -0
  1161. package/services/app-updates/update-policy.d.ts.map +1 -0
  1162. package/services/app-updates/update-policy.js +228 -0
  1163. package/services/auth-store.d.ts +37 -1
  1164. package/services/auth-store.d.ts.map +1 -1
  1165. package/services/auth-store.js +59 -26
  1166. package/services/cloud-jwks-store.d.ts +3 -3
  1167. package/services/cloud-jwks-store.d.ts.map +1 -1
  1168. package/services/cloud-jwks-store.js +5 -8
  1169. package/services/coding-account-bridge.d.ts +71 -0
  1170. package/services/coding-account-bridge.d.ts.map +1 -0
  1171. package/services/coding-account-bridge.js +267 -0
  1172. package/services/connector-target-catalog.d.ts +10 -3
  1173. package/services/connector-target-catalog.d.ts.map +1 -1
  1174. package/services/connector-target-catalog.js +7 -4
  1175. package/services/credential-tunnel-service.d.ts +66 -0
  1176. package/services/credential-tunnel-service.d.ts.map +1 -0
  1177. package/services/credential-tunnel-service.js +227 -0
  1178. package/services/github-credentials.d.ts +1 -1
  1179. package/services/github-credentials.js +1 -1
  1180. package/services/inference-abort.d.ts +47 -0
  1181. package/services/inference-abort.d.ts.map +1 -0
  1182. package/services/inference-abort.js +76 -0
  1183. package/services/persistence.d.ts +2 -3
  1184. package/services/persistence.d.ts.map +1 -1
  1185. package/services/persistence.js +2 -3
  1186. package/services/phrase-chunked-tts.d.ts +136 -0
  1187. package/services/phrase-chunked-tts.d.ts.map +1 -0
  1188. package/services/phrase-chunked-tts.js +208 -0
  1189. package/services/sandbox-registry.d.ts +78 -0
  1190. package/services/sandbox-registry.d.ts.map +1 -0
  1191. package/services/sandbox-registry.js +323 -0
  1192. package/services/secrets-manager-installer.d.ts +8 -1
  1193. package/services/secrets-manager-installer.d.ts.map +1 -1
  1194. package/services/secrets-manager-installer.js +27 -2
  1195. package/services/sensitive-requests/cloud-link-adapter.d.ts +15 -0
  1196. package/services/sensitive-requests/cloud-link-adapter.d.ts.map +1 -0
  1197. package/services/sensitive-requests/cloud-link-adapter.js +73 -0
  1198. package/services/sensitive-requests/index.d.ts +27 -0
  1199. package/services/sensitive-requests/index.d.ts.map +1 -0
  1200. package/services/sensitive-requests/index.js +51 -0
  1201. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts +14 -0
  1202. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts.map +1 -0
  1203. package/services/sensitive-requests/instruct-dm-only-adapter.js +22 -0
  1204. package/services/sensitive-requests/owner-app-inline-adapter.d.ts +3 -0
  1205. package/services/sensitive-requests/owner-app-inline-adapter.d.ts.map +1 -0
  1206. package/services/sensitive-requests/owner-app-inline-adapter.js +146 -0
  1207. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts +3 -0
  1208. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts.map +1 -0
  1209. package/services/sensitive-requests/owner-app-oauth-adapter.js +156 -0
  1210. package/services/sensitive-requests/public-link-adapter.d.ts +14 -0
  1211. package/services/sensitive-requests/public-link-adapter.d.ts.map +1 -0
  1212. package/services/sensitive-requests/public-link-adapter.js +86 -0
  1213. package/services/sensitive-requests/tunnel-link-adapter.d.ts +17 -0
  1214. package/services/sensitive-requests/tunnel-link-adapter.d.ts.map +1 -0
  1215. package/services/sensitive-requests/tunnel-link-adapter.js +38 -0
  1216. package/services/steward-credentials.d.ts +1 -1
  1217. package/services/steward-credentials.d.ts.map +1 -1
  1218. package/services/steward-credentials.js +10 -6
  1219. package/services/steward-sidecar/health-check.d.ts.map +1 -1
  1220. package/services/steward-sidecar/health-check.js +4 -3
  1221. package/services/steward-sidecar/process-management.d.ts +1 -1
  1222. package/services/steward-sidecar/process-management.d.ts.map +1 -1
  1223. package/services/steward-sidecar/process-management.js +9 -3
  1224. package/services/steward-sidecar/types.d.ts +1 -1
  1225. package/services/steward-sidecar/types.d.ts.map +1 -1
  1226. package/services/steward-sidecar/wallet-setup.d.ts.map +1 -1
  1227. package/services/steward-sidecar/wallet-setup.js +8 -7
  1228. package/services/steward-sidecar.d.ts +2 -2
  1229. package/services/steward-sidecar.d.ts.map +1 -1
  1230. package/services/steward-sidecar.js +27 -19
  1231. package/services/task-host-capabilities.d.ts +60 -0
  1232. package/services/task-host-capabilities.d.ts.map +1 -0
  1233. package/services/task-host-capabilities.js +122 -0
  1234. package/services/tool-call-cache/index.d.ts +2 -2
  1235. package/services/tool-call-cache/index.d.ts.map +1 -1
  1236. package/services/tool-call-cache/index.js +1 -1
  1237. package/services/trigger-event-bridge.js +1 -1
  1238. package/services/tunnel-to-mobile/index.d.ts +2 -0
  1239. package/services/tunnel-to-mobile/index.d.ts.map +1 -0
  1240. package/services/tunnel-to-mobile/index.js +1 -0
  1241. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts +105 -0
  1242. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts.map +1 -0
  1243. package/services/tunnel-to-mobile/tunnel-to-mobile-client.js +190 -0
  1244. package/services/vault-bootstrap.d.ts.map +1 -1
  1245. package/services/vault-bootstrap.js +48 -21
  1246. package/services/vault-mirror.d.ts +1 -1
  1247. package/services/vault-mirror.d.ts.map +1 -1
  1248. package/services/vault-mirror.js +29 -6
  1249. package/services/voice-profiles/diarization-pipeline.d.ts +6 -0
  1250. package/services/voice-profiles/diarization-pipeline.d.ts.map +1 -0
  1251. package/services/voice-profiles/diarization-pipeline.js +20 -0
  1252. package/services/voice-profiles/index.d.ts +12 -0
  1253. package/services/voice-profiles/index.d.ts.map +1 -0
  1254. package/services/voice-profiles/index.js +5 -0
  1255. package/services/voice-profiles/nickname-evaluator.d.ts +14 -0
  1256. package/services/voice-profiles/nickname-evaluator.d.ts.map +1 -0
  1257. package/services/voice-profiles/nickname-evaluator.js +46 -0
  1258. package/services/voice-profiles/owner-confidence.d.ts +10 -0
  1259. package/services/voice-profiles/owner-confidence.d.ts.map +1 -0
  1260. package/services/voice-profiles/owner-confidence.js +38 -0
  1261. package/services/voice-profiles/private-challenge.d.ts +20 -0
  1262. package/services/voice-profiles/private-challenge.d.ts.map +1 -0
  1263. package/services/voice-profiles/private-challenge.js +44 -0
  1264. package/services/voice-profiles/store.d.ts +21 -0
  1265. package/services/voice-profiles/store.d.ts.map +1 -0
  1266. package/services/voice-profiles/store.js +50 -0
  1267. package/services/voice-profiles/types.d.ts +38 -0
  1268. package/services/voice-profiles/types.d.ts.map +1 -0
  1269. package/services/voice-profiles/types.js +1 -0
  1270. package/styles/electrobun-mac-window-drag.css +4 -4
  1271. package/test/helpers/__tests__/live-agent-test.smoke.test.ts +43 -70
  1272. package/test/helpers/browser-mocks.ts +2 -2
  1273. package/test/helpers/conditional-tests.ts +2 -2
  1274. package/test/helpers/i18n.ts +1 -1
  1275. package/test/helpers/live-agent-test.ts +537 -551
  1276. package/test/helpers/live-provider.test.ts +4 -4
  1277. package/test/helpers/live-provider.ts +41 -7
  1278. package/test/helpers/live-runtime-server.ts +4 -4
  1279. package/test/helpers/pglite-runtime.ts +1 -1
  1280. package/test/helpers/real-runtime.ts +54 -15
  1281. package/test/helpers/trajectory-harness.ts +11 -7
  1282. package/test/scripts/start-eliza-live.ts +9 -0
  1283. package/test/scripts/test-parallel.mjs +1 -1
  1284. package/test/scripts/test-root-unit.mjs +6 -7
  1285. package/ui-compat.d.ts +13 -2
  1286. package/ui-compat.d.ts.map +1 -1
  1287. package/ui-compat.js +19 -3
  1288. package/api/auth-pairing-compat-routes.d.ts +0 -17
  1289. package/api/auth-pairing-compat-routes.d.ts.map +0 -1
  1290. package/api/auth-pairing-compat-routes.js +0 -301
  1291. package/api/local-inference-compat-routes.d.ts +0 -16
  1292. package/api/local-inference-compat-routes.d.ts.map +0 -1
  1293. package/api/local-inference-compat-routes.js +0 -617
  1294. package/api/onboarding-compat-routes.d.ts +0 -4
  1295. package/api/onboarding-compat-routes.d.ts.map +0 -1
  1296. package/api/onboarding-compat-routes.js +0 -207
  1297. package/api/plugins-compat-routes.d.ts +0 -103
  1298. package/api/plugins-compat-routes.d.ts.map +0 -1
  1299. package/api/plugins-compat-routes.js +0 -1181
  1300. package/api/server-onboarding-compat.d.ts +0 -31
  1301. package/api/server-onboarding-compat.d.ts.map +0 -1
  1302. package/api/server-onboarding-compat.js +0 -283
  1303. package/benchmark/cua-routes.d.ts +0 -10
  1304. package/benchmark/cua-routes.d.ts.map +0 -1
  1305. package/benchmark/cua-routes.js +0 -179
  1306. package/benchmark/mock-plugin-base.d.ts +0 -9
  1307. package/benchmark/mock-plugin-base.d.ts.map +0 -1
  1308. package/benchmark/mock-plugin-base.js +0 -325
  1309. package/cli/parse-duration.d.ts +0 -5
  1310. package/cli/parse-duration.d.ts.map +0 -1
  1311. package/cli/parse-duration.js +0 -27
  1312. package/patches/llama-cpp-capacitor@0.1.5.patch +0 -2387
  1313. package/platform/agent-browser-stub.d.ts +0 -27
  1314. package/platform/agent-browser-stub.d.ts.map +0 -1
  1315. package/platform/agent-browser-stub.js +0 -16
  1316. package/platforms/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +0 -26
  1317. package/platforms/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  1318. package/platforms/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  1319. package/platforms/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +0 -18
  1320. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512@2x.png +0 -0
  1321. package/platforms/electrobun/assets/appIcon.png +0 -0
  1322. package/platforms/electrobun/scripts/build-whisper-universal.sh +0 -137
  1323. package/platforms/electrobun/scripts/build-whisper.sh +0 -95
  1324. package/platforms/electrobun/src/libMacWindowEffects.dylib +0 -0
  1325. package/platforms/electrobun/src/native/whisper.ts +0 -280
  1326. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  1327. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  1328. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  1329. package/registry/generate-apps.d.ts +0 -2
  1330. package/registry/generate-apps.d.ts.map +0 -1
  1331. package/registry/generate-apps.js +0 -338
  1332. package/registry/generate.d.ts +0 -2
  1333. package/registry/generate.d.ts.map +0 -1
  1334. package/registry/generate.js +0 -506
  1335. package/runtime/embedding-manager-support.d.ts +0 -77
  1336. package/runtime/embedding-manager-support.d.ts.map +0 -1
  1337. package/runtime/embedding-manager-support.js +0 -309
  1338. package/runtime/embedding-presets.d.ts +0 -5
  1339. package/runtime/embedding-presets.d.ts.map +0 -1
  1340. package/runtime/embedding-presets.js +0 -47
  1341. package/runtime/embedding-warmup-policy.d.ts +0 -13
  1342. package/runtime/embedding-warmup-policy.d.ts.map +0 -1
  1343. package/runtime/embedding-warmup-policy.js +0 -33
  1344. package/runtime/ensure-local-inference-handler.d.ts +0 -25
  1345. package/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  1346. package/runtime/ensure-local-inference-handler.js +0 -389
  1347. package/runtime/mobile-local-inference-gate.d.ts +0 -21
  1348. package/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  1349. package/runtime/mobile-local-inference-gate.js +0 -24
  1350. package/scripts/aosp/avd-test.mjs +0 -403
  1351. package/scripts/aosp/boot-validate.mjs +0 -536
  1352. package/scripts/aosp/build-aosp.mjs +0 -448
  1353. package/scripts/aosp/build-bootanimation.mjs +0 -178
  1354. package/scripts/aosp/capture-screens.mjs +0 -325
  1355. package/scripts/aosp/e2e-validate.mjs +0 -225
  1356. package/scripts/aosp/lint-init-rc.mjs +0 -258
  1357. package/scripts/aosp/llama-shim/eliza_llama_shim.c +0 -276
  1358. package/scripts/aosp/sim.mjs +0 -277
  1359. package/scripts/aosp/sync-to-aosp.mjs +0 -134
  1360. package/scripts/aosp/validate.mjs +0 -1273
  1361. package/scripts/build-llama-cpp-dflash.mjs +0 -1866
  1362. package/scripts/generate-onboarding-voicelines.mjs +0 -194
  1363. package/scripts/generated/static-asset-manifest.json +0 -4
  1364. package/scripts/normalize-parallax-capture.ts +0 -97
  1365. package/scripts/omnivoice-fuse/Makefile +0 -44
  1366. package/scripts/omnivoice-fuse/README.md +0 -266
  1367. package/scripts/omnivoice-fuse/cmake-graft.mjs +0 -180
  1368. package/scripts/omnivoice-fuse/ffi-stub.c +0 -222
  1369. package/scripts/omnivoice-fuse/ffi.h +0 -158
  1370. package/scripts/omnivoice-fuse/libelizainference_stub.dylib +0 -0
  1371. package/scripts/omnivoice-fuse/verify-symbols.mjs +0 -138
  1372. package/security/cloud-secret-store.d.ts +0 -34
  1373. package/security/cloud-secret-store.d.ts.map +0 -1
  1374. package/security/cloud-secret-store.js +0 -65
  1375. package/security/export-guard.d.ts +0 -34
  1376. package/security/export-guard.d.ts.map +0 -1
  1377. package/security/export-guard.js +0 -127
  1378. package/services/local-inference/__stress__/cache-stress-helpers.d.ts +0 -76
  1379. package/services/local-inference/__stress__/cache-stress-helpers.d.ts.map +0 -1
  1380. package/services/local-inference/__stress__/cache-stress-helpers.js +0 -238
  1381. package/services/local-inference/active-model.d.ts +0 -180
  1382. package/services/local-inference/active-model.d.ts.map +0 -1
  1383. package/services/local-inference/active-model.js +0 -362
  1384. package/services/local-inference/assignments.d.ts +0 -58
  1385. package/services/local-inference/assignments.d.ts.map +0 -1
  1386. package/services/local-inference/assignments.js +0 -179
  1387. package/services/local-inference/backend.d.ts +0 -200
  1388. package/services/local-inference/backend.d.ts.map +0 -1
  1389. package/services/local-inference/backend.js +0 -242
  1390. package/services/local-inference/bundled-models.d.ts +0 -34
  1391. package/services/local-inference/bundled-models.d.ts.map +0 -1
  1392. package/services/local-inference/bundled-models.js +0 -104
  1393. package/services/local-inference/cache-bridge.d.ts +0 -184
  1394. package/services/local-inference/cache-bridge.d.ts.map +0 -1
  1395. package/services/local-inference/cache-bridge.js +0 -333
  1396. package/services/local-inference/catalog.d.ts +0 -57
  1397. package/services/local-inference/catalog.d.ts.map +0 -1
  1398. package/services/local-inference/catalog.js +0 -262
  1399. package/services/local-inference/conversation-registry.d.ts +0 -122
  1400. package/services/local-inference/conversation-registry.d.ts.map +0 -1
  1401. package/services/local-inference/conversation-registry.js +0 -182
  1402. package/services/local-inference/device-bridge.d.ts +0 -139
  1403. package/services/local-inference/device-bridge.d.ts.map +0 -1
  1404. package/services/local-inference/device-bridge.js +0 -774
  1405. package/services/local-inference/dflash-doctor.d.ts +0 -27
  1406. package/services/local-inference/dflash-doctor.d.ts.map +0 -1
  1407. package/services/local-inference/dflash-doctor.js +0 -149
  1408. package/services/local-inference/dflash-server.d.ts +0 -248
  1409. package/services/local-inference/dflash-server.d.ts.map +0 -1
  1410. package/services/local-inference/dflash-server.js +0 -1076
  1411. package/services/local-inference/downloader.d.ts +0 -48
  1412. package/services/local-inference/downloader.d.ts.map +0 -1
  1413. package/services/local-inference/downloader.js +0 -688
  1414. package/services/local-inference/engine.d.ts +0 -282
  1415. package/services/local-inference/engine.d.ts.map +0 -1
  1416. package/services/local-inference/engine.js +0 -743
  1417. package/services/local-inference/external-scanner.d.ts +0 -17
  1418. package/services/local-inference/external-scanner.d.ts.map +0 -1
  1419. package/services/local-inference/external-scanner.js +0 -261
  1420. package/services/local-inference/handler-registry.d.ts +0 -72
  1421. package/services/local-inference/handler-registry.d.ts.map +0 -1
  1422. package/services/local-inference/handler-registry.js +0 -159
  1423. package/services/local-inference/hardware.d.ts +0 -26
  1424. package/services/local-inference/hardware.d.ts.map +0 -1
  1425. package/services/local-inference/hardware.js +0 -139
  1426. package/services/local-inference/hf-search.d.ts +0 -19
  1427. package/services/local-inference/hf-search.d.ts.map +0 -1
  1428. package/services/local-inference/hf-search.js +0 -169
  1429. package/services/local-inference/index.d.ts +0 -10
  1430. package/services/local-inference/index.d.ts.map +0 -1
  1431. package/services/local-inference/index.js +0 -7
  1432. package/services/local-inference/llama-server-metrics.d.ts +0 -108
  1433. package/services/local-inference/llama-server-metrics.d.ts.map +0 -1
  1434. package/services/local-inference/llama-server-metrics.js +0 -175
  1435. package/services/local-inference/manifest/index.d.ts +0 -4
  1436. package/services/local-inference/manifest/index.d.ts.map +0 -1
  1437. package/services/local-inference/manifest/index.js +0 -5
  1438. package/services/local-inference/manifest/schema.d.ts +0 -419
  1439. package/services/local-inference/manifest/schema.d.ts.map +0 -1
  1440. package/services/local-inference/manifest/schema.js +0 -227
  1441. package/services/local-inference/manifest/types.d.ts +0 -23
  1442. package/services/local-inference/manifest/types.d.ts.map +0 -1
  1443. package/services/local-inference/manifest/types.js +0 -5
  1444. package/services/local-inference/manifest/validator.d.ts +0 -43
  1445. package/services/local-inference/manifest/validator.d.ts.map +0 -1
  1446. package/services/local-inference/manifest/validator.js +0 -180
  1447. package/services/local-inference/paths.d.ts +0 -8
  1448. package/services/local-inference/paths.d.ts.map +0 -1
  1449. package/services/local-inference/paths.js +0 -7
  1450. package/services/local-inference/providers.d.ts +0 -61
  1451. package/services/local-inference/providers.d.ts.map +0 -1
  1452. package/services/local-inference/providers.js +0 -334
  1453. package/services/local-inference/ram-budget.d.ts +0 -57
  1454. package/services/local-inference/ram-budget.d.ts.map +0 -1
  1455. package/services/local-inference/ram-budget.js +0 -107
  1456. package/services/local-inference/readiness.d.ts +0 -9
  1457. package/services/local-inference/readiness.d.ts.map +0 -1
  1458. package/services/local-inference/readiness.js +0 -153
  1459. package/services/local-inference/recommendation.d.ts +0 -62
  1460. package/services/local-inference/recommendation.d.ts.map +0 -1
  1461. package/services/local-inference/recommendation.js +0 -309
  1462. package/services/local-inference/registry.d.ts +0 -35
  1463. package/services/local-inference/registry.d.ts.map +0 -1
  1464. package/services/local-inference/registry.js +0 -117
  1465. package/services/local-inference/router-handler.d.ts +0 -51
  1466. package/services/local-inference/router-handler.d.ts.map +0 -1
  1467. package/services/local-inference/router-handler.js +0 -165
  1468. package/services/local-inference/routing-policy.d.ts +0 -55
  1469. package/services/local-inference/routing-policy.d.ts.map +0 -1
  1470. package/services/local-inference/routing-policy.js +0 -195
  1471. package/services/local-inference/routing-preferences.d.ts +0 -8
  1472. package/services/local-inference/routing-preferences.d.ts.map +0 -1
  1473. package/services/local-inference/routing-preferences.js +0 -7
  1474. package/services/local-inference/service.d.ts +0 -88
  1475. package/services/local-inference/service.d.ts.map +0 -1
  1476. package/services/local-inference/service.js +0 -210
  1477. package/services/local-inference/session-pool.d.ts +0 -72
  1478. package/services/local-inference/session-pool.d.ts.map +0 -1
  1479. package/services/local-inference/session-pool.js +0 -125
  1480. package/services/local-inference/types.d.ts +0 -309
  1481. package/services/local-inference/types.d.ts.map +0 -1
  1482. package/services/local-inference/types.js +0 -23
  1483. package/services/local-inference/verify.d.ts +0 -8
  1484. package/services/local-inference/verify.d.ts.map +0 -1
  1485. package/services/local-inference/verify.js +0 -7
  1486. package/services/local-inference/voice/barge-in.d.ts +0 -15
  1487. package/services/local-inference/voice/barge-in.d.ts.map +0 -1
  1488. package/services/local-inference/voice/barge-in.js +0 -20
  1489. package/services/local-inference/voice/engine-bridge.d.ts +0 -256
  1490. package/services/local-inference/voice/engine-bridge.d.ts.map +0 -1
  1491. package/services/local-inference/voice/engine-bridge.js +0 -398
  1492. package/services/local-inference/voice/ffi-bindings.d.ts +0 -114
  1493. package/services/local-inference/voice/ffi-bindings.d.ts.map +0 -1
  1494. package/services/local-inference/voice/ffi-bindings.js +0 -281
  1495. package/services/local-inference/voice/index.d.ts +0 -51
  1496. package/services/local-inference/voice/index.d.ts.map +0 -1
  1497. package/services/local-inference/voice/index.js +0 -50
  1498. package/services/local-inference/voice/lifecycle.d.ts +0 -135
  1499. package/services/local-inference/voice/lifecycle.d.ts.map +0 -1
  1500. package/services/local-inference/voice/lifecycle.js +0 -189
  1501. package/services/local-inference/voice/phoneme-tokenizer.d.ts +0 -58
  1502. package/services/local-inference/voice/phoneme-tokenizer.d.ts.map +0 -1
  1503. package/services/local-inference/voice/phoneme-tokenizer.js +0 -53
  1504. package/services/local-inference/voice/phrase-cache.d.ts +0 -24
  1505. package/services/local-inference/voice/phrase-cache.d.ts.map +0 -1
  1506. package/services/local-inference/voice/phrase-cache.js +0 -32
  1507. package/services/local-inference/voice/phrase-chunker.d.ts +0 -20
  1508. package/services/local-inference/voice/phrase-chunker.d.ts.map +0 -1
  1509. package/services/local-inference/voice/phrase-chunker.js +0 -85
  1510. package/services/local-inference/voice/ring-buffer.d.ts +0 -40
  1511. package/services/local-inference/voice/ring-buffer.d.ts.map +0 -1
  1512. package/services/local-inference/voice/ring-buffer.js +0 -85
  1513. package/services/local-inference/voice/rollback-queue.d.ts +0 -24
  1514. package/services/local-inference/voice/rollback-queue.d.ts.map +0 -1
  1515. package/services/local-inference/voice/rollback-queue.js +0 -49
  1516. package/services/local-inference/voice/scheduler.d.ts +0 -47
  1517. package/services/local-inference/voice/scheduler.d.ts.map +0 -1
  1518. package/services/local-inference/voice/scheduler.js +0 -123
  1519. package/services/local-inference/voice/shared-resources.d.ts +0 -119
  1520. package/services/local-inference/voice/shared-resources.d.ts.map +0 -1
  1521. package/services/local-inference/voice/shared-resources.js +0 -83
  1522. package/services/local-inference/voice/speaker-preset-cache.d.ts +0 -28
  1523. package/services/local-inference/voice/speaker-preset-cache.d.ts.map +0 -1
  1524. package/services/local-inference/voice/speaker-preset-cache.js +0 -44
  1525. package/services/local-inference/voice/types.d.ts +0 -80
  1526. package/services/local-inference/voice/types.d.ts.map +0 -1
  1527. package/services/local-inference/voice/voice-preset-format.d.ts +0 -56
  1528. package/services/local-inference/voice/voice-preset-format.d.ts.map +0 -1
  1529. package/services/local-inference/voice/voice-preset-format.js +0 -184
  1530. package/services/plugin-installer.d.ts +0 -22
  1531. package/services/plugin-installer.d.ts.map +0 -1
  1532. package/services/plugin-installer.js +0 -41
  1533. package/test/scripts/task-agent-live-smoke.ts +0 -1335
  1534. /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,20 @@ 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,
436
929
  log = console.log,
437
930
  } = {}) {
438
931
  if (!androidDir)
@@ -441,7 +934,10 @@ export async function stageAndroidAgentRuntime({
441
934
  throw new Error("stageAndroidAgentRuntime: spikeDir is required");
442
935
 
443
936
  const tlog = logFor(log);
444
- fs.mkdirSync(cacheDir, { recursive: true });
937
+ const bunChannel = resolveBunChannel(preferredBunChannel);
938
+ const resolvedCacheDir = cacheDir ?? defaultBunCacheDir(bunChannel);
939
+ tlog(`Staging Android agent runtime with ${bunChannelLabel(bunChannel)}.`);
940
+ fs.mkdirSync(resolvedCacheDir, { recursive: true });
445
941
 
446
942
  // Runtime files ship under `assets/agent/{abi}/` for AOSP builds that can
447
943
  // execute from priv-app data, and under `jniLibs/{abi}/libeliza_*.so` for
@@ -461,17 +957,49 @@ export async function stageAndroidAgentRuntime({
461
957
  fs.mkdirSync(jniLibsDir, { recursive: true });
462
958
 
463
959
  let stagedCount = 0;
960
+ const stagedFiles = [];
961
+ const riscv64Artifact = {
962
+ required: true,
963
+ filename: RISCV64_BUN_ARTIFACT_FILENAME,
964
+ sha256: riscv64BunSha256(),
965
+ source: riscv64BunArtifactSource(),
966
+ };
464
967
 
465
968
  for (const target of ABI_TARGETS) {
466
969
  const { androidAbi, bunArch, alpineArch, ldName } = target;
970
+ // Objective builds fail closed on riscv64. Upstream Bun has no
971
+ // riscv64-linux-musl release, so provide ELIZA_BUN_RISCV64_FILE or
972
+ // ELIZA_BUN_RISCV64_URL from packages/app-core/scripts/bun-riscv64/build.sh.
973
+ // Local native-library iteration may opt out with
974
+ // ELIZA_BUN_RISCV64_OPTIONAL=1, but that build is not valid AOSP/chip
975
+ // objective evidence.
976
+ if (bunArch === "riscv64") {
977
+ const riscvFile = riscv64BunFilePath();
978
+ const riscvUrl = riscv64BunUrl();
979
+ const optional = process.env.ELIZA_BUN_RISCV64_OPTIONAL === "1";
980
+ if (!riscvFile && !riscvUrl && optional) {
981
+ tlog(
982
+ `Skipping optional ABI ${androidAbi}: no ELIZA_BUN_RISCV64_FILE or URL is set ` +
983
+ `(upstream Bun has no riscv64-linux-musl release). Build with ` +
984
+ `packages/app-core/scripts/bun-riscv64/build.sh and re-run for AOSP/chip evidence.`,
985
+ );
986
+ continue;
987
+ }
988
+ }
467
989
  const abiAssetsDir = path.join(assetsAgentDir, androidAbi);
468
990
  const abiJniDir = path.join(jniLibsDir, androidAbi);
469
991
  fs.mkdirSync(abiAssetsDir, { recursive: true });
470
992
  fs.mkdirSync(abiJniDir, { recursive: true });
471
993
 
472
- const bunPath = await ensureBunBinary({ cacheDir, bunArch, log: tlog });
994
+ const bun = await ensureBunBinary({
995
+ cacheDir: resolvedCacheDir,
996
+ bunArch,
997
+ bunChannel,
998
+ log: tlog,
999
+ });
1000
+ const bunPath = bun.bunPath;
473
1001
  const extractDir = await ensureAlpineApkExtracted({
474
- cacheDir,
1002
+ cacheDir: resolvedCacheDir,
475
1003
  alpineArch,
476
1004
  log: tlog,
477
1005
  });
@@ -496,11 +1024,17 @@ export async function stageAndroidAgentRuntime({
496
1024
  if (copyIfDifferent(src, dst)) abiChanges += 1;
497
1025
  }
498
1026
 
1027
+ abiChanges += stageNativeLlamaAssetsForAbi({
1028
+ androidAbi,
1029
+ abiAssetsDir,
1030
+ log: tlog,
1031
+ });
1032
+
499
1033
  // llama-server is produced by compile-libllama.mjs (per-ABI). It already
500
1034
  // lands at <abiAssetsDir>/llama-server when that script ran successfully,
501
1035
  // so we don't re-copy here — but we do ensure the bit is +x because some
502
1036
  // file-copy paths (e.g. zip → unzip on Windows builders) lose the
503
- // executable bit. The aosp-llama-adapter spawns it for DFlash decode;
1037
+ // executable bit. The aosp-llama-adapter spawns it for MTP decode;
504
1038
  // without +x exec fails with EACCES at runtime.
505
1039
  const llamaServerStaged = path.join(abiAssetsDir, "llama-server");
506
1040
  if (fs.existsSync(llamaServerStaged)) {
@@ -512,16 +1046,16 @@ export async function stageAndroidAgentRuntime({
512
1046
  }
513
1047
  } else {
514
1048
  tlog(
515
- `No llama-server staged for ${androidAbi}; DFlash spec-decode on AOSP ` +
1049
+ `No llama-server staged for ${androidAbi}; MTP spec-decode on AOSP ` +
516
1050
  `will fall back to single-model decode. Run \`node ` +
517
1051
  `packages/app-core/scripts/aosp/compile-libllama.mjs\` to build it.`,
518
1052
  );
519
1053
  }
520
1054
 
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:
1055
+ // Per-ABI seccomp shim install. Both x86_64 (legacy non-AT syscalls)
1056
+ // and arm64-v8a (the new-syscall case bun's `epoll_pwait2` blocked
1057
+ // by Android's `untrusted_app` filter) have compiled shim artifacts.
1058
+ // When the artifacts exist:
525
1059
  // 1. Stage `libsigsys-handler.so` next to bun.
526
1060
  // 2. Rename the Alpine-extracted ld-musl-*.so.1 → .so.1.real.
527
1061
  // 3. Stage our `loader-wrap` ELF as ld-musl-*.so.1.
@@ -531,8 +1065,8 @@ export async function stageAndroidAgentRuntime({
531
1065
  //
532
1066
  // Idempotent: if the wrapper is already in place we just refresh
533
1067
  // 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.
1068
+ // size+mtime check). If shim artifacts are missing we leave the packaged
1069
+ // musl loader in place so the Capacitor APK build still works.
536
1070
  const shimChanges = stageSeccompShimForAbi({
537
1071
  androidAbi,
538
1072
  ldName,
@@ -583,6 +1117,27 @@ export async function stageAndroidAgentRuntime({
583
1117
  if (copyIfDifferent(src, dst)) abiChanges += 1;
584
1118
  }
585
1119
 
1120
+ const stagedSource = {
1121
+ bun: bun.source,
1122
+ alpine: {
1123
+ branch: ALPINE_BRANCH,
1124
+ arch: alpineArch,
1125
+ packages: APK_PACKAGES.map(({ pkg }) => pkg),
1126
+ },
1127
+ };
1128
+ for (const [, dst] of [...sources, ...jniSources]) {
1129
+ stagedFiles.push(
1130
+ fileProvenanceEntry({
1131
+ filePath: dst,
1132
+ relativePath: path.relative(
1133
+ path.join(androidDir, "app", "src", "main"),
1134
+ dst,
1135
+ ),
1136
+ source: stagedSource,
1137
+ }),
1138
+ );
1139
+ }
1140
+
586
1141
  stagedCount += abiChanges;
587
1142
  tlog(
588
1143
  `Staged ${sources.length} runtime file(s) for ABI ${androidAbi}` +
@@ -590,9 +1145,8 @@ export async function stageAndroidAgentRuntime({
590
1145
  );
591
1146
  }
592
1147
 
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
1148
+ // ABI-independent assets: agent-bundle.js + PGlite payload. The real
1149
+ // bundle is produced in packages/agent/dist-mobile/ via
596
1150
  // `bun run --cwd packages/agent build:mobile`. PGlite at runtime
597
1151
  // resolves vector.tar.gz and fuzzystrmatch.tar.gz with `new URL("../X",
598
1152
  // import.meta.url)`, so those two files must land ONE DIR ABOVE the
@@ -645,30 +1199,34 @@ export async function stageAndroidAgentRuntime({
645
1199
  distMobileDir = elizaPackagesAgentDistMobile;
646
1200
  distBundle = path.join(distMobileDir, "agent-bundle.js");
647
1201
  }
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 {
1202
+ if (!fs.existsSync(distBundle)) {
663
1203
  throw new Error(
664
- `No agent bundle source found. Tried: ${distBundle}, ${spikeServerJs}.`,
1204
+ `No mobile agent bundle found at ${distBundle}. Run ` +
1205
+ "`bun run --cwd packages/agent build:mobile` before staging Android assets.",
665
1206
  );
666
1207
  }
1208
+ const bundleSrc = distBundle;
1209
+ tlog(
1210
+ `Using mobile agent bundle (${(fs.statSync(distBundle).size / (1024 * 1024)).toFixed(1)} MB)`,
1211
+ );
667
1212
  const bundleTarget = path.join(assetsAgentDir, "agent-bundle.js");
668
1213
  if (copyIfDifferent(bundleSrc, bundleTarget)) stagedCount += 1;
1214
+ stagedFiles.push(
1215
+ fileProvenanceEntry({
1216
+ filePath: bundleTarget,
1217
+ relativePath: path.relative(
1218
+ path.join(androidDir, "app", "src", "main"),
1219
+ bundleTarget,
1220
+ ),
1221
+ source: {
1222
+ kind: "mobile-agent-bundle",
1223
+ path: bundleSrc,
1224
+ },
1225
+ }),
1226
+ );
669
1227
 
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.
1228
+ // PGlite runtime artifacts. They are optional because minimal mobile bundles
1229
+ // can run without embedded database extensions.
672
1230
  const pgliteAssets = [
673
1231
  "pglite.wasm",
674
1232
  "initdb.wasm",
@@ -682,17 +1240,100 @@ export async function stageAndroidAgentRuntime({
682
1240
  if (!fs.existsSync(src)) continue;
683
1241
  const dst = path.join(assetsAgentDir, name);
684
1242
  if (copyIfDifferent(src, dst)) stagedCount += 1;
1243
+ stagedFiles.push(
1244
+ fileProvenanceEntry({
1245
+ filePath: dst,
1246
+ relativePath: path.relative(
1247
+ path.join(androidDir, "app", "src", "main"),
1248
+ dst,
1249
+ ),
1250
+ source: {
1251
+ kind: "mobile-agent-bundle",
1252
+ path: src,
1253
+ },
1254
+ }),
1255
+ );
685
1256
  }
686
1257
 
687
1258
  const launchTarget = path.join(assetsAgentDir, "launch.sh");
688
1259
  if (writeIfChanged(launchTarget, LAUNCH_SCRIPT)) stagedCount += 1;
1260
+ stagedFiles.push(
1261
+ fileProvenanceEntry({
1262
+ filePath: launchTarget,
1263
+ relativePath: path.relative(
1264
+ path.join(androidDir, "app", "src", "main"),
1265
+ launchTarget,
1266
+ ),
1267
+ source: { kind: "stage-android-agent", constant: "LAUNCH_SCRIPT" },
1268
+ }),
1269
+ );
1270
+ const llamaDiagnosticTarget = path.join(
1271
+ assetsAgentDir,
1272
+ "llama-kernel-diagnostic.mjs",
1273
+ );
1274
+ if (writeIfChanged(llamaDiagnosticTarget, LLAMA_KERNEL_DIAGNOSTIC_SCRIPT)) {
1275
+ stagedCount += 1;
1276
+ }
1277
+ stagedFiles.push(
1278
+ fileProvenanceEntry({
1279
+ filePath: llamaDiagnosticTarget,
1280
+ relativePath: path.relative(
1281
+ path.join(androidDir, "app", "src", "main"),
1282
+ llamaDiagnosticTarget,
1283
+ ),
1284
+ source: {
1285
+ kind: "stage-android-agent",
1286
+ constant: "LLAMA_KERNEL_DIAGNOSTIC_SCRIPT",
1287
+ },
1288
+ }),
1289
+ );
1290
+
1291
+ const bunRiscv64VersionPath = path.resolve(
1292
+ __dirname,
1293
+ "..",
1294
+ "bun-riscv64",
1295
+ "bun-version.json",
1296
+ );
1297
+ const runtimeProvenanceTarget = path.join(
1298
+ assetsAgentDir,
1299
+ RUNTIME_PROVENANCE_FILENAME,
1300
+ );
1301
+ const runtimeProvenance = {
1302
+ schema: "eliza.android_agent_runtime_provenance.v1",
1303
+ generated_by: "packages/app-core/scripts/lib/stage-android-agent.mjs",
1304
+ claim_boundary:
1305
+ "apk_staged_runtime_file_hashes_only_not_android_boot_or_runtime_execution_evidence",
1306
+ bun: {
1307
+ version: BUN_VERSION,
1308
+ channel: bunChannel,
1309
+ cache_key: bunCacheKey(bunChannel),
1310
+ },
1311
+ alpine: {
1312
+ branch: ALPINE_BRANCH,
1313
+ },
1314
+ riscv64_bun_artifact: riscv64Artifact,
1315
+ riscv64_bun_build_contract: readJsonIfExists(bunRiscv64VersionPath),
1316
+ files: stagedFiles.sort((a, b) => a.path.localeCompare(b.path)),
1317
+ };
1318
+ if (
1319
+ writeIfChanged(
1320
+ runtimeProvenanceTarget,
1321
+ `${JSON.stringify(runtimeProvenance, null, 2)}\n`,
1322
+ )
1323
+ ) {
1324
+ stagedCount += 1;
1325
+ }
689
1326
 
690
1327
  tlog(
691
1328
  `Staged on-device agent runtime in ${path.relative(androidDir, assetsAgentDir)} ` +
692
1329
  `(${stagedCount} file change${stagedCount === 1 ? "" : "s"} this run).`,
693
1330
  );
694
1331
 
695
- return { assetsAgentDir, stagedCount };
1332
+ return {
1333
+ assetsAgentDir,
1334
+ stagedCount,
1335
+ runtimeProvenancePath: runtimeProvenanceTarget,
1336
+ };
696
1337
  }
697
1338
 
698
1339
  export const __testables = {
@@ -701,4 +1342,12 @@ export const __testables = {
701
1342
  ABI_TARGETS,
702
1343
  APK_PACKAGES,
703
1344
  LAUNCH_SCRIPT,
1345
+ LLAMA_KERNEL_DIAGNOSTIC_SCRIPT,
1346
+ RISCV64_BUN_ARTIFACT_FILENAME,
1347
+ RUNTIME_PROVENANCE_FILENAME,
1348
+ defaultRiscv64BunArtifactPath,
1349
+ riscv64BunFilePath,
1350
+ riscv64BunArtifactSource,
1351
+ riscv64BunSha256,
1352
+ provenancePath,
704
1353
  };