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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1466) hide show
  1. package/agent-bridge.d.ts +27 -0
  2. package/agent-bridge.d.ts.map +1 -0
  3. package/agent-bridge.js +26 -0
  4. package/api/__tests__/sandbox-test-helpers.js +1 -1
  5. package/api/auth/audit.d.ts +1 -1
  6. package/api/auth/audit.js +1 -1
  7. package/api/auth/auth-context.d.ts +1 -1
  8. package/api/auth/auth-context.js +1 -1
  9. package/api/auth/bootstrap-token.d.ts +1 -1
  10. package/api/auth/bootstrap-token.js +2 -2
  11. package/api/auth/index.d.ts +9 -10
  12. package/api/auth/index.d.ts.map +1 -1
  13. package/api/auth/index.js +9 -10
  14. package/api/auth/passwords.js +2 -2
  15. package/api/auth/sensitive-rate-limit.d.ts +1 -4
  16. package/api/auth/sensitive-rate-limit.d.ts.map +1 -1
  17. package/api/auth/sensitive-rate-limit.js +6 -6
  18. package/api/auth/sessions.d.ts +1 -1
  19. package/api/auth/sessions.js +2 -2
  20. package/api/auth-bootstrap-routes.d.ts +7 -14
  21. package/api/auth-bootstrap-routes.d.ts.map +1 -1
  22. package/api/auth-bootstrap-routes.js +14 -27
  23. package/api/auth-pairing-routes.d.ts +17 -0
  24. package/api/auth-pairing-routes.d.ts.map +1 -0
  25. package/api/auth-pairing-routes.js +299 -0
  26. package/api/auth-session-routes.d.ts +2 -2
  27. package/api/auth-session-routes.d.ts.map +1 -1
  28. package/api/auth-session-routes.js +36 -15
  29. package/api/auth.d.ts +13 -20
  30. package/api/auth.d.ts.map +1 -1
  31. package/api/auth.js +32 -27
  32. package/api/automations-compat-routes.d.ts +1 -1
  33. package/api/automations-compat-routes.d.ts.map +1 -1
  34. package/api/automations-compat-routes.js +5 -5
  35. package/api/background-tasks-routes.d.ts +4 -0
  36. package/api/background-tasks-routes.d.ts.map +1 -0
  37. package/api/background-tasks-routes.js +63 -0
  38. package/api/catalog-routes.d.ts +1 -1
  39. package/api/catalog-routes.js +3 -3
  40. package/api/cloud-pair-route.d.ts +26 -0
  41. package/api/cloud-pair-route.d.ts.map +1 -0
  42. package/api/cloud-pair-route.js +222 -0
  43. package/api/cloud-voice-routes.d.ts +52 -0
  44. package/api/cloud-voice-routes.d.ts.map +1 -0
  45. package/api/cloud-voice-routes.js +50 -0
  46. package/api/compat-route-shared.d.ts +14 -7
  47. package/api/compat-route-shared.d.ts.map +1 -1
  48. package/api/compat-route-shared.js +27 -188
  49. package/api/credential-resolver.d.ts +2 -2
  50. package/api/credential-resolver.d.ts.map +1 -1
  51. package/api/credential-resolver.js +8 -2
  52. package/api/database-rows-compat-routes.d.ts +1 -1
  53. package/api/database-rows-compat-routes.d.ts.map +1 -1
  54. package/api/database-rows-compat-routes.js +69 -31
  55. package/api/dev-boot-history.d.ts +26 -0
  56. package/api/dev-boot-history.d.ts.map +1 -0
  57. package/api/dev-boot-history.js +69 -0
  58. package/api/dev-compat-routes.d.ts +6 -1
  59. package/api/dev-compat-routes.d.ts.map +1 -1
  60. package/api/dev-compat-routes.js +127 -4
  61. package/api/dev-console-log.d.ts +2 -2
  62. package/api/dev-console-log.d.ts.map +1 -1
  63. package/api/dev-console-log.js +8 -5
  64. package/api/dev-route-catalog.d.ts +58 -0
  65. package/api/dev-route-catalog.d.ts.map +1 -0
  66. package/api/dev-route-catalog.js +477 -0
  67. package/api/dev-stack.d.ts.map +1 -1
  68. package/api/dev-stack.js +6 -9
  69. package/api/drop-status-compat-route.d.ts +3 -0
  70. package/api/drop-status-compat-route.d.ts.map +1 -0
  71. package/api/drop-status-compat-route.js +12 -0
  72. package/api/first-run-routes.d.ts +4 -0
  73. package/api/first-run-routes.d.ts.map +1 -0
  74. package/api/first-run-routes.js +208 -0
  75. package/api/first-run-tts-route.d.ts +19 -0
  76. package/api/first-run-tts-route.d.ts.map +1 -0
  77. package/api/first-run-tts-route.js +59 -0
  78. package/api/internal-routes.d.ts +23 -0
  79. package/api/internal-routes.d.ts.map +1 -0
  80. package/api/internal-routes.js +203 -0
  81. package/api/ios-local-agent-transport.d.ts +36 -0
  82. package/api/ios-local-agent-transport.d.ts.map +1 -0
  83. package/api/ios-local-agent-transport.js +566 -0
  84. package/api/onboarding-voice-lines.d.ts +23 -0
  85. package/api/onboarding-voice-lines.d.ts.map +1 -0
  86. package/api/onboarding-voice-lines.js +8 -0
  87. package/api/perf-instrument.d.ts +43 -0
  88. package/api/perf-instrument.d.ts.map +1 -0
  89. package/api/perf-instrument.js +113 -0
  90. package/api/response.d.ts.map +1 -1
  91. package/api/response.js +14 -14
  92. package/api/runtime-mode-routes.d.ts +1 -1
  93. package/api/runtime-mode-routes.d.ts.map +1 -1
  94. package/api/runtime-mode-routes.js +2 -2
  95. package/api/secrets-inventory-routes.js +2 -2
  96. package/api/secrets-manager-routes.d.ts +1 -1
  97. package/api/secrets-manager-routes.d.ts.map +1 -1
  98. package/api/secrets-manager-routes.js +9 -10
  99. package/api/sensitive-request-routes.d.ts +2 -2
  100. package/api/sensitive-request-routes.js +5 -5
  101. package/api/server-config-filter.d.ts.map +1 -1
  102. package/api/server-config-filter.js +0 -1
  103. package/api/server-cors.d.ts.map +1 -1
  104. package/api/server-cors.js +13 -2
  105. package/api/server-first-run-helpers.d.ts +26 -0
  106. package/api/server-first-run-helpers.d.ts.map +1 -0
  107. package/api/server-first-run-helpers.js +268 -0
  108. package/api/server-security.js +1 -1
  109. package/api/server-startup.d.ts.map +1 -1
  110. package/api/server-startup.js +3 -4
  111. package/api/server-wallet-trade.js +1 -1
  112. package/api/server.d.ts +11 -11
  113. package/api/server.d.ts.map +1 -1
  114. package/api/server.js +227 -139
  115. package/api/setup-contract.d.ts +63 -0
  116. package/api/setup-contract.d.ts.map +1 -0
  117. package/api/setup-contract.js +39 -0
  118. package/api/training-benchmarks.d.ts +97 -0
  119. package/api/training-benchmarks.d.ts.map +1 -0
  120. package/api/training-benchmarks.js +329 -0
  121. package/api/workbench-compat-routes.d.ts +1 -1
  122. package/api/workbench-compat-routes.js +2 -2
  123. package/benchmark/cerebras-autowire.d.ts +28 -0
  124. package/benchmark/cerebras-autowire.d.ts.map +1 -0
  125. package/benchmark/cerebras-autowire.js +62 -0
  126. package/benchmark/lifeops-bench-handler.d.ts +36 -0
  127. package/benchmark/lifeops-bench-handler.d.ts.map +1 -1
  128. package/benchmark/lifeops-bench-handler.js +63 -1
  129. package/benchmark/lifeops-fake-backend.d.ts +39 -0
  130. package/benchmark/lifeops-fake-backend.d.ts.map +1 -1
  131. package/benchmark/lifeops-fake-backend.js +993 -21
  132. package/benchmark/mock-plugin.d.ts.map +1 -1
  133. package/benchmark/mock-plugin.js +0 -24
  134. package/benchmark/plugin.d.ts +2 -1
  135. package/benchmark/plugin.d.ts.map +1 -1
  136. package/benchmark/plugin.js +989 -68
  137. package/benchmark/replay-capture.d.ts +2 -2
  138. package/benchmark/replay-capture.d.ts.map +1 -1
  139. package/benchmark/replay-capture.js +3 -3
  140. package/benchmark/server-utils.d.ts +164 -11
  141. package/benchmark/server-utils.d.ts.map +1 -1
  142. package/benchmark/server-utils.js +625 -62
  143. package/benchmark/server.d.ts.map +1 -1
  144. package/benchmark/server.js +1962 -118
  145. package/boot-profile.d.ts +3 -0
  146. package/boot-profile.d.ts.map +1 -0
  147. package/boot-profile.js +30 -0
  148. package/browser.d.ts +23 -1
  149. package/browser.d.ts.map +1 -1
  150. package/browser.js +20 -1
  151. package/cli/argv.js +1 -1
  152. package/cli/banner.js +1 -1
  153. package/cli/command-format.js +2 -2
  154. package/cli/doctor/checks.d.ts.map +1 -1
  155. package/cli/doctor/checks.js +6 -6
  156. package/cli/plugins-cli.d.ts.map +1 -1
  157. package/cli/plugins-cli.js +82 -32
  158. package/cli/profile.d.ts.map +1 -1
  159. package/cli/profile.js +5 -4
  160. package/cli/program/build-program.js +4 -4
  161. package/cli/program/command-registry.d.ts.map +1 -1
  162. package/cli/program/command-registry.js +13 -11
  163. package/cli/program/help.js +5 -5
  164. package/cli/program/preaction.js +5 -5
  165. package/cli/program/register.auth.d.ts +27 -1
  166. package/cli/program/register.auth.d.ts.map +1 -1
  167. package/cli/program/register.auth.js +193 -12
  168. package/cli/program/register.capability-router.d.ts +29 -0
  169. package/cli/program/register.capability-router.d.ts.map +1 -0
  170. package/cli/program/register.capability-router.js +568 -0
  171. package/cli/program/register.config.js +1 -1
  172. package/cli/program/register.configure.d.ts.map +1 -1
  173. package/cli/program/register.configure.js +1 -1
  174. package/cli/program/register.dashboard.d.ts.map +1 -1
  175. package/cli/program/register.dashboard.js +17 -8
  176. package/cli/program/register.db.d.ts.map +1 -1
  177. package/cli/program/register.db.js +3 -4
  178. package/cli/program/register.doctor.js +7 -7
  179. package/cli/program/register.setup.d.ts.map +1 -1
  180. package/cli/program/register.setup.js +14 -10
  181. package/cli/program/register.start.d.ts.map +1 -1
  182. package/cli/program/register.start.js +5 -3
  183. package/cli/program/register.subclis.js +3 -3
  184. package/cli/program/register.update.d.ts +6 -0
  185. package/cli/program/register.update.d.ts.map +1 -1
  186. package/cli/program/register.update.js +58 -6
  187. package/cli/program.d.ts +1 -1
  188. package/cli/program.js +1 -1
  189. package/cli/run-main.js +4 -4
  190. package/config/app-config.d.ts +2 -0
  191. package/config/app-config.d.ts.map +1 -0
  192. package/config/app-config.js +1 -0
  193. package/connectors/capacitor-jsc.d.ts.map +1 -1
  194. package/connectors/capacitor-jsc.js +16 -10
  195. package/connectors/capacitor-quickjs.d.ts.map +1 -1
  196. package/connectors/capacitor-quickjs.js +18 -13
  197. package/connectors/capacitor-sqlite.d.ts.map +1 -1
  198. package/connectors/capacitor-sqlite.js +27 -12
  199. package/dispatch/approval-queue.d.ts +37 -0
  200. package/dispatch/approval-queue.d.ts.map +1 -0
  201. package/dispatch/approval-queue.js +25 -0
  202. package/dispatch/channel-registry.d.ts +30 -0
  203. package/dispatch/channel-registry.d.ts.map +1 -0
  204. package/dispatch/channel-registry.js +22 -0
  205. package/dispatch/connector-registry.d.ts +39 -0
  206. package/dispatch/connector-registry.d.ts.map +1 -0
  207. package/dispatch/connector-registry.js +24 -0
  208. package/dispatch/index.d.ts +14 -0
  209. package/dispatch/index.d.ts.map +1 -0
  210. package/dispatch/index.js +13 -0
  211. package/dispatch/send-policy.d.ts +36 -0
  212. package/dispatch/send-policy.d.ts.map +1 -0
  213. package/dispatch/send-policy.js +16 -0
  214. package/entry.js +28 -11
  215. package/first-run/first-run-config.d.ts +55 -0
  216. package/first-run/first-run-config.d.ts.map +1 -0
  217. package/first-run/first-run-config.js +178 -0
  218. package/first-run/runtime-target.d.ts +4 -0
  219. package/first-run/runtime-target.d.ts.map +1 -0
  220. package/first-run/runtime-target.js +13 -0
  221. package/index.d.ts +46 -34
  222. package/index.d.ts.map +1 -1
  223. package/index.js +53 -33
  224. package/package.json +166 -51
  225. package/packaging/PUBLISHING_GUIDE.md +20 -20
  226. package/packaging/debian/apt-repo-config/README.md +18 -0
  227. package/packaging/debian/apt-repo-config/conf/distributions +11 -0
  228. package/packaging/flatpak/README.md +26 -16
  229. package/packaging/flatpak/ai.elizaos.App.metainfo.xml +17 -12
  230. package/packaging/flatpak/ai.elizaos.App.store.yml +5 -5
  231. package/packaging/flatpak/ai.elizaos.App.yml +10 -24
  232. package/packaging/flatpak/elizaos-app-wrapper.store.sh +2 -2
  233. package/packaging/flatpak/generate-sources.sh +74 -0
  234. package/packaging/flatpak/node-sources.json +7930 -0
  235. package/packaging/inno/build-inno.ps1 +34 -9
  236. package/packaging/msix/AppxManifest.store.xml +1 -1
  237. package/packaging/msix/README.md +39 -19
  238. package/packaging/msix/build-msix.ps1 +44 -14
  239. package/packaging/snap/snapcraft.yaml +22 -21
  240. package/packaging/test-packaging.sh +2 -2
  241. package/permissions/types.d.ts +1 -1
  242. package/permissions/types.js +1 -1
  243. package/platform/elizaos-agent-browser-stub.d.ts +143 -0
  244. package/platform/elizaos-agent-browser-stub.d.ts.map +1 -0
  245. package/platform/elizaos-agent-browser-stub.js +157 -0
  246. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts +34 -0
  247. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts.map +1 -0
  248. package/platform/elizaos-plugin-elizacloud-browser-stub.js +51 -0
  249. package/platform/empty-node-module.d.ts +148 -0
  250. package/platform/empty-node-module.d.ts.map +1 -1
  251. package/platform/empty-node-module.js +140 -3
  252. package/platform/ios-runtime-backends.d.ts +83 -0
  253. package/platform/ios-runtime-backends.d.ts.map +1 -0
  254. package/platform/ios-runtime-backends.js +133 -0
  255. package/platform/ios-runtime-bridge.d.ts +15 -0
  256. package/platform/ios-runtime-bridge.d.ts.map +1 -0
  257. package/platform/ios-runtime-bridge.js +526 -0
  258. package/platform/native-library-policy.d.ts +23 -0
  259. package/platform/native-library-policy.d.ts.map +1 -0
  260. package/platform/native-library-policy.js +112 -0
  261. package/platform/native-plugin-entrypoints.d.ts +19 -0
  262. package/platform/native-plugin-entrypoints.d.ts.map +1 -0
  263. package/platform/native-plugin-entrypoints.js +29 -0
  264. package/platforms/android/README.md +68 -10
  265. package/platforms/android/app/build.gradle +291 -3
  266. package/platforms/android/app/capacitor.build.gradle +18 -1
  267. package/platforms/android/app/proguard-rules.pro +17 -2
  268. package/platforms/android/app/src/androidTest/java/ai/elizaos/app/ElizaOsInstrumentedTest.java +1 -1
  269. package/platforms/android/app/src/main/AndroidManifest.xml +335 -18
  270. package/platforms/android/app/src/main/assets/runners/eliza-tasks.js +177 -0
  271. package/platforms/android/app/src/main/elizavoice-jni/CMakeLists.txt +100 -0
  272. package/platforms/android/app/src/main/elizavoice-jni/elizavoice-jni.cpp +1629 -0
  273. package/platforms/android/app/src/main/java/ai/elizaos/app/AgentPlugin.java +111 -171
  274. package/platforms/android/app/src/main/java/ai/elizaos/app/AndroidVirtualizationBridge.java +284 -0
  275. package/platforms/android/app/src/main/java/ai/elizaos/app/BatteryOptimizationPlugin.java +95 -0
  276. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAccessibilityService.java +55 -0
  277. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +1283 -141
  278. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAndroidSystemBridge.java +83 -0
  279. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAssistActivity.java +50 -1
  280. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBionicInferenceServer.java +740 -0
  281. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBootReceiver.java +90 -8
  282. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBrowserActivity.java +2 -2
  283. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCalendarActivity.java +1 -1
  284. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCameraActivity.java +1 -1
  285. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaClockActivity.java +2 -2
  286. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaContactsActivity.java +1 -1
  287. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaDialActivity.java +1 -1
  288. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaInCallService.java +1 -1
  289. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaMmsReceiver.java +1 -1
  290. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +22 -0
  291. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNotificationListenerService.java +45 -0
  292. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaQuickActionsWidgetProvider.java +68 -0
  293. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaShareActivity.java +132 -0
  294. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsComposeActivity.java +1 -1
  295. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsGatewayService.java +268 -0
  296. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsReceiver.java +12 -1
  297. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaTasksWorker.java +194 -0
  298. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceCaptureService.java +198 -0
  299. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceNative.java +255 -0
  300. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +505 -0
  301. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceTileService.java +39 -0
  302. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaWorkScheduler.java +60 -0
  303. package/platforms/android/app/src/main/java/ai/elizaos/app/GatewayConnectionService.java +53 -19
  304. package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +160 -33
  305. package/platforms/android/app/src/main/java/ai/elizaos/app/ResourceProbePlugin.java +169 -0
  306. package/platforms/android/app/src/main/java/ai/elizaos/app/VoiceCapturePlugin.java +119 -0
  307. package/platforms/android/app/src/main/res/drawable/eliza_widget_background.xml +10 -0
  308. package/platforms/android/app/src/main/res/drawable/eliza_widget_button_background.xml +13 -0
  309. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  310. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  311. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  312. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  313. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  314. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  315. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  316. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  317. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  318. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  319. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  320. package/platforms/android/app/src/main/res/layout/eliza_quick_actions_widget.xml +86 -0
  321. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +2 -1
  322. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +2 -1
  323. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  324. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  325. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png +0 -0
  326. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  327. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  328. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  329. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png +0 -0
  330. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  331. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  332. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  333. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png +0 -0
  334. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  335. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  336. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  337. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png +0 -0
  338. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  339. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  340. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  341. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png +0 -0
  342. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  343. package/platforms/android/app/src/main/res/values/android_app_actions.xml +48 -0
  344. package/platforms/android/app/src/main/res/values/colors.xml +12 -0
  345. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +2 -2
  346. package/platforms/android/app/src/main/res/values/strings.xml +2 -2
  347. package/platforms/android/app/src/main/res/values/styles.xml +28 -1
  348. package/platforms/android/app/src/main/res/xml/eliza_accessibility_service.xml +9 -0
  349. package/platforms/android/app/src/main/res/xml/eliza_quick_actions_widget.xml +13 -0
  350. package/platforms/android/app/src/main/res/xml/shortcuts.xml +121 -0
  351. package/platforms/android/build.gradle +2 -2
  352. package/platforms/android/capacitor-cordova-android-plugins/build.gradle +9 -3
  353. package/platforms/android/capacitor-cordova-android-plugins/cordova.variables.gradle +6 -2
  354. package/platforms/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml +7 -2
  355. package/platforms/android/capacitor-cordova-android-plugins/src/main/java/.gitkeep +0 -1
  356. package/platforms/android/capacitor.settings.gradle +66 -16
  357. package/platforms/android/gradle.properties +1 -0
  358. package/platforms/android/update-manifest/generate-manifest.mjs +97 -0
  359. package/platforms/android/update-manifest/schema.json +26 -0
  360. package/platforms/apple-store-entitlements.reviewed.json +155 -0
  361. package/platforms/electrobun/.generated/brand-config.json +3 -2
  362. package/platforms/electrobun/LICENSE +21 -0
  363. package/platforms/electrobun/README.md +15 -1
  364. package/platforms/electrobun/assets/appIcon.icns +0 -0
  365. package/platforms/electrobun/assets/appIcon.ico +0 -0
  366. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128.png +0 -0
  367. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128@2x.png +0 -0
  368. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16.png +0 -0
  369. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16@2x.png +0 -0
  370. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256.png +0 -0
  371. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256@2x.png +0 -0
  372. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32.png +0 -0
  373. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32@2x.png +0 -0
  374. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512.png +0 -0
  375. package/platforms/electrobun/assets/brand-config.json +6 -6
  376. package/platforms/electrobun/biome.json +9 -9
  377. package/platforms/electrobun/docs/capability-collapse-matrix.json +318 -0
  378. package/platforms/electrobun/docs/capability-collapse-matrix.md +129 -0
  379. package/platforms/electrobun/docs/capability-routing.md +86 -0
  380. package/platforms/electrobun/docs/database-boot-policy.md +90 -0
  381. package/platforms/electrobun/docs/riscv64-port.md +175 -0
  382. package/platforms/electrobun/docs/startup-first-run-cleanup.md +18 -0
  383. package/platforms/electrobun/docs/trace-first-annotations.md +52 -0
  384. package/platforms/electrobun/docs/ui-boundary-audit.json +580 -0
  385. package/platforms/electrobun/docs/ui-boundary-audit.md +257 -0
  386. package/platforms/electrobun/electrobun.config.ts +591 -364
  387. package/platforms/electrobun/entitlements/JUSTIFICATIONS.md +141 -0
  388. package/platforms/electrobun/entitlements/README.md +34 -6
  389. package/platforms/electrobun/entitlements/mas-bun.entitlements +15 -0
  390. package/platforms/electrobun/entitlements/mas.entitlements +6 -4
  391. package/platforms/electrobun/native/macos/window-effects.mm +1526 -0
  392. package/platforms/electrobun/package.json +21 -13
  393. package/platforms/electrobun/remotes/fs/README.md +70 -0
  394. package/platforms/electrobun/remotes/fs/electrobun.config.ts +38 -0
  395. package/platforms/electrobun/remotes/fs/package.json +12 -0
  396. package/platforms/electrobun/remotes/fs/plugin.json +25 -0
  397. package/platforms/electrobun/remotes/fs/src/bun/errors.ts +57 -0
  398. package/platforms/electrobun/remotes/fs/src/bun/file-limits.ts +50 -0
  399. package/platforms/electrobun/remotes/fs/src/bun/fs-service.ts +389 -0
  400. package/platforms/electrobun/remotes/fs/src/bun/path-guard.ts +270 -0
  401. package/platforms/electrobun/remotes/fs/src/bun/protocol.ts +149 -0
  402. package/platforms/electrobun/remotes/fs/src/bun/worker.ts +174 -0
  403. package/platforms/electrobun/remotes/fs/src/dev/phase5-smoke.ts +171 -0
  404. package/platforms/electrobun/remotes/fs/src/web/index.html +8 -0
  405. package/platforms/electrobun/remotes/git/README.md +75 -0
  406. package/platforms/electrobun/remotes/git/electrobun.config.ts +44 -0
  407. package/platforms/electrobun/remotes/git/package.json +12 -0
  408. package/platforms/electrobun/remotes/git/plugin.json +31 -0
  409. package/platforms/electrobun/remotes/git/src/bun/errors.ts +69 -0
  410. package/platforms/electrobun/remotes/git/src/bun/git-command.ts +156 -0
  411. package/platforms/electrobun/remotes/git/src/bun/git-service.ts +446 -0
  412. package/platforms/electrobun/remotes/git/src/bun/operation-history.ts +124 -0
  413. package/platforms/electrobun/remotes/git/src/bun/protocol.ts +252 -0
  414. package/platforms/electrobun/remotes/git/src/bun/worker.ts +316 -0
  415. package/platforms/electrobun/remotes/git/src/dev/phase7-smoke.ts +141 -0
  416. package/platforms/electrobun/remotes/git/src/web/index.html +8 -0
  417. package/platforms/electrobun/remotes/local-model/README.md +138 -0
  418. package/platforms/electrobun/remotes/local-model/electrobun.config.ts +46 -0
  419. package/platforms/electrobun/remotes/local-model/package.json +12 -0
  420. package/platforms/electrobun/remotes/local-model/plugin.json +33 -0
  421. package/platforms/electrobun/remotes/local-model/src/bun/download-state.ts +115 -0
  422. package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +405 -0
  423. package/platforms/electrobun/remotes/local-model/src/bun/errors.ts +74 -0
  424. package/platforms/electrobun/remotes/local-model/src/bun/hf-eliza1-client.ts +169 -0
  425. package/platforms/electrobun/remotes/local-model/src/bun/local-inference-api-client.ts +245 -0
  426. package/platforms/electrobun/remotes/local-model/src/bun/model-service.ts +490 -0
  427. package/platforms/electrobun/remotes/local-model/src/bun/protocol.ts +301 -0
  428. package/platforms/electrobun/remotes/local-model/src/bun/worker.ts +248 -0
  429. package/platforms/electrobun/remotes/local-model/src/dev/phase8-smoke.ts +116 -0
  430. package/platforms/electrobun/remotes/local-model/src/web/index.html +13 -0
  431. package/platforms/electrobun/remotes/pty/README.md +65 -0
  432. package/platforms/electrobun/remotes/pty/electrobun.config.ts +47 -0
  433. package/platforms/electrobun/remotes/pty/package.json +12 -0
  434. package/platforms/electrobun/remotes/pty/plugin.json +34 -0
  435. package/platforms/electrobun/remotes/pty/src/bun/errors.ts +57 -0
  436. package/platforms/electrobun/remotes/pty/src/bun/output-buffer.ts +127 -0
  437. package/platforms/electrobun/remotes/pty/src/bun/protocol.ts +192 -0
  438. package/platforms/electrobun/remotes/pty/src/bun/pty-service.ts +562 -0
  439. package/platforms/electrobun/remotes/pty/src/bun/worker.ts +218 -0
  440. package/platforms/electrobun/remotes/pty/src/dev/phase6-smoke.ts +127 -0
  441. package/platforms/electrobun/remotes/pty/src/web/index.html +8 -0
  442. package/platforms/electrobun/remotes/runtime/README.md +370 -0
  443. package/platforms/electrobun/remotes/runtime/electrobun.config.ts +48 -0
  444. package/platforms/electrobun/remotes/runtime/package.json +14 -0
  445. package/platforms/electrobun/remotes/runtime/plugin.json +30 -0
  446. package/platforms/electrobun/remotes/runtime/src/bun/api-client.ts +620 -0
  447. package/platforms/electrobun/remotes/runtime/src/bun/errors.ts +45 -0
  448. package/platforms/electrobun/remotes/runtime/src/bun/log-buffer.ts +33 -0
  449. package/platforms/electrobun/remotes/runtime/src/bun/protocol.ts +366 -0
  450. package/platforms/electrobun/remotes/runtime/src/bun/route-discovery.ts +419 -0
  451. package/platforms/electrobun/remotes/runtime/src/bun/runtime-manager.ts +423 -0
  452. package/platforms/electrobun/remotes/runtime/src/bun/sse-parser.ts +99 -0
  453. package/platforms/electrobun/remotes/runtime/src/bun/stream-manager.ts +887 -0
  454. package/platforms/electrobun/remotes/runtime/src/bun/worker.ts +1231 -0
  455. package/platforms/electrobun/remotes/runtime/src/dev/phase1-smoke.ts +34 -0
  456. package/platforms/electrobun/remotes/runtime/src/dev/phase2-smoke.ts +91 -0
  457. package/platforms/electrobun/remotes/runtime/src/dev/phase3-smoke.ts +137 -0
  458. package/platforms/electrobun/remotes/runtime/src/web/index.css +187 -0
  459. package/platforms/electrobun/remotes/runtime/src/web/index.html +76 -0
  460. package/platforms/electrobun/remotes/runtime/src/web/index.ts +192 -0
  461. package/platforms/electrobun/remotes/surface/README.md +201 -0
  462. package/platforms/electrobun/remotes/surface/electrobun.config.ts +38 -0
  463. package/platforms/electrobun/remotes/surface/package.json +12 -0
  464. package/platforms/electrobun/remotes/surface/plugin.json +28 -0
  465. package/platforms/electrobun/remotes/surface/src/bun/worker.ts +132 -0
  466. package/platforms/electrobun/remotes/surface/src/dev/phase4-smoke.ts +566 -0
  467. package/platforms/electrobun/remotes/surface/src/protocol/event-types.ts +84 -0
  468. package/platforms/electrobun/remotes/surface/src/protocol/runtime-client.ts +673 -0
  469. package/platforms/electrobun/remotes/surface/src/web/app.ts +595 -0
  470. package/platforms/electrobun/remotes/surface/src/web/index.css +460 -0
  471. package/platforms/electrobun/remotes/surface/src/web/index.html +466 -0
  472. package/platforms/electrobun/remotes/surface/src/web/index.ts +5 -0
  473. package/platforms/electrobun/remotes/surface/src/web/render.ts +455 -0
  474. package/platforms/electrobun/remotes/surface/src/web/state.ts +427 -0
  475. package/platforms/electrobun/scripts/build-macos-effects.sh +4 -0
  476. package/platforms/electrobun/scripts/ensure-build-folder.ts +28 -0
  477. package/platforms/electrobun/scripts/local-adhoc-sign-macos.ts +159 -159
  478. package/platforms/electrobun/scripts/postwrap-diagnostics.ts +424 -339
  479. package/platforms/electrobun/scripts/postwrap-sign-runtime-macos.ts +302 -271
  480. package/platforms/electrobun/scripts/smoke-test-windows.ps1 +17 -16
  481. package/platforms/electrobun/scripts/smoke-test.sh +5 -7
  482. package/platforms/electrobun/scripts/sync-web-assets.mjs +13 -13
  483. package/platforms/electrobun/scripts/verify-rpc-handlers.ts +109 -110
  484. package/platforms/electrobun/scripts/verify-windows-installer-proof.ps1 +3 -8
  485. package/platforms/electrobun/src/__stubs__/bun-ffi.ts +31 -31
  486. package/platforms/electrobun/src/__stubs__/electrobun-bun.ts +1 -1
  487. package/platforms/electrobun/src/agent-ready-state.ts +8 -8
  488. package/platforms/electrobun/src/agent-reset-from-main.test.ts +162 -0
  489. package/platforms/electrobun/src/agent-reset-from-main.ts +62 -62
  490. package/platforms/electrobun/src/agent-status-rpc.test.ts +95 -0
  491. package/platforms/electrobun/src/agent-status-rpc.ts +156 -0
  492. package/platforms/electrobun/src/api-base.test.ts +247 -0
  493. package/platforms/electrobun/src/api-base.ts +202 -93
  494. package/platforms/electrobun/src/application-menu-action-registry.ts +9 -9
  495. package/platforms/electrobun/src/application-menu.ts +341 -348
  496. package/platforms/electrobun/src/background-notice.ts +36 -36
  497. package/platforms/electrobun/src/boot-progress.test.ts +188 -0
  498. package/platforms/electrobun/src/boot-progress.ts +111 -0
  499. package/platforms/electrobun/src/brand-config.test.ts +39 -0
  500. package/platforms/electrobun/src/brand-config.ts +141 -129
  501. package/platforms/electrobun/src/bridge/browser-tabs-renderer-registry.ts +28 -28
  502. package/platforms/electrobun/src/bridge/electrobun-boot-config.ts +42 -0
  503. package/platforms/electrobun/src/bridge/electrobun-crypto-ready.ts +120 -0
  504. package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +342 -357
  505. package/platforms/electrobun/src/bridge/electrobun-stub.ts +13 -13
  506. package/platforms/electrobun/src/browser-workspace-bridge-server.ts +285 -243
  507. package/platforms/electrobun/src/cloud-auth-window.ts +136 -136
  508. package/platforms/electrobun/src/cloud-disconnect-from-main.ts +90 -90
  509. package/platforms/electrobun/src/config-and-auth-rpc.test.ts +256 -0
  510. package/platforms/electrobun/src/config-and-auth-rpc.ts +302 -0
  511. package/platforms/electrobun/src/conversations-and-character-rpc.test.ts +185 -0
  512. package/platforms/electrobun/src/conversations-and-character-rpc.ts +131 -0
  513. package/platforms/electrobun/src/dashboard-rpc.test.ts +200 -0
  514. package/platforms/electrobun/src/dashboard-rpc.ts +344 -0
  515. package/platforms/electrobun/src/database/database-lock.ts +141 -0
  516. package/platforms/electrobun/src/database/database-mode.ts +149 -0
  517. package/platforms/electrobun/src/database/database-recovery.ts +72 -0
  518. package/platforms/electrobun/src/database/database-snapshot.ts +190 -0
  519. package/platforms/electrobun/src/database/database.test.ts +196 -0
  520. package/platforms/electrobun/src/database/index.ts +5 -0
  521. package/platforms/electrobun/src/database/pglite-paths.ts +100 -0
  522. package/platforms/electrobun/src/desktop-deep-link-events.test.ts +30 -0
  523. package/platforms/electrobun/src/desktop-deep-link-events.ts +17 -0
  524. package/platforms/electrobun/src/desktop-http-request.test.ts +102 -73
  525. package/platforms/electrobun/src/desktop-http-request.ts +97 -85
  526. package/platforms/electrobun/src/desktop-pill-config.test.ts +27 -0
  527. package/platforms/electrobun/src/desktop-pill-config.ts +40 -0
  528. package/platforms/electrobun/src/desktop-test-bridge-server.ts +232 -204
  529. package/platforms/electrobun/src/desktop-tray-config.test.ts +87 -0
  530. package/platforms/electrobun/src/desktop-tray-config.ts +84 -0
  531. package/platforms/electrobun/src/devtools-layout.ts +41 -41
  532. package/platforms/electrobun/src/diagnostic-format.test.ts +71 -0
  533. package/platforms/electrobun/src/diagnostic-format.ts +75 -36
  534. package/platforms/electrobun/src/dynamic-view-rpc-schema.test.ts +37 -0
  535. package/platforms/electrobun/src/dynamic-views/README.md +44 -0
  536. package/platforms/electrobun/src/dynamic-views/demo/agent-run-trace.html +135 -0
  537. package/platforms/electrobun/src/dynamic-views/errors.ts +29 -0
  538. package/platforms/electrobun/src/dynamic-views/host.test.ts +353 -0
  539. package/platforms/electrobun/src/dynamic-views/host.ts +332 -0
  540. package/platforms/electrobun/src/dynamic-views/index.ts +57 -0
  541. package/platforms/electrobun/src/dynamic-views/kiosk-canvas.ts +89 -0
  542. package/platforms/electrobun/src/dynamic-views/registry.test.ts +139 -0
  543. package/platforms/electrobun/src/dynamic-views/registry.ts +196 -0
  544. package/platforms/electrobun/src/dynamic-views/session-manager.test.ts +355 -0
  545. package/platforms/electrobun/src/dynamic-views/session-manager.ts +348 -0
  546. package/platforms/electrobun/src/dynamic-views/types.ts +105 -0
  547. package/platforms/electrobun/src/electrobun-boot-config.test.ts +50 -0
  548. package/platforms/electrobun/src/electrobun-config.test.ts +62 -0
  549. package/platforms/electrobun/src/electrobun-crypto-ready.test.ts +65 -0
  550. package/platforms/electrobun/src/electrobun-window-options.ts +25 -0
  551. package/platforms/electrobun/src/extension-rpc.test.ts +88 -0
  552. package/platforms/electrobun/src/extension-rpc.ts +102 -0
  553. package/platforms/electrobun/src/fatal-shutdown.test.ts +12 -16
  554. package/platforms/electrobun/src/fatal-shutdown.ts +1 -1
  555. package/platforms/electrobun/src/first-party-remotes.test.ts +169 -0
  556. package/platforms/electrobun/src/first-party-remotes.ts +297 -0
  557. package/platforms/electrobun/src/first-run-rpc.test.ts +192 -0
  558. package/platforms/electrobun/src/first-run-rpc.ts +146 -0
  559. package/platforms/electrobun/src/floating-chat-window.ts +181 -181
  560. package/platforms/electrobun/src/inbox-rpc.test.ts +123 -0
  561. package/platforms/electrobun/src/inbox-rpc.ts +158 -0
  562. package/platforms/electrobun/src/index.ts +2608 -2098
  563. package/platforms/electrobun/src/kiosk-mode.ts +50 -0
  564. package/platforms/electrobun/src/launch/index.ts +4 -0
  565. package/platforms/electrobun/src/launch/launch-dynamic-view.ts +37 -0
  566. package/platforms/electrobun/src/launch/launch-orchestrator.test.ts +224 -0
  567. package/platforms/electrobun/src/launch/launch-orchestrator.ts +456 -0
  568. package/platforms/electrobun/src/launch/launch-store.test.ts +97 -0
  569. package/platforms/electrobun/src/launch/launch-store.ts +134 -0
  570. package/platforms/electrobun/src/launch/types.ts +103 -0
  571. package/platforms/electrobun/src/launch/views/launch-diagnostics.html +205 -0
  572. package/platforms/electrobun/src/lifecycle/agent-ready-publish.test.ts +50 -0
  573. package/platforms/electrobun/src/lifecycle/agent-ready-publish.ts +27 -0
  574. package/platforms/electrobun/src/lifecycle/api-base-owner.test.ts +83 -0
  575. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +63 -31
  576. package/platforms/electrobun/src/lifecycle/desktop-session-prime.ts +44 -44
  577. package/platforms/electrobun/src/logger.ts +14 -14
  578. package/platforms/electrobun/src/main-window-runtime.ts +83 -83
  579. package/platforms/electrobun/src/main-window-session.test.ts +109 -0
  580. package/platforms/electrobun/src/main-window-session.ts +87 -51
  581. package/platforms/electrobun/src/menu-reset-from-main.ts +158 -158
  582. package/platforms/electrobun/src/native/agent-env.test.ts +52 -0
  583. package/platforms/electrobun/src/native/agent-runtime-layout.test.ts +42 -0
  584. package/platforms/electrobun/src/native/agent-state-dir.test.ts +91 -0
  585. package/platforms/electrobun/src/native/agent.ts +2133 -1682
  586. package/platforms/electrobun/src/native/auth-bridge.test.ts +67 -0
  587. package/platforms/electrobun/src/native/auth-bridge.ts +464 -360
  588. package/platforms/electrobun/src/native/browser-workspace.ts +723 -471
  589. package/platforms/electrobun/src/native/camera.ts +50 -50
  590. package/platforms/electrobun/src/native/canvas.ts +444 -445
  591. package/platforms/electrobun/src/native/credentials.ts +678 -616
  592. package/platforms/electrobun/src/native/desktop-window.test.ts +416 -0
  593. package/platforms/electrobun/src/native/desktop.ts +2200 -2156
  594. package/platforms/electrobun/src/native/editor-bridge.ts +201 -201
  595. package/platforms/electrobun/src/native/file-watcher.ts +154 -154
  596. package/platforms/electrobun/src/native/gateway.ts +179 -180
  597. package/platforms/electrobun/src/native/gpu-window.ts +256 -256
  598. package/platforms/electrobun/src/native/index.ts +82 -74
  599. package/platforms/electrobun/src/native/location.test.ts +44 -0
  600. package/platforms/electrobun/src/native/location.ts +90 -80
  601. package/platforms/electrobun/src/native/loopback-port.ts +60 -60
  602. package/platforms/electrobun/src/native/mac-window-effects.ts +166 -104
  603. package/platforms/electrobun/src/native/music-player.ts +38 -38
  604. package/platforms/electrobun/src/native/permissions-shared.ts +249 -150
  605. package/platforms/electrobun/src/native/permissions.ts +301 -208
  606. package/platforms/electrobun/src/native/power-state.ts +129 -129
  607. package/platforms/electrobun/src/native/remote-plugin-host.test.ts +1394 -0
  608. package/platforms/electrobun/src/native/remote-plugin-host.ts +1541 -0
  609. package/platforms/electrobun/src/native/screencapture.ts +667 -573
  610. package/platforms/electrobun/src/native/steward.ts +207 -204
  611. package/platforms/electrobun/src/native/swabble.ts +68 -324
  612. package/platforms/electrobun/src/native/talkmode.ts +253 -422
  613. package/platforms/electrobun/src/native/webgpu-browser-support.test.ts +18 -0
  614. package/platforms/electrobun/src/native/webgpu-browser-support.ts +165 -147
  615. package/platforms/electrobun/src/native-onboarding.ts +270 -0
  616. package/platforms/electrobun/src/onboarding-overlay-window.ts +141 -0
  617. package/platforms/electrobun/src/persisted-deployment.ts +91 -0
  618. package/platforms/electrobun/src/pill-window.test.ts +91 -0
  619. package/platforms/electrobun/src/pill-window.ts +99 -0
  620. package/platforms/electrobun/src/preload-validation.ts +44 -44
  621. package/platforms/electrobun/src/preload.js +1 -1
  622. package/platforms/electrobun/src/print-electrobun-dev-settings-banner.ts +120 -120
  623. package/platforms/electrobun/src/renderer-api-proxy.test.ts +73 -0
  624. package/platforms/electrobun/src/renderer-api-proxy.ts +86 -0
  625. package/platforms/electrobun/src/renderer-static.test.ts +53 -0
  626. package/platforms/electrobun/src/renderer-static.ts +144 -57
  627. package/platforms/electrobun/src/rpc-handler-slices.ts +121 -0
  628. package/platforms/electrobun/src/rpc-handlers.test.ts +267 -0
  629. package/platforms/electrobun/src/rpc-handlers.ts +1306 -913
  630. package/platforms/electrobun/src/rpc-parse-utils.ts +57 -0
  631. package/platforms/electrobun/src/rpc-port-resolver.test.ts +45 -0
  632. package/platforms/electrobun/src/rpc-port-resolver.ts +31 -0
  633. package/platforms/electrobun/src/rpc-schema.ts +2556 -1619
  634. package/platforms/electrobun/src/runtime-layout.ts +105 -105
  635. package/platforms/electrobun/src/runtime-permissions.ts +95 -95
  636. package/platforms/electrobun/src/runtime-rpc.test.ts +126 -0
  637. package/platforms/electrobun/src/runtime-rpc.ts +237 -0
  638. package/platforms/electrobun/src/screenshot-dev-server.ts +87 -87
  639. package/platforms/electrobun/src/settings-mutations-rpc.test.ts +193 -0
  640. package/platforms/electrobun/src/settings-mutations-rpc.ts +220 -0
  641. package/platforms/electrobun/src/startup-trace.ts +274 -270
  642. package/platforms/electrobun/src/subscription-rpc.test.ts +89 -0
  643. package/platforms/electrobun/src/subscription-rpc.ts +192 -0
  644. package/platforms/electrobun/src/surface-windows.test.ts +355 -0
  645. package/platforms/electrobun/src/surface-windows.ts +410 -410
  646. package/platforms/electrobun/src/trace/README.md +73 -0
  647. package/platforms/electrobun/src/trace/errors.ts +21 -0
  648. package/platforms/electrobun/src/trace/index.ts +40 -0
  649. package/platforms/electrobun/src/trace/trace-dynamic-view.ts +40 -0
  650. package/platforms/electrobun/src/trace/trace-host-requests.ts +473 -0
  651. package/platforms/electrobun/src/trace/trace-service.test.ts +186 -0
  652. package/platforms/electrobun/src/trace/trace-service.ts +324 -0
  653. package/platforms/electrobun/src/trace/trace-store.test.ts +141 -0
  654. package/platforms/electrobun/src/trace/trace-store.ts +551 -0
  655. package/platforms/electrobun/src/trace/types.ts +250 -0
  656. package/platforms/electrobun/src/trace/views/agent-run-trace.html +311 -0
  657. package/platforms/electrobun/src/types/web-speech.d.ts +28 -28
  658. package/platforms/electrobun/src/types.ts +5 -5
  659. package/platforms/electrobun/src/update-availability.test.ts +72 -0
  660. package/platforms/electrobun/src/update-availability.ts +90 -0
  661. package/platforms/electrobun/src/update-rpc.test.ts +83 -0
  662. package/platforms/electrobun/src/update-rpc.ts +123 -0
  663. package/platforms/electrobun/src/voice/README.md +184 -0
  664. package/platforms/electrobun/src/voice/errors.ts +42 -0
  665. package/platforms/electrobun/src/voice/index.ts +78 -0
  666. package/platforms/electrobun/src/voice/types.ts +316 -0
  667. package/platforms/electrobun/src/voice/voice-host-requests.ts +259 -0
  668. package/platforms/electrobun/src/voice/voice-latency-budget.test.ts +66 -0
  669. package/platforms/electrobun/src/voice/voice-latency-budget.ts +243 -0
  670. package/platforms/electrobun/src/voice/voice-live-validation.test.ts +357 -0
  671. package/platforms/electrobun/src/voice/voice-live-validation.ts +838 -0
  672. package/platforms/electrobun/src/voice/voice-pipeline.ts +250 -0
  673. package/platforms/electrobun/src/voice/voice-playback-adapter.ts +31 -0
  674. package/platforms/electrobun/src/voice/voice-runtime-adapter.test.ts +213 -0
  675. package/platforms/electrobun/src/voice/voice-runtime-adapter.ts +687 -0
  676. package/platforms/electrobun/src/voice/voice-service.test.ts +587 -0
  677. package/platforms/electrobun/src/voice/voice-service.ts +1067 -0
  678. package/platforms/electrobun/src/voice/voice-stream-coordinator.test.ts +115 -0
  679. package/platforms/electrobun/src/voice/voice-stream-coordinator.ts +270 -0
  680. package/platforms/electrobun/src/voice/voice-trace.ts +97 -0
  681. package/platforms/electrobun/src/voice/voice-tts-chunker.test.ts +91 -0
  682. package/platforms/electrobun/src/voice/voice-tts-chunker.ts +194 -0
  683. package/platforms/electrobun/src/windows-cef-profile.ts +88 -88
  684. package/platforms/electrobun/tsconfig.json +88 -12
  685. package/platforms/electrobun/update-channels.json +22 -0
  686. package/platforms/electrobun/vitest.electrobun.config.ts +72 -42
  687. package/platforms/ios/App/App/App.entitlements +4 -0
  688. package/platforms/ios/App/App/AppDelegate.swift +80 -18
  689. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ios-marketing-1024.png +0 -0
  690. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@1x.png +0 -0
  691. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@2x.png +0 -0
  692. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@1x.png +0 -0
  693. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@2x.png +0 -0
  694. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@1x.png +0 -0
  695. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@2x.png +0 -0
  696. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@1x.png +0 -0
  697. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@2x.png +0 -0
  698. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-83_5x83_5@2x.png +0 -0
  699. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@2x.png +0 -0
  700. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@3x.png +0 -0
  701. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@2x.png +0 -0
  702. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@3x.png +0 -0
  703. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@2x.png +0 -0
  704. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@3x.png +0 -0
  705. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@2x.png +0 -0
  706. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@3x.png +0 -0
  707. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +4 -9
  708. package/platforms/ios/App/App/ComputerUseBridge.swift +589 -0
  709. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements +12 -0
  710. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift +34 -0
  711. package/platforms/ios/App/App/DeviceActivityMonitorExtension/Info.plist +29 -0
  712. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.entitlements +12 -0
  713. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.swift +53 -0
  714. package/platforms/ios/App/App/DeviceActivityReportExtension/Info.plist +27 -0
  715. package/platforms/ios/App/App/ElizaAppIntents.swift +183 -0
  716. package/platforms/ios/App/App/ElizaIntentPlugin.swift +342 -5
  717. package/platforms/ios/App/App/Info.plist +17 -1
  718. package/platforms/ios/App/App/runners/eliza-tasks.js +177 -0
  719. package/platforms/ios/App/App.xcodeproj/project.pbxproj +262 -6
  720. package/platforms/ios/App/BroadcastExtension/SampleHandler.swift +100 -0
  721. package/platforms/ios/App/Podfile +5 -0
  722. package/platforms/ios/App/Podfile.lock +83 -59
  723. package/register-runtime-hooks.js +11 -5
  724. package/registry/index.d.ts +1 -5
  725. package/registry/index.d.ts.map +1 -1
  726. package/registry/index.js +10 -68
  727. package/runtime/android-avf-microdroid-bridge.d.ts +29 -0
  728. package/runtime/android-avf-microdroid-bridge.d.ts.map +1 -0
  729. package/runtime/android-avf-microdroid-bridge.js +149 -0
  730. package/runtime/api-dev-settings-banner.d.ts.map +1 -1
  731. package/runtime/api-dev-settings-banner.js +5 -13
  732. package/runtime/app-core-runtime-hooks.d.ts +21 -0
  733. package/runtime/app-core-runtime-hooks.d.ts.map +1 -0
  734. package/runtime/app-core-runtime-hooks.js +10 -0
  735. package/runtime/autonomy-policy.d.ts +2 -0
  736. package/runtime/autonomy-policy.d.ts.map +1 -0
  737. package/runtime/autonomy-policy.js +4 -0
  738. package/runtime/bundled-fused-lib.d.ts +36 -0
  739. package/runtime/bundled-fused-lib.d.ts.map +1 -0
  740. package/runtime/bundled-fused-lib.js +77 -0
  741. package/runtime/channel-plugin-map.d.ts +1 -5
  742. package/runtime/channel-plugin-map.d.ts.map +1 -1
  743. package/runtime/channel-plugin-map.js +11 -31
  744. package/runtime/desktop/AppWindowRenderer.d.ts +17 -0
  745. package/runtime/desktop/AppWindowRenderer.d.ts.map +1 -0
  746. package/runtime/desktop/AppWindowRenderer.js +360 -0
  747. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts +2 -0
  748. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts.map +1 -0
  749. package/runtime/desktop/DesktopSurfaceNavigationRuntime.js +41 -0
  750. package/runtime/desktop/DesktopTrayRuntime.d.ts +2 -0
  751. package/runtime/desktop/DesktopTrayRuntime.d.ts.map +1 -0
  752. package/runtime/desktop/DesktopTrayRuntime.js +174 -0
  753. package/runtime/desktop/DetachedShellRoot.d.ts +10 -0
  754. package/runtime/desktop/DetachedShellRoot.d.ts.map +1 -0
  755. package/runtime/desktop/DetachedShellRoot.js +111 -0
  756. package/runtime/desktop/index.d.ts +6 -0
  757. package/runtime/desktop/index.d.ts.map +1 -0
  758. package/runtime/desktop/index.js +5 -0
  759. package/runtime/desktop/tray-menu.d.ts +20 -0
  760. package/runtime/desktop/tray-menu.d.ts.map +1 -0
  761. package/runtime/desktop/tray-menu.js +143 -0
  762. package/runtime/dev-server.d.ts +1 -1
  763. package/runtime/dev-server.d.ts.map +1 -1
  764. package/runtime/dev-server.js +104 -19
  765. package/runtime/eliza.d.ts +75 -1
  766. package/runtime/eliza.d.ts.map +1 -1
  767. package/runtime/eliza.js +606 -122
  768. package/runtime/ensure-text-to-speech-handler.d.ts.map +1 -1
  769. package/runtime/ensure-text-to-speech-handler.js +10 -3
  770. package/runtime/mobile-safe-runtime.d.ts +181 -2
  771. package/runtime/mobile-safe-runtime.d.ts.map +1 -1
  772. package/runtime/mobile-safe-runtime.js +1019 -12
  773. package/runtime/mode/remote-forwarder.d.ts.map +1 -1
  774. package/runtime/mode/remote-forwarder.js +2 -2
  775. package/runtime/mode/route-mode-guard.d.ts +2 -3
  776. package/runtime/mode/route-mode-guard.d.ts.map +1 -1
  777. package/runtime/mode/route-mode-guard.js +4 -5
  778. package/runtime/mode/route-mode-matrix.d.ts +1 -1
  779. package/runtime/mode/route-mode-matrix.d.ts.map +1 -1
  780. package/runtime/mode/route-mode-matrix.js +14 -1
  781. package/runtime/mode/runtime-mode.d.ts +1 -1
  782. package/runtime/mode/runtime-mode.js +1 -1
  783. package/runtime/runtime-bootstrap-policy.d.ts.map +1 -1
  784. package/runtime/runtime-bootstrap-policy.js +14 -2
  785. package/runtime/telegram-standalone-handler.d.ts.map +1 -1
  786. package/runtime/telegram-standalone-handler.js +10 -9
  787. package/runtime/tts-cache-wiring.d.ts +29 -0
  788. package/runtime/tts-cache-wiring.d.ts.map +1 -0
  789. package/runtime/tts-cache-wiring.js +114 -0
  790. package/runtime/voice-warmup.d.ts +66 -0
  791. package/runtime/voice-warmup.d.ts.map +1 -0
  792. package/runtime/voice-warmup.js +101 -0
  793. package/scripts/android-sms-gateway-template.test.mjs +1014 -0
  794. package/scripts/aosp/README.md +29 -16
  795. package/scripts/aosp/compile-libllama-zig-pin.test.mjs +147 -0
  796. package/scripts/aosp/compile-libllama.mjs +1750 -267
  797. package/scripts/aosp/compile-libllama.test.mjs +133 -0
  798. package/scripts/aosp/compile-shim.mjs +68 -19
  799. package/scripts/aosp/deploy-pixel.mjs +405 -0
  800. package/scripts/aosp/lib/load-variant-config.mjs +3 -3
  801. package/scripts/aosp/llama-cpp-patches/README.md +8 -8
  802. package/scripts/aosp/llama-cpp-patches/apply-patches.mjs +23 -6
  803. package/scripts/aosp/llama-cpp-patches/polarquant/README.md +37 -0
  804. package/scripts/aosp/llama-cpp-patches/qjl/README.md +37 -0
  805. package/scripts/aosp/seccomp-shim/sigsys-handler-arm64.c +169 -0
  806. package/scripts/aosp/seccomp-shim/sigsys-handler-riscv64.c +217 -0
  807. package/scripts/aosp/smoke-cuttlefish.mjs +34 -4
  808. package/scripts/aosp/stage-default-models.mjs +59 -35
  809. package/scripts/aosp/stage-default-models.test.mjs +23 -0
  810. package/scripts/aosp/variant-config-schema.ts +2 -2
  811. package/scripts/assert-required-bundled-packages.test.ts +555 -0
  812. package/scripts/audit-apple-store-sandbox.mjs +146 -0
  813. package/scripts/audit-live-test-surface.mjs +5 -2
  814. package/scripts/build-capacitor-app.mjs +21 -0
  815. package/scripts/build-flatpak.mjs +5 -5
  816. package/scripts/build-helpers/arm64-simd.mjs +72 -0
  817. package/scripts/build-helpers/omnivoice-merged.mjs +87 -0
  818. package/scripts/build-helpers/verify-fused-symbols.mjs +600 -0
  819. package/scripts/build-helpers/verify-fused-symbols.test.mjs +0 -0
  820. package/scripts/build-image.sh +1 -1
  821. package/scripts/build-llama-cpp-mtp.mjs +488 -0
  822. package/scripts/build-native-plugins.mjs +230 -18
  823. package/scripts/build-patched-electrobun-cli.mjs +68 -10
  824. package/scripts/build-win.mjs +1 -1
  825. package/scripts/bun-riscv64/Dockerfile +418 -0
  826. package/scripts/bun-riscv64/README.md +316 -0
  827. package/scripts/bun-riscv64/build.sh +469 -0
  828. package/scripts/bun-riscv64/bun-patches/0001-config-add-riscv64-arch.patch +74 -0
  829. package/scripts/bun-riscv64/bun-patches/0002-flags-add-riscv64-march-mabi.patch +16 -0
  830. package/scripts/bun-riscv64/bun-patches/0003-zig-add-riscv64-target-triple-and-cpu.patch +26 -0
  831. package/scripts/bun-riscv64/bun-patches/0004-webkit-force-local-mode-on-riscv64.patch +33 -0
  832. package/scripts/bun-riscv64/bun-patches/0005-tinycc-disable-on-riscv64.patch +16 -0
  833. package/scripts/bun-riscv64/bun-patches/0006-build-add-riscv64-cli-validation.patch +15 -0
  834. package/scripts/bun-riscv64/bun-patches/0007-deps-per-dep-riscv64-checks.patch +24 -0
  835. package/scripts/bun-riscv64/bun-patches/0008-source-stabilize-riscv64-musl-build.patch +226 -0
  836. package/scripts/bun-riscv64/bun-patches/0009-disable-wasm-streaming-hooks-for-c-loop.patch +162 -0
  837. package/scripts/bun-riscv64/bun-patches/0010-disable-inspector-profiler-for-riscv64-c-loop.patch +80 -0
  838. package/scripts/bun-riscv64/bun-patches/0011-process-arch-add-riscv64.patch +23 -0
  839. package/scripts/bun-riscv64/bun-patches/0012-cpu-features-add-riscv64-fallback.patch +13 -0
  840. package/scripts/bun-riscv64/bun-patches/0013-disable-console-inspector-hooks-for-riscv64-c-loop.patch +43 -0
  841. package/scripts/bun-riscv64/bun-patches/0014-disable-custom-inspector-dispatchers-on-riscv64.patch +127 -0
  842. package/scripts/bun-riscv64/bun-patches/0015-disable-jsc-profiler-builtins-on-riscv64.patch +75 -0
  843. package/scripts/bun-riscv64/bun-patches/0016-node-vm-disable-jit-cached-data-on-riscv64-c-loop.patch +96 -0
  844. package/scripts/bun-riscv64/bun-patches/0017-disable-performance-domjit-signature-on-riscv64-c-loop.patch +34 -0
  845. package/scripts/bun-riscv64/bun-patches/0018-fix-serialized-script-identifier-big-endian-path.patch +19 -0
  846. package/scripts/bun-riscv64/bun-patches/0019-add-wtf-timer-fire-bridge-for-c-loop.patch +24 -0
  847. package/scripts/bun-riscv64/bun-patches/0020-run-riscv64-smoke-test-under-qemu.patch +13 -0
  848. package/scripts/bun-riscv64/bun-patches/0021-fix-riscv64-linux-open-flags.patch +25 -0
  849. package/scripts/bun-riscv64/bun-patches/0022-zlib-riscv64-generic-kernels.patch +25 -0
  850. package/scripts/bun-riscv64/bun-patches/README.md +127 -0
  851. package/scripts/bun-riscv64/bun-version.json +202 -0
  852. package/scripts/bun-riscv64/run-build.sh +162 -0
  853. package/scripts/bun-riscv64/rust-core/0001-riscv64-rust-core-port.patch +868 -0
  854. package/scripts/bun-riscv64/rust-core/0002-second-wave-riscv64-source-gaps.patch +130 -0
  855. package/scripts/bun-riscv64/rust-core/0003-third-wave-riscv64-crash-handler-gaps.patch +78 -0
  856. package/scripts/bun-riscv64/rust-core/0004-rust-target-cpu-riscv64.patch +39 -0
  857. package/scripts/bun-riscv64/rust-core/0005-fifth-wave-riscv64-source-gaps.patch +96 -0
  858. package/scripts/bun-riscv64/rust-core/0006-cpp-wasm-and-inspector-guards-riscv64.patch +91 -0
  859. package/scripts/bun-riscv64/rust-core/0007-bun-alloc-max-align-t-riscv64.patch +36 -0
  860. package/scripts/bun-riscv64/rust-core/0008-workspace-lints-warn-not-deny-riscv64.patch +75 -0
  861. package/scripts/bun-riscv64/rust-core/0009-zigglobalobject-wasm-streaming-guards-riscv64.patch +109 -0
  862. package/scripts/bun-riscv64/rust-core/0010-tcc-externs-stub-on-riscv64.patch +62 -0
  863. package/scripts/bun-riscv64/rust-core/0011-clippy-ptr-cast-lints-warn-riscv64.patch +61 -0
  864. package/scripts/bun-riscv64/rust-core/README.md +80 -0
  865. package/scripts/bun-riscv64/rust-core/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  866. package/scripts/bun-riscv64/rust-core/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  867. package/scripts/bun-riscv64/rust-core/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  868. package/scripts/bun-riscv64/rust-core/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  869. package/scripts/bun-riscv64/rust-core/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +31 -0
  870. package/scripts/bun-riscv64/validate.sh +264 -0
  871. package/scripts/bun-riscv64/webkit-patches/0001-cherry-pick-llint-riscv64.recipe +155 -0
  872. package/scripts/bun-riscv64/webkit-patches/0002-cherry-pick-baseline-jit-riscv64.recipe +40 -0
  873. package/scripts/bun-riscv64/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  874. package/scripts/bun-riscv64/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  875. package/scripts/bun-riscv64/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  876. package/scripts/bun-riscv64/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  877. package/scripts/bun-riscv64/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +72 -0
  878. package/scripts/bun-riscv64/webkit-patches/README.md +146 -0
  879. package/scripts/check-homepage-public-readiness.mjs +353 -0
  880. package/scripts/check-homepage-release-data.mjs +110 -0
  881. package/scripts/check-i18n.mjs +1 -1
  882. package/scripts/check-real-local-chat.ts +147 -0
  883. package/scripts/check-real-local-provisioning.ts +104 -0
  884. package/scripts/check-real-local-reset.ts +249 -0
  885. package/scripts/check-sms-gateway-completion-audit.mjs +428 -0
  886. package/scripts/check-sms-gateway-readiness.mjs +266 -0
  887. package/scripts/clean-repo.mjs +5 -5
  888. package/scripts/codesign-mas.mjs +222 -16
  889. package/scripts/collect-docker-runtime-deps.mjs +229 -0
  890. package/scripts/continue-sms-gateway-work.mjs +121 -0
  891. package/scripts/copy-runtime-node-modules.ts +1050 -195
  892. package/scripts/deploy-cloud-api-production-gateway.mjs +52 -0
  893. package/scripts/desktop-build.mjs +965 -98
  894. package/scripts/dev-platform.mjs +346 -102
  895. package/scripts/dev-startup-smoke.mjs +248 -0
  896. package/scripts/dev-ui.mjs +418 -176
  897. package/scripts/disable-local-eliza-workspace.mjs +35 -0
  898. package/scripts/docker-ci-smoke.sh +465 -96
  899. package/scripts/docker-entrypoint.sh +62 -1
  900. package/scripts/docker-entrypoint.test.ts +283 -0
  901. package/scripts/ensure-avatars.mjs +2 -2
  902. package/scripts/ensure-electrobun-core.mjs +1 -1
  903. package/scripts/ensure-generated-core-proto-js.mjs +1 -1
  904. package/scripts/ensure-type-package-aliases.mjs +62 -5
  905. package/scripts/ensure-vision-deps.mjs +20 -1
  906. package/scripts/entry.ts +1 -1
  907. package/scripts/ffi-stub/Makefile +64 -0
  908. package/scripts/ffi-stub/README.md +391 -0
  909. package/scripts/ffi-stub/asr-ffi-smoke.ts +139 -0
  910. package/scripts/ffi-stub/ffi-stub.c +539 -0
  911. package/scripts/ffi-stub/ffi.h +538 -0
  912. package/scripts/ffi-stub/libelizainference_stub.so +0 -0
  913. package/scripts/ffi-stub/tts-stream-ffi-smoke.ts +349 -0
  914. package/scripts/generate-first-run-voicelines.mjs +194 -0
  915. package/scripts/generate-plugin-index.js +4 -3
  916. package/scripts/generate-static-asset-manifest.mjs +1 -1
  917. package/scripts/i18n-dynamic-keys.json +5 -5
  918. package/scripts/init-submodules.mjs +2 -2
  919. package/scripts/install-android-sms-gateway.md +177 -0
  920. package/scripts/install-android-sms-gateway.mjs +1088 -0
  921. package/scripts/ios-xcframework/README.md +74 -72
  922. package/scripts/ios-xcframework/build-xcframework.mjs +204 -43
  923. package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1943 -0
  924. package/scripts/ios-xcframework/runtime-symbol-shim.c +450 -0
  925. package/scripts/kernel-patches/cpu-polar-kernels.mjs +441 -0
  926. package/scripts/kernel-patches/cpu-simd-kernels.mjs +253 -0
  927. package/scripts/kernel-patches/cpu-thread-parallelism.mjs +368 -0
  928. package/scripts/kernel-patches/cuda-kernels.mjs +117 -0
  929. package/scripts/kernel-patches/metal-kernels.mjs +1698 -109
  930. package/scripts/kernel-patches/server-omnivoice-route.mjs +718 -0
  931. package/scripts/kernel-patches/server-structured-output.mjs +279 -0
  932. package/scripts/kernel-patches/vulkan-dispatch-log.mjs +166 -0
  933. package/scripts/kernel-patches/vulkan-dispatch-log.test.mjs +50 -0
  934. package/scripts/kernel-patches/vulkan-dispatch-patches/01-vulkan-shaders-gen.patch +30 -16
  935. package/scripts/kernel-patches/vulkan-dispatch-patches/02-ggml-vulkan-pipelines.patch +75 -30
  936. package/scripts/kernel-patches/vulkan-kernels.mjs +800 -49
  937. package/scripts/lib/agent-source-watcher.mjs +173 -0
  938. package/scripts/lib/agent-source-watcher.test.mjs +184 -0
  939. package/scripts/lib/api-supervisor.mjs +78 -9
  940. package/scripts/lib/api-supervisor.test.mjs +121 -0
  941. package/scripts/lib/app-dir.mjs +2 -16
  942. package/scripts/lib/apple-entitlement-audit.mjs +655 -0
  943. package/scripts/lib/apple-entitlement-audit.test.mjs +144 -0
  944. package/scripts/lib/artifact-staleness.d.mts +33 -0
  945. package/scripts/lib/artifact-staleness.mjs +122 -0
  946. package/scripts/lib/artifact-staleness.test.mts +98 -0
  947. package/scripts/lib/bun-version-guard.mjs +13 -13
  948. package/scripts/lib/capacitor-plugin-build-needed.mjs +4 -3
  949. package/scripts/lib/capacitor-plugin-names.mjs +30 -14
  950. package/scripts/lib/desktop-preflight.mjs +9 -5
  951. package/scripts/lib/desktop-startup-embedding-warmup-policy.mjs +51 -0
  952. package/scripts/lib/desktop-startup-embedding-warmup-policy.test.mjs +55 -0
  953. package/scripts/lib/duet-bridge.d.mts +63 -0
  954. package/scripts/lib/duet-bridge.mjs +193 -0
  955. package/scripts/lib/ios-plist-url-scheme.mjs +80 -0
  956. package/scripts/lib/mobile-build-decisions.mjs +97 -0
  957. package/scripts/lib/node-path-env.mjs +4 -2
  958. package/scripts/lib/orchestrator-desktop-dev-banner.mjs +12 -3
  959. package/scripts/lib/patch-bun-exports.mjs +90 -27
  960. package/scripts/lib/patch-bun-exports.test.mjs +79 -0
  961. package/scripts/lib/renderer-build-action.mjs +35 -0
  962. package/scripts/lib/renderer-build-action.test.mjs +70 -0
  963. package/scripts/lib/renderer-build-manifest.d.mts +65 -0
  964. package/scripts/lib/renderer-build-manifest.mjs +257 -0
  965. package/scripts/lib/renderer-build-manifest.test.mts +277 -0
  966. package/scripts/lib/stage-android-agent.mjs +757 -99
  967. package/scripts/lib/sync-eliza-env-aliases.mjs +3 -25
  968. package/scripts/lib/ui-smoke-stub-decision.mjs +33 -0
  969. package/scripts/lib/ui-smoke-stub-decision.test.mjs +46 -0
  970. package/scripts/lib/verify-ondevice-artifact.d.mts +16 -0
  971. package/scripts/lib/verify-ondevice-artifact.mjs +61 -0
  972. package/scripts/lib/verify-ondevice-artifact.test.mts +98 -0
  973. package/scripts/lib/vite-renderer-dist-stale.mjs +5 -0
  974. package/scripts/lib/voice-latency-report.mjs +154 -0
  975. package/scripts/lib/websocket-pending-queue.ts +92 -0
  976. package/scripts/lifeops-prompt-benchmark.ts +21 -12
  977. package/scripts/link-docker-local-app-packages.mjs +109 -36
  978. package/scripts/local-stt-bench.ts +192 -0
  979. package/scripts/maintain-cloud-api-production-gateway.mjs +54 -0
  980. package/scripts/mas-smoke.mjs +459 -0
  981. package/scripts/mas-smoke.test.mjs +220 -0
  982. package/scripts/mobile-auth-simulator-smoke.mjs +0 -1
  983. package/scripts/normalize-eliza-capture.ts +97 -0
  984. package/scripts/omnivoice-fuse/prepare.mjs +2543 -23
  985. package/scripts/pack-upstreams.mjs +65 -5
  986. package/scripts/package-electrobun-linux.mjs +303 -0
  987. package/scripts/patch-deps.mjs +5 -3
  988. package/scripts/patches/llama-asr-word-timestamps.patch +218 -0
  989. package/scripts/playwright-ui-live-stack.ts +588 -157
  990. package/scripts/playwright-ui-smoke-api-stub.mjs +3495 -111
  991. package/scripts/pre-review-local.mjs +2 -2
  992. package/scripts/prepare-ios-cocoapods.sh +41 -3
  993. package/scripts/release-check.ts +180 -84
  994. package/scripts/relink-workspace-packages-to-dist.mjs +21 -4
  995. package/scripts/rt.mjs +16 -1
  996. package/scripts/run-biome-check.mjs +1 -1
  997. package/scripts/run-coding-agent-e2e.mjs +3 -3
  998. package/scripts/run-eliza-app-core-script.mjs +34 -0
  999. package/scripts/run-local-plugin-live-smoke.mjs +66 -2
  1000. package/scripts/run-mobile-build-android-app-actions.test.mjs +426 -0
  1001. package/scripts/run-mobile-build-brand-separation.test.mts +33 -0
  1002. package/scripts/run-mobile-build-ios-engine-gate.test.mjs +85 -0
  1003. package/scripts/run-mobile-build-mtp-staleness.test.mts +198 -0
  1004. package/scripts/run-mobile-build.mjs +5082 -610
  1005. package/scripts/run-node-runtime.mjs +184 -7
  1006. package/scripts/run-node-runtime.test.mjs +167 -0
  1007. package/scripts/run-node-tsx.mjs +80 -33
  1008. package/scripts/run-node.mjs +41 -1
  1009. package/scripts/run-production-build.mjs +34 -27
  1010. package/scripts/run-release-check.mjs +19 -0
  1011. package/scripts/run-release-contract-suite.mjs +107 -14
  1012. package/scripts/run-ui-smoke-playwright-suite.mjs +0 -2
  1013. package/scripts/runtime-package-manifest.ts +21 -3
  1014. package/scripts/serve-real-local-agent.ts +72 -0
  1015. package/scripts/setup-upstreams.mjs +42 -1
  1016. package/scripts/sms-gateway-status.mjs +194 -0
  1017. package/scripts/stage-android-agent.test.mjs +97 -0
  1018. package/scripts/stage-desktop-fused-lib.mjs +453 -0
  1019. package/scripts/stage-elizavoice-lib.mjs +363 -0
  1020. package/scripts/startup-integration-script-drift.test.ts +82 -4
  1021. package/scripts/streaming-pipeline-bench.ts +543 -0
  1022. package/scripts/sync-homepage-porkbun-dns.mjs +262 -0
  1023. package/scripts/test-sms-gateway-software.mjs +100 -0
  1024. package/scripts/type-audit.mjs +1 -1
  1025. package/scripts/validate-bluebubbles-outbound.mjs +293 -0
  1026. package/scripts/validate-cdn-assets.mjs +15 -7
  1027. package/scripts/validate-regression-matrix.mjs +109 -8
  1028. package/scripts/verify-android-sms-gateway-e2e.mjs +362 -0
  1029. package/scripts/verify-bluebubbles-gateway-e2e.mjs +191 -0
  1030. package/scripts/verify-bluebubbles-inbound-readiness.mjs +88 -0
  1031. package/scripts/verify-cloud-api-production-deploy.mjs +87 -0
  1032. package/scripts/verify-cloud-sms-onboarding-flow.mjs +336 -0
  1033. package/scripts/verify-ondevice-artifact.mjs +111 -0
  1034. package/scripts/voice/freeze-voice.mjs +521 -0
  1035. package/scripts/voice-attribution-smoke.ts +644 -0
  1036. package/scripts/voice-create-profile.mjs +379 -0
  1037. package/scripts/voice-duet.mjs +1355 -0
  1038. package/scripts/voice-e2e-hardware.ts +877 -0
  1039. package/scripts/voice-interactive.mjs +1721 -0
  1040. package/scripts/voice-latency-report.mjs +96 -0
  1041. package/scripts/voice-latency-report.test.ts +176 -0
  1042. package/scripts/voice-preset/build-default-voice-preset.mjs +249 -0
  1043. package/scripts/voice-preset/build-onboarding-voice.mjs +281 -0
  1044. package/scripts/watch-sms-gateway-readiness.mjs +303 -0
  1045. package/scripts/write-homepage-release-data.mjs +458 -26
  1046. package/security/agent-vault-id.d.ts +2 -2
  1047. package/security/agent-vault-id.js +1 -1
  1048. package/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -1
  1049. package/security/hydrate-wallet-keys-from-platform-store.js +23 -14
  1050. package/security/platform-secure-store-node.d.ts +3 -3
  1051. package/security/platform-secure-store-node.js +3 -3
  1052. package/security/wallet-os-store-actions.d.ts +0 -9
  1053. package/security/wallet-os-store-actions.d.ts.map +1 -1
  1054. package/security/wallet-os-store-actions.js +3 -10
  1055. package/services/account-pool.d.ts +23 -14
  1056. package/services/account-pool.d.ts.map +1 -1
  1057. package/services/account-pool.js +86 -24
  1058. package/services/account-usage.d.ts.map +1 -1
  1059. package/services/account-usage.js +2 -5
  1060. package/services/ambient-audio/consent.d.ts +9 -0
  1061. package/services/ambient-audio/consent.d.ts.map +1 -0
  1062. package/services/ambient-audio/consent.js +28 -0
  1063. package/services/ambient-audio/index.d.ts +7 -0
  1064. package/services/ambient-audio/index.d.ts.map +1 -0
  1065. package/services/ambient-audio/index.js +4 -0
  1066. package/services/ambient-audio/replay-buffer.d.ts +14 -0
  1067. package/services/ambient-audio/replay-buffer.d.ts.map +1 -0
  1068. package/services/ambient-audio/replay-buffer.js +66 -0
  1069. package/services/ambient-audio/response-gate.d.ts +3 -0
  1070. package/services/ambient-audio/response-gate.d.ts.map +1 -0
  1071. package/services/ambient-audio/response-gate.js +33 -0
  1072. package/services/ambient-audio/service.d.ts +22 -0
  1073. package/services/ambient-audio/service.d.ts.map +1 -0
  1074. package/services/ambient-audio/service.js +47 -0
  1075. package/services/ambient-audio/types.d.ts +42 -0
  1076. package/services/ambient-audio/types.d.ts.map +1 -0
  1077. package/services/app-updates/update-policy.d.ts +64 -0
  1078. package/services/app-updates/update-policy.d.ts.map +1 -0
  1079. package/services/app-updates/update-policy.js +228 -0
  1080. package/services/auth-store.d.ts +37 -1
  1081. package/services/auth-store.d.ts.map +1 -1
  1082. package/services/auth-store.js +59 -26
  1083. package/services/cloud-jwks-store.d.ts +3 -3
  1084. package/services/cloud-jwks-store.d.ts.map +1 -1
  1085. package/services/cloud-jwks-store.js +5 -8
  1086. package/services/coding-account-bridge.d.ts +71 -0
  1087. package/services/coding-account-bridge.d.ts.map +1 -0
  1088. package/services/coding-account-bridge.js +267 -0
  1089. package/services/connector-target-catalog.d.ts +11 -4
  1090. package/services/connector-target-catalog.d.ts.map +1 -1
  1091. package/services/connector-target-catalog.js +7 -4
  1092. package/services/credential-tunnel-service.d.ts +66 -0
  1093. package/services/credential-tunnel-service.d.ts.map +1 -0
  1094. package/services/credential-tunnel-service.js +227 -0
  1095. package/services/github-credentials.d.ts +1 -1
  1096. package/services/github-credentials.js +1 -1
  1097. package/services/inference-abort.d.ts +47 -0
  1098. package/services/inference-abort.d.ts.map +1 -0
  1099. package/services/inference-abort.js +76 -0
  1100. package/services/persistence.d.ts +2 -3
  1101. package/services/persistence.d.ts.map +1 -1
  1102. package/services/persistence.js +2 -3
  1103. package/services/phrase-chunked-tts.d.ts +136 -0
  1104. package/services/phrase-chunked-tts.d.ts.map +1 -0
  1105. package/services/phrase-chunked-tts.js +208 -0
  1106. package/services/sandbox-registry.d.ts +78 -0
  1107. package/services/sandbox-registry.d.ts.map +1 -0
  1108. package/services/sandbox-registry.js +323 -0
  1109. package/services/secrets-manager-installer.d.ts +8 -1
  1110. package/services/secrets-manager-installer.d.ts.map +1 -1
  1111. package/services/secrets-manager-installer.js +27 -2
  1112. package/services/sensitive-requests/cloud-link-adapter.d.ts +15 -0
  1113. package/services/sensitive-requests/cloud-link-adapter.d.ts.map +1 -0
  1114. package/services/sensitive-requests/cloud-link-adapter.js +73 -0
  1115. package/services/sensitive-requests/index.d.ts +27 -0
  1116. package/services/sensitive-requests/index.d.ts.map +1 -0
  1117. package/services/sensitive-requests/index.js +51 -0
  1118. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts +14 -0
  1119. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts.map +1 -0
  1120. package/services/sensitive-requests/instruct-dm-only-adapter.js +22 -0
  1121. package/services/sensitive-requests/owner-app-inline-adapter.d.ts +3 -0
  1122. package/services/sensitive-requests/owner-app-inline-adapter.d.ts.map +1 -0
  1123. package/services/sensitive-requests/owner-app-inline-adapter.js +146 -0
  1124. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts +3 -0
  1125. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts.map +1 -0
  1126. package/services/sensitive-requests/owner-app-oauth-adapter.js +156 -0
  1127. package/services/sensitive-requests/public-link-adapter.d.ts +14 -0
  1128. package/services/sensitive-requests/public-link-adapter.d.ts.map +1 -0
  1129. package/services/sensitive-requests/public-link-adapter.js +86 -0
  1130. package/services/sensitive-requests/tunnel-link-adapter.d.ts +17 -0
  1131. package/services/sensitive-requests/tunnel-link-adapter.d.ts.map +1 -0
  1132. package/services/sensitive-requests/tunnel-link-adapter.js +38 -0
  1133. package/services/steward-credentials.d.ts +1 -1
  1134. package/services/steward-credentials.d.ts.map +1 -1
  1135. package/services/steward-credentials.js +10 -6
  1136. package/services/steward-sidecar/health-check.d.ts.map +1 -1
  1137. package/services/steward-sidecar/health-check.js +4 -3
  1138. package/services/steward-sidecar/process-management.d.ts +1 -1
  1139. package/services/steward-sidecar/process-management.d.ts.map +1 -1
  1140. package/services/steward-sidecar/process-management.js +9 -3
  1141. package/services/steward-sidecar/types.d.ts +1 -1
  1142. package/services/steward-sidecar/types.d.ts.map +1 -1
  1143. package/services/steward-sidecar/wallet-setup.d.ts +1 -1
  1144. package/services/steward-sidecar/wallet-setup.d.ts.map +1 -1
  1145. package/services/steward-sidecar/wallet-setup.js +8 -7
  1146. package/services/steward-sidecar.d.ts +5 -5
  1147. package/services/steward-sidecar.d.ts.map +1 -1
  1148. package/services/steward-sidecar.js +27 -19
  1149. package/services/task-host-capabilities.d.ts +60 -0
  1150. package/services/task-host-capabilities.d.ts.map +1 -0
  1151. package/services/task-host-capabilities.js +122 -0
  1152. package/services/tool-call-cache/index.d.ts +2 -2
  1153. package/services/tool-call-cache/index.d.ts.map +1 -1
  1154. package/services/tool-call-cache/index.js +1 -1
  1155. package/services/trigger-event-bridge.js +1 -1
  1156. package/services/tunnel-to-mobile/index.d.ts +2 -0
  1157. package/services/tunnel-to-mobile/index.d.ts.map +1 -0
  1158. package/services/tunnel-to-mobile/index.js +1 -0
  1159. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts +105 -0
  1160. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts.map +1 -0
  1161. package/services/tunnel-to-mobile/tunnel-to-mobile-client.js +190 -0
  1162. package/services/vault-bootstrap.d.ts.map +1 -1
  1163. package/services/vault-bootstrap.js +52 -21
  1164. package/services/vault-mirror.d.ts +1 -1
  1165. package/services/vault-mirror.d.ts.map +1 -1
  1166. package/services/vault-mirror.js +29 -6
  1167. package/services/voice-profiles/diarization-pipeline.d.ts +6 -0
  1168. package/services/voice-profiles/diarization-pipeline.d.ts.map +1 -0
  1169. package/services/voice-profiles/diarization-pipeline.js +20 -0
  1170. package/services/voice-profiles/index.d.ts +12 -0
  1171. package/services/voice-profiles/index.d.ts.map +1 -0
  1172. package/services/voice-profiles/index.js +5 -0
  1173. package/services/voice-profiles/nickname-evaluator.d.ts +14 -0
  1174. package/services/voice-profiles/nickname-evaluator.d.ts.map +1 -0
  1175. package/services/voice-profiles/nickname-evaluator.js +46 -0
  1176. package/services/voice-profiles/owner-confidence.d.ts +10 -0
  1177. package/services/voice-profiles/owner-confidence.d.ts.map +1 -0
  1178. package/services/voice-profiles/owner-confidence.js +38 -0
  1179. package/services/voice-profiles/private-challenge.d.ts +20 -0
  1180. package/services/voice-profiles/private-challenge.d.ts.map +1 -0
  1181. package/services/voice-profiles/private-challenge.js +44 -0
  1182. package/services/voice-profiles/store.d.ts +21 -0
  1183. package/services/voice-profiles/store.d.ts.map +1 -0
  1184. package/services/voice-profiles/store.js +50 -0
  1185. package/services/voice-profiles/types.d.ts +38 -0
  1186. package/services/voice-profiles/types.d.ts.map +1 -0
  1187. package/services/voice-profiles/types.js +1 -0
  1188. package/styles/electrobun-mac-window-drag.css +4 -4
  1189. package/test/helpers/__tests__/live-agent-test.smoke.test.ts +43 -70
  1190. package/test/helpers/browser-mocks.ts +2 -2
  1191. package/test/helpers/conditional-tests.ts +2 -2
  1192. package/test/helpers/live-agent-test.ts +537 -551
  1193. package/test/helpers/live-provider.test.ts +95 -5
  1194. package/test/helpers/live-provider.ts +234 -56
  1195. package/test/helpers/live-runtime-server.ts +4 -4
  1196. package/test/helpers/pglite-runtime.ts +1 -1
  1197. package/test/helpers/real-runtime.ts +72 -20
  1198. package/test/helpers/trajectory-harness.ts +11 -7
  1199. package/test/scripts/start-eliza-live.ts +9 -0
  1200. package/test/scripts/test-parallel.mjs +1 -1
  1201. package/test/scripts/test-root-unit.mjs +6 -7
  1202. package/test/scripts/websocket-pending-queue.test.ts +119 -0
  1203. package/test-support/test-helpers.d.ts +0 -33
  1204. package/test-support/test-helpers.d.ts.map +1 -1
  1205. package/test-support/test-helpers.js +81 -189
  1206. package/ui-compat.d.ts +14 -2
  1207. package/ui-compat.d.ts.map +1 -1
  1208. package/ui-compat.js +23 -3
  1209. package/api/auth-pairing-compat-routes.d.ts +0 -17
  1210. package/api/auth-pairing-compat-routes.d.ts.map +0 -1
  1211. package/api/auth-pairing-compat-routes.js +0 -301
  1212. package/api/local-inference-compat-routes.d.ts +0 -16
  1213. package/api/local-inference-compat-routes.d.ts.map +0 -1
  1214. package/api/local-inference-compat-routes.js +0 -617
  1215. package/api/onboarding-compat-routes.d.ts +0 -4
  1216. package/api/onboarding-compat-routes.d.ts.map +0 -1
  1217. package/api/onboarding-compat-routes.js +0 -207
  1218. package/api/plugins-compat-routes.d.ts +0 -103
  1219. package/api/plugins-compat-routes.d.ts.map +0 -1
  1220. package/api/plugins-compat-routes.js +0 -1181
  1221. package/api/server-onboarding-compat.d.ts +0 -31
  1222. package/api/server-onboarding-compat.d.ts.map +0 -1
  1223. package/api/server-onboarding-compat.js +0 -283
  1224. package/benchmark/cua-routes.d.ts +0 -10
  1225. package/benchmark/cua-routes.d.ts.map +0 -1
  1226. package/benchmark/cua-routes.js +0 -179
  1227. package/benchmark/mock-plugin-base.d.ts +0 -9
  1228. package/benchmark/mock-plugin-base.d.ts.map +0 -1
  1229. package/benchmark/mock-plugin-base.js +0 -325
  1230. package/cli/parse-duration.d.ts +0 -5
  1231. package/cli/parse-duration.d.ts.map +0 -1
  1232. package/cli/parse-duration.js +0 -27
  1233. package/patches/llama-cpp-capacitor@0.1.5.patch +0 -2387
  1234. package/platform/agent-browser-stub.d.ts +0 -27
  1235. package/platform/agent-browser-stub.d.ts.map +0 -1
  1236. package/platform/agent-browser-stub.js +0 -16
  1237. package/platforms/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +0 -26
  1238. package/platforms/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  1239. package/platforms/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  1240. package/platforms/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +0 -18
  1241. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512@2x.png +0 -0
  1242. package/platforms/electrobun/assets/appIcon.png +0 -0
  1243. package/platforms/electrobun/scripts/build-whisper-universal.sh +0 -137
  1244. package/platforms/electrobun/scripts/build-whisper.sh +0 -95
  1245. package/platforms/electrobun/scripts/ensure-whisper-model.sh +0 -93
  1246. package/platforms/electrobun/src/libMacWindowEffects.dylib +0 -0
  1247. package/platforms/electrobun/src/native/whisper.ts +0 -280
  1248. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  1249. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  1250. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  1251. package/registry/generate-apps.d.ts +0 -2
  1252. package/registry/generate-apps.d.ts.map +0 -1
  1253. package/registry/generate-apps.js +0 -338
  1254. package/registry/generate.d.ts +0 -2
  1255. package/registry/generate.d.ts.map +0 -1
  1256. package/registry/generate.js +0 -506
  1257. package/registry/loader.d.ts +0 -27
  1258. package/registry/loader.d.ts.map +0 -1
  1259. package/registry/loader.js +0 -111
  1260. package/registry/schema.d.ts +0 -989
  1261. package/registry/schema.d.ts.map +0 -1
  1262. package/registry/schema.js +0 -264
  1263. package/runtime/embedding-manager-support.d.ts +0 -77
  1264. package/runtime/embedding-manager-support.d.ts.map +0 -1
  1265. package/runtime/embedding-manager-support.js +0 -309
  1266. package/runtime/embedding-presets.d.ts +0 -5
  1267. package/runtime/embedding-presets.d.ts.map +0 -1
  1268. package/runtime/embedding-presets.js +0 -47
  1269. package/runtime/embedding-warmup-policy.d.ts +0 -13
  1270. package/runtime/embedding-warmup-policy.d.ts.map +0 -1
  1271. package/runtime/embedding-warmup-policy.js +0 -33
  1272. package/runtime/ensure-local-inference-handler.d.ts +0 -25
  1273. package/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  1274. package/runtime/ensure-local-inference-handler.js +0 -389
  1275. package/runtime/mobile-local-inference-gate.d.ts +0 -21
  1276. package/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  1277. package/runtime/mobile-local-inference-gate.js +0 -24
  1278. package/scripts/aosp/avd-test.mjs +0 -403
  1279. package/scripts/aosp/boot-validate.mjs +0 -536
  1280. package/scripts/aosp/build-aosp.mjs +0 -448
  1281. package/scripts/aosp/build-bootanimation.mjs +0 -178
  1282. package/scripts/aosp/capture-screens.mjs +0 -325
  1283. package/scripts/aosp/e2e-validate.mjs +0 -225
  1284. package/scripts/aosp/lint-init-rc.mjs +0 -258
  1285. package/scripts/aosp/llama-shim/eliza_llama_shim.c +0 -276
  1286. package/scripts/aosp/sim.mjs +0 -277
  1287. package/scripts/aosp/sync-to-aosp.mjs +0 -134
  1288. package/scripts/aosp/validate.mjs +0 -1273
  1289. package/scripts/build-llama-cpp-dflash.mjs +0 -1866
  1290. package/scripts/generate-onboarding-voicelines.mjs +0 -194
  1291. package/scripts/generated/static-asset-manifest.json +0 -4
  1292. package/scripts/normalize-parallax-capture.ts +0 -97
  1293. package/scripts/omnivoice-fuse/Makefile +0 -44
  1294. package/scripts/omnivoice-fuse/README.md +0 -266
  1295. package/scripts/omnivoice-fuse/cmake-graft.mjs +0 -180
  1296. package/scripts/omnivoice-fuse/ffi-stub.c +0 -222
  1297. package/scripts/omnivoice-fuse/ffi.h +0 -158
  1298. package/scripts/omnivoice-fuse/libelizainference_stub.dylib +0 -0
  1299. package/scripts/omnivoice-fuse/verify-symbols.mjs +0 -138
  1300. package/security/cloud-secret-store.d.ts +0 -34
  1301. package/security/cloud-secret-store.d.ts.map +0 -1
  1302. package/security/cloud-secret-store.js +0 -65
  1303. package/security/export-guard.d.ts +0 -34
  1304. package/security/export-guard.d.ts.map +0 -1
  1305. package/security/export-guard.js +0 -127
  1306. package/services/local-inference/__stress__/cache-stress-helpers.d.ts +0 -76
  1307. package/services/local-inference/__stress__/cache-stress-helpers.d.ts.map +0 -1
  1308. package/services/local-inference/__stress__/cache-stress-helpers.js +0 -238
  1309. package/services/local-inference/active-model.d.ts +0 -180
  1310. package/services/local-inference/active-model.d.ts.map +0 -1
  1311. package/services/local-inference/active-model.js +0 -362
  1312. package/services/local-inference/assignments.d.ts +0 -58
  1313. package/services/local-inference/assignments.d.ts.map +0 -1
  1314. package/services/local-inference/assignments.js +0 -179
  1315. package/services/local-inference/backend.d.ts +0 -200
  1316. package/services/local-inference/backend.d.ts.map +0 -1
  1317. package/services/local-inference/backend.js +0 -242
  1318. package/services/local-inference/bundled-models.d.ts +0 -34
  1319. package/services/local-inference/bundled-models.d.ts.map +0 -1
  1320. package/services/local-inference/bundled-models.js +0 -104
  1321. package/services/local-inference/cache-bridge.d.ts +0 -184
  1322. package/services/local-inference/cache-bridge.d.ts.map +0 -1
  1323. package/services/local-inference/cache-bridge.js +0 -333
  1324. package/services/local-inference/catalog.d.ts +0 -57
  1325. package/services/local-inference/catalog.d.ts.map +0 -1
  1326. package/services/local-inference/catalog.js +0 -262
  1327. package/services/local-inference/conversation-registry.d.ts +0 -122
  1328. package/services/local-inference/conversation-registry.d.ts.map +0 -1
  1329. package/services/local-inference/conversation-registry.js +0 -182
  1330. package/services/local-inference/device-bridge.d.ts +0 -139
  1331. package/services/local-inference/device-bridge.d.ts.map +0 -1
  1332. package/services/local-inference/device-bridge.js +0 -774
  1333. package/services/local-inference/dflash-doctor.d.ts +0 -27
  1334. package/services/local-inference/dflash-doctor.d.ts.map +0 -1
  1335. package/services/local-inference/dflash-doctor.js +0 -149
  1336. package/services/local-inference/dflash-server.d.ts +0 -248
  1337. package/services/local-inference/dflash-server.d.ts.map +0 -1
  1338. package/services/local-inference/dflash-server.js +0 -1076
  1339. package/services/local-inference/downloader.d.ts +0 -48
  1340. package/services/local-inference/downloader.d.ts.map +0 -1
  1341. package/services/local-inference/downloader.js +0 -688
  1342. package/services/local-inference/engine.d.ts +0 -282
  1343. package/services/local-inference/engine.d.ts.map +0 -1
  1344. package/services/local-inference/engine.js +0 -743
  1345. package/services/local-inference/external-scanner.d.ts +0 -17
  1346. package/services/local-inference/external-scanner.d.ts.map +0 -1
  1347. package/services/local-inference/external-scanner.js +0 -261
  1348. package/services/local-inference/handler-registry.d.ts +0 -72
  1349. package/services/local-inference/handler-registry.d.ts.map +0 -1
  1350. package/services/local-inference/handler-registry.js +0 -159
  1351. package/services/local-inference/hardware.d.ts +0 -26
  1352. package/services/local-inference/hardware.d.ts.map +0 -1
  1353. package/services/local-inference/hardware.js +0 -139
  1354. package/services/local-inference/hf-search.d.ts +0 -19
  1355. package/services/local-inference/hf-search.d.ts.map +0 -1
  1356. package/services/local-inference/hf-search.js +0 -169
  1357. package/services/local-inference/index.d.ts +0 -10
  1358. package/services/local-inference/index.d.ts.map +0 -1
  1359. package/services/local-inference/index.js +0 -7
  1360. package/services/local-inference/llama-server-metrics.d.ts +0 -108
  1361. package/services/local-inference/llama-server-metrics.d.ts.map +0 -1
  1362. package/services/local-inference/llama-server-metrics.js +0 -175
  1363. package/services/local-inference/manifest/index.d.ts +0 -4
  1364. package/services/local-inference/manifest/index.d.ts.map +0 -1
  1365. package/services/local-inference/manifest/index.js +0 -5
  1366. package/services/local-inference/manifest/schema.d.ts +0 -419
  1367. package/services/local-inference/manifest/schema.d.ts.map +0 -1
  1368. package/services/local-inference/manifest/schema.js +0 -227
  1369. package/services/local-inference/manifest/types.d.ts +0 -23
  1370. package/services/local-inference/manifest/types.d.ts.map +0 -1
  1371. package/services/local-inference/manifest/types.js +0 -5
  1372. package/services/local-inference/manifest/validator.d.ts +0 -43
  1373. package/services/local-inference/manifest/validator.d.ts.map +0 -1
  1374. package/services/local-inference/manifest/validator.js +0 -187
  1375. package/services/local-inference/paths.d.ts +0 -8
  1376. package/services/local-inference/paths.d.ts.map +0 -1
  1377. package/services/local-inference/paths.js +0 -7
  1378. package/services/local-inference/providers.d.ts +0 -61
  1379. package/services/local-inference/providers.d.ts.map +0 -1
  1380. package/services/local-inference/providers.js +0 -334
  1381. package/services/local-inference/ram-budget.d.ts +0 -57
  1382. package/services/local-inference/ram-budget.d.ts.map +0 -1
  1383. package/services/local-inference/ram-budget.js +0 -107
  1384. package/services/local-inference/readiness.d.ts +0 -9
  1385. package/services/local-inference/readiness.d.ts.map +0 -1
  1386. package/services/local-inference/readiness.js +0 -153
  1387. package/services/local-inference/recommendation.d.ts +0 -62
  1388. package/services/local-inference/recommendation.d.ts.map +0 -1
  1389. package/services/local-inference/recommendation.js +0 -309
  1390. package/services/local-inference/registry.d.ts +0 -35
  1391. package/services/local-inference/registry.d.ts.map +0 -1
  1392. package/services/local-inference/registry.js +0 -117
  1393. package/services/local-inference/router-handler.d.ts +0 -51
  1394. package/services/local-inference/router-handler.d.ts.map +0 -1
  1395. package/services/local-inference/router-handler.js +0 -165
  1396. package/services/local-inference/routing-policy.d.ts +0 -55
  1397. package/services/local-inference/routing-policy.d.ts.map +0 -1
  1398. package/services/local-inference/routing-policy.js +0 -195
  1399. package/services/local-inference/routing-preferences.d.ts +0 -8
  1400. package/services/local-inference/routing-preferences.d.ts.map +0 -1
  1401. package/services/local-inference/routing-preferences.js +0 -7
  1402. package/services/local-inference/service.d.ts +0 -88
  1403. package/services/local-inference/service.d.ts.map +0 -1
  1404. package/services/local-inference/service.js +0 -210
  1405. package/services/local-inference/session-pool.d.ts +0 -72
  1406. package/services/local-inference/session-pool.d.ts.map +0 -1
  1407. package/services/local-inference/session-pool.js +0 -125
  1408. package/services/local-inference/types.d.ts +0 -309
  1409. package/services/local-inference/types.d.ts.map +0 -1
  1410. package/services/local-inference/types.js +0 -23
  1411. package/services/local-inference/verify.d.ts +0 -8
  1412. package/services/local-inference/verify.d.ts.map +0 -1
  1413. package/services/local-inference/verify.js +0 -7
  1414. package/services/local-inference/voice/barge-in.d.ts +0 -15
  1415. package/services/local-inference/voice/barge-in.d.ts.map +0 -1
  1416. package/services/local-inference/voice/barge-in.js +0 -20
  1417. package/services/local-inference/voice/engine-bridge.d.ts +0 -256
  1418. package/services/local-inference/voice/engine-bridge.d.ts.map +0 -1
  1419. package/services/local-inference/voice/engine-bridge.js +0 -398
  1420. package/services/local-inference/voice/ffi-bindings.d.ts +0 -114
  1421. package/services/local-inference/voice/ffi-bindings.d.ts.map +0 -1
  1422. package/services/local-inference/voice/ffi-bindings.js +0 -281
  1423. package/services/local-inference/voice/index.d.ts +0 -51
  1424. package/services/local-inference/voice/index.d.ts.map +0 -1
  1425. package/services/local-inference/voice/index.js +0 -50
  1426. package/services/local-inference/voice/lifecycle.d.ts +0 -135
  1427. package/services/local-inference/voice/lifecycle.d.ts.map +0 -1
  1428. package/services/local-inference/voice/lifecycle.js +0 -189
  1429. package/services/local-inference/voice/phoneme-tokenizer.d.ts +0 -58
  1430. package/services/local-inference/voice/phoneme-tokenizer.d.ts.map +0 -1
  1431. package/services/local-inference/voice/phoneme-tokenizer.js +0 -53
  1432. package/services/local-inference/voice/phrase-cache.d.ts +0 -24
  1433. package/services/local-inference/voice/phrase-cache.d.ts.map +0 -1
  1434. package/services/local-inference/voice/phrase-cache.js +0 -32
  1435. package/services/local-inference/voice/phrase-chunker.d.ts +0 -20
  1436. package/services/local-inference/voice/phrase-chunker.d.ts.map +0 -1
  1437. package/services/local-inference/voice/phrase-chunker.js +0 -85
  1438. package/services/local-inference/voice/ring-buffer.d.ts +0 -40
  1439. package/services/local-inference/voice/ring-buffer.d.ts.map +0 -1
  1440. package/services/local-inference/voice/ring-buffer.js +0 -85
  1441. package/services/local-inference/voice/rollback-queue.d.ts +0 -24
  1442. package/services/local-inference/voice/rollback-queue.d.ts.map +0 -1
  1443. package/services/local-inference/voice/rollback-queue.js +0 -49
  1444. package/services/local-inference/voice/scheduler.d.ts +0 -47
  1445. package/services/local-inference/voice/scheduler.d.ts.map +0 -1
  1446. package/services/local-inference/voice/scheduler.js +0 -123
  1447. package/services/local-inference/voice/shared-resources.d.ts +0 -119
  1448. package/services/local-inference/voice/shared-resources.d.ts.map +0 -1
  1449. package/services/local-inference/voice/shared-resources.js +0 -83
  1450. package/services/local-inference/voice/speaker-preset-cache.d.ts +0 -28
  1451. package/services/local-inference/voice/speaker-preset-cache.d.ts.map +0 -1
  1452. package/services/local-inference/voice/speaker-preset-cache.js +0 -44
  1453. package/services/local-inference/voice/types.d.ts +0 -80
  1454. package/services/local-inference/voice/types.d.ts.map +0 -1
  1455. package/services/local-inference/voice/voice-preset-format.d.ts +0 -56
  1456. package/services/local-inference/voice/voice-preset-format.d.ts.map +0 -1
  1457. package/services/local-inference/voice/voice-preset-format.js +0 -184
  1458. package/services/plugin-installer.d.ts +0 -22
  1459. package/services/plugin-installer.d.ts.map +0 -1
  1460. package/services/plugin-installer.js +0 -41
  1461. package/test/helpers/i18n.ts +0 -5
  1462. package/test/helpers/loopback.ts +0 -33
  1463. package/test/helpers/react-test.ts +0 -40
  1464. package/test/helpers/skip-without.ts +0 -53
  1465. package/test/scripts/task-agent-live-smoke.ts +0 -1335
  1466. /package/services/{local-inference/voice → ambient-audio}/types.js +0 -0
@@ -5,6 +5,7 @@ import fs from "node:fs";
5
5
  import path from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { resolveElectrobunDir, resolveMainAppDir } from "./lib/app-dir.mjs";
8
+ import { maxMtimeUnder } from "./lib/artifact-staleness.mjs";
8
9
  import {
9
10
  buildWindowsRepairSteps,
10
11
  classifyElectrobunViewFailure,
@@ -13,6 +14,7 @@ import {
13
14
  isSupportedBunVersion,
14
15
  } from "./lib/desktop-preflight.mjs";
15
16
  import { appIdentityEnv } from "./lib/read-app-identity.mjs";
17
+ import { assertRendererRebuiltSince } from "./lib/renderer-build-manifest.mjs";
16
18
 
17
19
  const ROOT = process.cwd();
18
20
  const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url));
@@ -35,11 +37,149 @@ const COMMAND_PREFIX = (process.env.ELIZA_DESKTOP_COMMAND_PREFIX ?? "")
35
37
  .trim()
36
38
  .split(/\s+/)
37
39
  .filter(Boolean);
40
+ const DESKTOP_BUILD_LOCK_DIR = path.join(ROOT, ".turbo", "desktop-build.lock");
38
41
  const RUNTIME_COPY_SCRIPT = fs.existsSync(
39
42
  path.join(ROOT, "scripts", "copy-runtime-node-modules.ts"),
40
43
  )
41
44
  ? path.join(ROOT, "scripts", "copy-runtime-node-modules.ts")
42
45
  : path.join(SCRIPT_DIR, "copy-runtime-node-modules.ts");
46
+ const WRITE_BUILD_INFO_SCRIPT = fs.existsSync(
47
+ path.join(ROOT, "scripts", "write-build-info.ts"),
48
+ )
49
+ ? path.join(ROOT, "scripts", "write-build-info.ts")
50
+ : path.join(ROOT, "packages", "scripts", "write-build-info.ts");
51
+
52
+ function resolveWorkspacePackageDir(packageDirName) {
53
+ const candidates = [
54
+ path.join(ROOT, "packages", packageDirName),
55
+ path.join(ROOT, "eliza", "packages", packageDirName),
56
+ ];
57
+ return (
58
+ candidates.find((candidate) =>
59
+ fs.existsSync(path.join(candidate, "package.json")),
60
+ ) ?? candidates[0]
61
+ );
62
+ }
63
+
64
+ function sleepSync(ms) {
65
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
66
+ }
67
+
68
+ function readDesktopBuildLockOwnerPid() {
69
+ try {
70
+ const rawOwner = fs.readFileSync(
71
+ path.join(DESKTOP_BUILD_LOCK_DIR, "owner"),
72
+ "utf8",
73
+ );
74
+ const pid = Number.parseInt(rawOwner.split(/\r?\n/, 1)[0] ?? "", 10);
75
+ return Number.isFinite(pid) && pid > 0 ? pid : null;
76
+ } catch {
77
+ return null;
78
+ }
79
+ }
80
+
81
+ function isProcessAlive(pid) {
82
+ try {
83
+ process.kill(pid, 0);
84
+ return true;
85
+ } catch (error) {
86
+ if (error?.code === "ESRCH") return false;
87
+ return true;
88
+ }
89
+ }
90
+
91
+ function withDesktopBuildLock(run) {
92
+ const lockParent = path.dirname(DESKTOP_BUILD_LOCK_DIR);
93
+ const staleAfterMs = 30 * 60 * 1000;
94
+ let announcedWait = false;
95
+
96
+ fs.mkdirSync(lockParent, { recursive: true });
97
+
98
+ for (;;) {
99
+ try {
100
+ fs.mkdirSync(DESKTOP_BUILD_LOCK_DIR);
101
+ fs.writeFileSync(
102
+ path.join(DESKTOP_BUILD_LOCK_DIR, "owner"),
103
+ `${process.pid}\n${new Date().toISOString()}\n`,
104
+ );
105
+ break;
106
+ } catch (error) {
107
+ if (error?.code !== "EEXIST") {
108
+ throw error;
109
+ }
110
+
111
+ let stat = null;
112
+ try {
113
+ stat = fs.statSync(DESKTOP_BUILD_LOCK_DIR);
114
+ } catch {
115
+ continue;
116
+ }
117
+
118
+ const ownerPid = readDesktopBuildLockOwnerPid();
119
+ if (
120
+ (ownerPid !== null && !isProcessAlive(ownerPid)) ||
121
+ Date.now() - stat.mtimeMs > staleAfterMs
122
+ ) {
123
+ fs.rmSync(DESKTOP_BUILD_LOCK_DIR, { recursive: true, force: true });
124
+ continue;
125
+ }
126
+
127
+ if (!announcedWait) {
128
+ console.log(
129
+ "[desktop-build] Waiting for another desktop build to finish...",
130
+ );
131
+ announcedWait = true;
132
+ }
133
+ sleepSync(250);
134
+ }
135
+ }
136
+
137
+ try {
138
+ run();
139
+ } finally {
140
+ fs.rmSync(DESKTOP_BUILD_LOCK_DIR, { recursive: true, force: true });
141
+ }
142
+ }
143
+
144
+ function resolveWorkspacePluginDir(pluginDirName) {
145
+ const candidates = [
146
+ path.join(ROOT, "plugins", pluginDirName),
147
+ path.join(ROOT, "eliza", "plugins", pluginDirName),
148
+ ];
149
+ return (
150
+ candidates.find((candidate) =>
151
+ fs.existsSync(path.join(candidate, "package.json")),
152
+ ) ?? candidates[0]
153
+ );
154
+ }
155
+
156
+ const APP_CORE_PACKAGE_DIR = resolveWorkspacePackageDir("app-core");
157
+ const AGENT_PACKAGE_DIR = resolveWorkspacePackageDir("agent");
158
+ const CLOUD_SDK_PACKAGE_DIR = resolveWorkspacePackageDir("cloud-sdk");
159
+ const CORE_PACKAGE_DIR = resolveWorkspacePackageDir("core");
160
+ const PLUGIN_AGENT_ORCHESTRATOR_PACKAGE_DIR = resolveWorkspacePluginDir(
161
+ "plugin-agent-orchestrator",
162
+ );
163
+ const APP_MODEL_TESTER_PACKAGE_DIR =
164
+ resolveWorkspacePluginDir("app-model-tester");
165
+ const PLUGIN_LOCAL_INFERENCE_PACKAGE_DIR = resolveWorkspacePluginDir(
166
+ "plugin-local-inference",
167
+ );
168
+ const PLUGIN_REMOTE_MANIFEST_PACKAGE_DIR = resolveWorkspacePackageDir(
169
+ "plugin-remote-manifest",
170
+ );
171
+ const PLUGIN_WORKER_RUNTIME_PACKAGE_DIR = resolveWorkspacePackageDir(
172
+ "plugin-worker-runtime",
173
+ );
174
+ const SHARED_PACKAGE_DIR = resolveWorkspacePackageDir("shared");
175
+ const SECURITY_PACKAGE_DIR = resolveWorkspacePackageDir("security");
176
+ const UI_PACKAGE_DIR = resolveWorkspacePackageDir("ui");
177
+ const VAULT_PACKAGE_DIR = resolveWorkspacePackageDir("vault");
178
+ const DESKTOP_BUILD_TMP_DIR = path.join(ELECTROBUN_DIR, "tmp");
179
+ const DESKTOP_BUILD_BUN_CACHE_DIR = path.join(
180
+ DESKTOP_BUILD_TMP_DIR,
181
+ "bun-cache",
182
+ );
43
183
 
44
184
  const argv = process.argv.slice(2);
45
185
  const command = argv[0] && !argv[0].startsWith("--") ? argv[0] : "build";
@@ -51,18 +191,22 @@ const buildProfile =
51
191
  const variant =
52
192
  getArgValue(args, "variant") ?? process.env.VITE_APP_VARIANT ?? "base";
53
193
  const buildVariant = resolveBuildVariant(
54
- getArgValue(args, "build-variant") ?? process.env.MILADY_BUILD_VARIANT,
194
+ getArgValue(args, "build-variant") ?? process.env.ELIZA_BUILD_VARIANT,
55
195
  );
56
196
  const buildEnv = getArgValue(args, "env") ?? process.env.BUILD_ENV ?? "";
57
- const buildWhisper = getBooleanArg(args, "build-whisper");
58
197
  const stageMacosReleaseApp = getBooleanArg(args, "stage-macos-release-app");
198
+ // The macOS native-effects dylib build shells to `xcrun clang++` (Xcode CLT).
199
+ // "Explicitly requested" decides whether missing native tooling is a hard
200
+ // failure (CI passes --build-native-effects on a tooled runner) or a graceful
201
+ // skip (out-of-box dev build).
202
+ const nativeEffectsExplicitlyRequested =
203
+ getBooleanArg(args, "build-native-effects") ||
204
+ process.env.ELIZA_DESKTOP_BUILD_NATIVE_EFFECTS === "1";
59
205
 
60
206
  function resolveBuildVariant(raw) {
61
207
  if (raw === "store" || raw === "direct") return raw;
62
208
  if (raw === undefined || raw === null || raw === "") return "direct";
63
- fail(
64
- `Unknown --build-variant value: ${raw}. Expected "store" or "direct".`,
65
- );
209
+ fail(`Unknown --build-variant value: ${raw}. Expected "store" or "direct".`);
66
210
  }
67
211
  const excludedOptionalPacks = [
68
212
  ...new Set([
@@ -170,7 +314,12 @@ function buildInvocation(binary, binaryArgs = []) {
170
314
  }
171
315
 
172
316
  function run(commandName, commandArgs, options = {}) {
173
- const { cwd = ROOT, env = process.env, label } = options;
317
+ const {
318
+ cwd = ROOT,
319
+ env = process.env,
320
+ label,
321
+ allowFailure = false,
322
+ } = options;
174
323
  const invocation = buildInvocation(commandName, commandArgs);
175
324
  const rendered = [invocation.command, ...invocation.args].join(" ");
176
325
  console.log(`[desktop-build] ${label ?? rendered}`);
@@ -182,6 +331,12 @@ function run(commandName, commandArgs, options = {}) {
182
331
  });
183
332
 
184
333
  if (result.status !== 0) {
334
+ if (allowFailure) {
335
+ console.warn(
336
+ `[desktop-build] ${rendered} exited ${result.status ?? 1} (tolerated)`,
337
+ );
338
+ return;
339
+ }
185
340
  fail(
186
341
  `${rendered} failed with exit code ${result.status ?? 1}`,
187
342
  result.status ?? 1,
@@ -189,6 +344,24 @@ function run(commandName, commandArgs, options = {}) {
189
344
  }
190
345
  }
191
346
 
347
+ function runStatus(commandName, commandArgs, options = {}) {
348
+ const { cwd = ROOT, env = process.env, label } = options;
349
+ const invocation = buildInvocation(commandName, commandArgs);
350
+ const rendered = [invocation.command, ...invocation.args].join(" ");
351
+ console.log(`[desktop-build] ${label ?? rendered}`);
352
+
353
+ const result = spawnSync(invocation.command, invocation.args, {
354
+ cwd,
355
+ env,
356
+ stdio: "inherit",
357
+ });
358
+
359
+ return {
360
+ command: rendered,
361
+ status: result.status ?? 1,
362
+ };
363
+ }
364
+
192
365
  function runCapture(commandName, commandArgs, options = {}) {
193
366
  const { cwd = ROOT, env = process.env } = options;
194
367
  const invocation = buildInvocation(commandName, commandArgs);
@@ -223,6 +396,50 @@ function runBunCapture(commandArgs, options = {}) {
223
396
  return runCapture(bun, commandArgs, options);
224
397
  }
225
398
 
399
+ function runBunStatus(commandArgs, options = {}) {
400
+ const bun = resolveBunBinary();
401
+ if (!bun) {
402
+ fail('Could not find "bun" in PATH.');
403
+ }
404
+ return runStatus(bun, commandArgs, options);
405
+ }
406
+
407
+ function desktopBuildTempEnv(extraEnv = {}) {
408
+ fs.mkdirSync(DESKTOP_BUILD_TMP_DIR, { recursive: true });
409
+ return {
410
+ ...process.env,
411
+ ...extraEnv,
412
+ TMPDIR: DESKTOP_BUILD_TMP_DIR,
413
+ TMP: DESKTOP_BUILD_TMP_DIR,
414
+ TEMP: DESKTOP_BUILD_TMP_DIR,
415
+ BUN_TMPDIR: DESKTOP_BUILD_TMP_DIR,
416
+ BUN_INSTALL_CACHE_DIR: DESKTOP_BUILD_BUN_CACHE_DIR,
417
+ };
418
+ }
419
+
420
+ function dependencyTreePresent(cwd) {
421
+ return (
422
+ fs.existsSync(path.join(cwd, "node_modules")) ||
423
+ fs.existsSync(path.join(ROOT, "node_modules"))
424
+ );
425
+ }
426
+
427
+ function runOptionalWorkspaceInstall(cwd, label) {
428
+ if (dependencyTreePresent(cwd)) {
429
+ console.log(`[desktop-build] ${label} (skipped; dependencies present)`);
430
+ return;
431
+ }
432
+ runBun(
433
+ ["install", "--ignore-scripts", "--cache-dir", DESKTOP_BUILD_BUN_CACHE_DIR],
434
+ {
435
+ cwd,
436
+ env: desktopBuildTempEnv(),
437
+ label,
438
+ allowFailure: true,
439
+ },
440
+ );
441
+ }
442
+
226
443
  function resolveBunBinary() {
227
444
  if (process.platform === "win32") {
228
445
  const whereResult = spawnSync("where", ["bun"], {
@@ -257,11 +474,6 @@ function resolveBunBinary() {
257
474
  return bun;
258
475
  }
259
476
 
260
- function runNode(commandArgs, options = {}) {
261
- const node = which("node") ?? process.execPath;
262
- run(node, commandArgs, options);
263
- }
264
-
265
477
  function runPackageBinary(binary, binaryArgs, options = {}) {
266
478
  const bunx = which("bunx");
267
479
  if (bunx) {
@@ -278,7 +490,46 @@ function runPackageBinary(binary, binaryArgs, options = {}) {
278
490
  fail(`Could not find bunx or npx to run ${binary}.`);
279
491
  }
280
492
 
493
+ function resolveLocalPackageBinary(binary, cwdCandidates = []) {
494
+ const executableNames =
495
+ process.platform === "win32"
496
+ ? [`${binary}.cmd`, `${binary}.exe`, binary]
497
+ : [binary];
498
+ const candidates = [];
499
+
500
+ for (const cwd of cwdCandidates) {
501
+ for (const executableName of executableNames) {
502
+ candidates.push(path.join(cwd, "node_modules", ".bin", executableName));
503
+ }
504
+ }
505
+
506
+ for (const executableName of executableNames) {
507
+ candidates.push(path.join(ROOT, "node_modules", ".bin", executableName));
508
+ }
509
+
510
+ return candidates.find((candidate) => fs.existsSync(candidate)) ?? null;
511
+ }
512
+
513
+ function runBunPackageBinary(binary, binaryArgs, options = {}) {
514
+ const bunx = which("bunx");
515
+ if (bunx) {
516
+ run(bunx, ["--bun", binary, ...binaryArgs], options);
517
+ return;
518
+ }
519
+
520
+ runPackageBinary(binary, binaryArgs, options);
521
+ }
522
+
281
523
  function runElectrobun(commandArgs, options = {}) {
524
+ const local = resolveLocalPackageBinary(
525
+ "electrobun",
526
+ [options.cwd, ELECTROBUN_DIR].filter(Boolean),
527
+ );
528
+ if (local) {
529
+ run(local, commandArgs, options);
530
+ return;
531
+ }
532
+
282
533
  const direct = which("electrobun");
283
534
  if (direct) {
284
535
  run(direct, commandArgs, options);
@@ -427,6 +678,53 @@ function runDesktopPreflight() {
427
678
  bunVersion,
428
679
  errorCode: "OK",
429
680
  });
681
+
682
+ preflightStoreVariantSigning();
683
+ }
684
+
685
+ /**
686
+ * Store-variant signing preflight.
687
+ *
688
+ * When building the store flavor of a desktop variant outside CI (no
689
+ * ELECTROBUN_SKIP_CODESIGN=1, no CI=true), fail loudly if the required
690
+ * signing-identity env vars aren't set. Without this, the build runs all
691
+ * the way through staging + packaging only to die in codesign-mas.mjs
692
+ * or build-msix.ps1 — wasting minutes of clock per attempt.
693
+ *
694
+ * CI builds skip this preflight because the secrets are provisioned at
695
+ * job-step level, after this script's preflight runs.
696
+ */
697
+ function preflightStoreVariantSigning() {
698
+ if (buildVariant !== "store") return;
699
+ if (process.env.CI === "true" || process.env.ELECTROBUN_SKIP_CODESIGN === "1")
700
+ return;
701
+
702
+ const missing = [];
703
+ if (process.platform === "darwin") {
704
+ if (!process.env.ELIZA_MAS_SIGNING_IDENTITY?.trim()) {
705
+ missing.push("ELIZA_MAS_SIGNING_IDENTITY");
706
+ }
707
+ } else if (process.platform === "win32") {
708
+ if (!process.env.ELIZA_MSIX_STORE_CERT_PATH?.trim()) {
709
+ missing.push("ELIZA_MSIX_STORE_CERT_PATH");
710
+ }
711
+ } else if (process.platform === "linux") {
712
+ // Flatpak builds use `flatpak-builder`; no signing env vars are required
713
+ // (Flathub signs the repo server-side).
714
+ }
715
+
716
+ if (missing.length === 0) return;
717
+
718
+ failPreflight(
719
+ "Store-variant build requires signing env vars (or set ELECTROBUN_SKIP_CODESIGN=1 for unsigned local builds).",
720
+ {
721
+ step: "store-signing",
722
+ platform: process.platform,
723
+ buildVariant,
724
+ missing,
725
+ },
726
+ missing.map((name) => ` set ${name}=... before running`),
727
+ );
430
728
  }
431
729
 
432
730
  function findLatestMacAppBundle() {
@@ -461,60 +759,581 @@ function findLatestMacAppBundle() {
461
759
  return candidates[0].appBundlePath;
462
760
  }
463
761
 
464
- function stageDesktopBuild() {
465
- ensureAppDirs();
762
+ function hasRootTsdownEntry() {
763
+ return (
764
+ fs.existsSync(path.join(ROOT, "tsdown.config.ts")) ||
765
+ fs.existsSync(path.join(ROOT, "tsdown.config.mts")) ||
766
+ fs.existsSync(path.join(ROOT, "tsdown.config.js")) ||
767
+ fs.existsSync(path.join(ROOT, "src", "index.ts"))
768
+ );
769
+ }
466
770
 
467
- runPackageBinary("tsdown", [], {
468
- cwd: ROOT,
469
- label: "Building core runtime bundle with tsdown",
771
+ function ensureRootRuntimeBundle() {
772
+ if (hasRootTsdownEntry()) {
773
+ runPackageBinary("tsdown", [], {
774
+ cwd: ROOT,
775
+ label: "Building core runtime bundle with tsdown",
776
+ });
777
+ return;
778
+ }
779
+
780
+ const distDir = path.join(ROOT, "dist");
781
+ const entrySource = [
782
+ "// auto-generated by desktop-build.mjs",
783
+ "// Standalone elizaOS checkouts do not have a root tsdown entry.",
784
+ "// Packaged desktop runtimes resolve the real CLI entry from the bundled node_modules tree.",
785
+ 'import "./node_modules/@elizaos/app-core/dist/entry.js";',
786
+ "",
787
+ ].join("\n");
788
+
789
+ fs.mkdirSync(distDir, { recursive: true });
790
+ fs.writeFileSync(path.join(distDir, "entry.js"), entrySource);
791
+ fs.writeFileSync(path.join(distDir, "index.js"), entrySource);
792
+ fs.writeFileSync(path.join(distDir, "package.json"), '{"type":"module"}\n');
793
+ }
794
+
795
+ // The desktop build compiles the @elizaos/* workspace packages from source, so
796
+ // it only works when those packages are present on disk (a workspace/local
797
+ // checkout). In packages mode they are resolved from node_modules instead and
798
+ // resolveWorkspacePackageDir() falls back to a non-existent ROOT/packages/* dir,
799
+ // which previously surfaced deep in the build as a cryptic
800
+ // "Expected @elizaos/core package not found". Detect this once, up front, with
801
+ // an actionable message instead.
802
+ function ensureWorkspaceCheckoutPresent() {
803
+ if (fs.existsSync(path.join(CORE_PACKAGE_DIR, "package.json"))) {
804
+ return;
805
+ }
806
+ fail(
807
+ "Desktop build requires the @elizaos/* workspace packages on disk, but " +
808
+ `none were found (looked for ${path.join(CORE_PACKAGE_DIR, "package.json")}).\n` +
809
+ " Run the desktop build from a workspace checkout where packages/* (or " +
810
+ "eliza/packages/*) are present.",
811
+ );
812
+ }
813
+
814
+ function ensureWorkspaceRuntimePackageBuilt(packageName, packageDir) {
815
+ const packageJson = path.join(packageDir, "package.json");
816
+ if (!fs.existsSync(packageJson)) {
817
+ fail(`Expected ${packageName} package not found: ${packageDir}`);
818
+ }
819
+
820
+ if (
821
+ process.env.ELIZA_DESKTOP_REBUILD_RUNTIME_PACKAGES !== "1" &&
822
+ workspaceRuntimePackageLooksBuilt(packageName, packageDir)
823
+ ) {
824
+ console.log(
825
+ `[desktop-build] Reusing existing ${packageName} runtime package`,
826
+ );
827
+ return;
828
+ }
829
+
830
+ runBun(["run", "build"], {
831
+ cwd: packageDir,
832
+ label: `Building ${packageName} runtime package`,
470
833
  });
834
+ }
471
835
 
472
- runNode(["--import", "tsx", "scripts/write-build-info.ts"], {
473
- cwd: ROOT,
474
- label: "Writing build metadata",
836
+ function workspaceRuntimePackageMarkersPresent(packageName, distDir) {
837
+ if (packageName === "@elizaos/core") {
838
+ return (
839
+ fs.existsSync(path.join(distDir, "node", "index.node.js")) &&
840
+ fs.existsSync(path.join(distDir, "index.node.d.ts")) &&
841
+ fs.existsSync(path.join(distDir, "testing", "live-provider.d.ts"))
842
+ );
843
+ }
844
+
845
+ if (packageName === "@elizaos/ui") {
846
+ return (
847
+ fs.existsSync(path.join(distDir, "index.js")) &&
848
+ fs.existsSync(path.join(distDir, "App.js")) &&
849
+ fs.existsSync(path.join(distDir, "components", "pages", "LogsView.js"))
850
+ );
851
+ }
852
+
853
+ return true;
854
+ }
855
+
856
+ function workspaceRuntimePackageLooksBuilt(packageName, packageDir) {
857
+ const distDir = path.join(packageDir, "dist");
858
+ if (!fs.existsSync(distDir)) return false;
859
+ if (!workspaceRuntimePackageMarkersPresent(packageName, distDir))
860
+ return false;
861
+
862
+ // Presence of the marker files isn't enough — a dist built from older sources
863
+ // would silently reuse stale runtime code (issue #9309). Reuse only when the
864
+ // dist is at least as new as the package's src. ELIZA_DESKTOP_TRUST_RUNTIME_-
865
+ // PACKAGE_DIST=1 bypasses the mtime check for environments where checkout
866
+ // mtimes are unreliable.
867
+ if (process.env.ELIZA_DESKTOP_TRUST_RUNTIME_PACKAGE_DIST === "1") return true;
868
+ const srcDir = path.join(packageDir, "src");
869
+ if (!fs.existsSync(srcDir)) return true;
870
+ const srcMtime = maxMtimeUnder(srcDir);
871
+ const distMtime = maxMtimeUnder(distDir);
872
+ if (srcMtime > distMtime) {
873
+ console.log(
874
+ `[desktop-build] ${packageName} dist is stale (src newer than dist) — rebuilding`,
875
+ );
876
+ return false;
877
+ }
878
+ return true;
879
+ }
880
+
881
+ function ensureWorkspaceRuntimePackagesBuilt() {
882
+ ensureWorkspaceRuntimePackageBuilt("@elizaos/core", CORE_PACKAGE_DIR);
883
+ ensureWorkspaceRuntimePackageBuilt("@elizaos/shared", SHARED_PACKAGE_DIR);
884
+ ensureWorkspaceRuntimePackageBuilt(
885
+ "@elizaos/cloud-sdk",
886
+ CLOUD_SDK_PACKAGE_DIR,
887
+ );
888
+ ensureWorkspaceRuntimePackageBuilt("@elizaos/security", SECURITY_PACKAGE_DIR);
889
+ ensureWorkspaceRuntimePackageBuilt("@elizaos/vault", VAULT_PACKAGE_DIR);
890
+ ensureWorkspaceRuntimePackageBuilt(
891
+ "@elizaos/plugin-remote-manifest",
892
+ PLUGIN_REMOTE_MANIFEST_PACKAGE_DIR,
893
+ );
894
+ ensureWorkspaceRuntimePackageBuilt(
895
+ "@elizaos/plugin-agent-orchestrator",
896
+ PLUGIN_AGENT_ORCHESTRATOR_PACKAGE_DIR,
897
+ );
898
+ ensureWorkspaceRuntimePackageBuilt(
899
+ "@elizaos/app-model-tester",
900
+ APP_MODEL_TESTER_PACKAGE_DIR,
901
+ );
902
+ ensureWorkspaceRuntimePackageBuilt("@elizaos/ui", UI_PACKAGE_DIR);
903
+ ensureWorkspaceRuntimePackageBuilt(
904
+ "@elizaos/plugin-local-inference",
905
+ PLUGIN_LOCAL_INFERENCE_PACKAGE_DIR,
906
+ );
907
+ ensureWorkspaceRuntimePackageBuilt(
908
+ "@elizaos/plugin-worker-runtime",
909
+ PLUGIN_WORKER_RUNTIME_PACKAGE_DIR,
910
+ );
911
+ ensureWorkspaceRuntimePackageBuilt("@elizaos/agent", AGENT_PACKAGE_DIR);
912
+ ensureWorkspaceRuntimePackageBuilt("@elizaos/app-core", APP_CORE_PACKAGE_DIR);
913
+ }
914
+
915
+ function ensureUiGeneratedAssets() {
916
+ runBun(["run", "generate:css-strings"], {
917
+ cwd: UI_PACKAGE_DIR,
918
+ label: "Generating @elizaos/ui CSS string modules",
475
919
  });
920
+ }
921
+
922
+ function desktopRendererBuildEnv() {
923
+ const env = {
924
+ ...process.env,
925
+ VITE_APP_VARIANT: variant,
926
+ ELIZA_BUILD_VARIANT: buildVariant,
927
+ };
928
+ if (env.ELIZA_SKIP_LOCAL_UPSTREAMS !== "1") {
929
+ env.ELIZA_FORCE_LOCAL_UPSTREAMS = "1";
930
+ }
931
+ return env;
932
+ }
933
+
934
+ function runtimeCopyArgs() {
935
+ return [
936
+ RUNTIME_COPY_SCRIPT,
937
+ "--scan-dir",
938
+ "dist",
939
+ "--target-dist",
940
+ "dist",
941
+ ...excludedOptionalPacks.flatMap((pack) => [
942
+ "--exclude-optional-pack",
943
+ pack,
944
+ ]),
945
+ ];
946
+ }
947
+
948
+ function runtimeCopyLabel() {
949
+ return excludedOptionalPacks.length > 0
950
+ ? `Bundling runtime node_modules into dist (profile=${buildProfile}, excluding: ${excludedOptionalPacks.join(", ")})`
951
+ : `Bundling runtime node_modules into dist (profile=${buildProfile})`;
952
+ }
953
+
954
+ function formatGiB(bytes) {
955
+ return `${(bytes / 1024 / 1024 / 1024).toFixed(1)} GiB`;
956
+ }
957
+
958
+ function directorySizeBytes(dir) {
959
+ if (!fs.existsSync(dir)) return 0;
960
+
961
+ let total = 0;
962
+ const visit = (currentDir) => {
963
+ for (const entry of fs.readdirSync(currentDir, { withFileTypes: true })) {
964
+ const entryPath = path.join(currentDir, entry.name);
965
+ const stat = fs.lstatSync(entryPath);
966
+ if (stat.isDirectory()) {
967
+ visit(entryPath);
968
+ continue;
969
+ }
970
+ total += stat.size;
971
+ }
972
+ };
973
+
974
+ visit(dir);
975
+ return total;
976
+ }
977
+
978
+ function assertRuntimeCopyDiskHeadroom() {
979
+ if (typeof fs.statfsSync !== "function") return;
980
+
981
+ const stat = fs.statfsSync(ROOT);
982
+ const availableBytes = Number(stat.bavail) * Number(stat.bsize);
983
+ const minimumBytes = Number.parseInt(
984
+ process.env.ELIZA_DESKTOP_MIN_FREE_BYTES ?? `${4 * 1024 * 1024 * 1024}`,
985
+ 10,
986
+ );
987
+ if (!Number.isFinite(minimumBytes) || minimumBytes <= 0) return;
988
+ if (availableBytes >= minimumBytes) return;
989
+
990
+ const existingRuntimeNodeModules = path.join(ROOT, "dist", "node_modules");
991
+ const recyclableBytes = directorySizeBytes(existingRuntimeNodeModules);
992
+ const effectiveAvailableBytes = availableBytes + recyclableBytes;
993
+ if (effectiveAvailableBytes >= minimumBytes) {
994
+ if (recyclableBytes > 0) {
995
+ console.log(
996
+ `[desktop-build] Runtime copy has ${formatGiB(availableBytes)} free plus ${formatGiB(recyclableBytes)} recyclable generated node_modules output.`,
997
+ );
998
+ }
999
+ return;
1000
+ }
1001
+
1002
+ fail(
1003
+ [
1004
+ `Desktop runtime bundling needs at least ${formatGiB(minimumBytes)} free before copying node_modules; only ${formatGiB(availableBytes)} is available (${formatGiB(effectiveAvailableBytes)} after replacing generated dist/node_modules).`,
1005
+ "Free disk space, remove stale build outputs such as dist/.turbo, or rerun with ELIZA_DESKTOP_MIN_FREE_BYTES=0 if you intentionally want to risk a partial copy.",
1006
+ ].join(" "),
1007
+ );
1008
+ }
1009
+
1010
+ function copyRuntimeNodeModulesWithRetry() {
1011
+ assertRuntimeCopyDiskHeadroom();
1012
+
1013
+ const maxAttempts = 2;
1014
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
1015
+ const result = runBunStatus(runtimeCopyArgs(), {
1016
+ cwd: ROOT,
1017
+ label:
1018
+ attempt === 1
1019
+ ? runtimeCopyLabel()
1020
+ : `${runtimeCopyLabel()} (retry ${attempt}/${maxAttempts})`,
1021
+ });
1022
+ if (result.status === 0) {
1023
+ return;
1024
+ }
1025
+ if (attempt < maxAttempts) {
1026
+ console.warn(
1027
+ `[desktop-build] ${result.command} exited ${result.status}; retrying runtime node_modules bundle`,
1028
+ );
1029
+ continue;
1030
+ }
1031
+ fail(
1032
+ `${result.command} failed with exit code ${result.status}`,
1033
+ result.status,
1034
+ );
1035
+ }
1036
+ }
1037
+
1038
+ const FUSED_LIB_STAGE_SCRIPT = path.join(
1039
+ SCRIPT_DIR,
1040
+ "stage-desktop-fused-lib.mjs",
1041
+ );
1042
+ // "auto" → the stager picks the host's best backend (Metal on macOS, CUDA when
1043
+ // nvcc is present, else CPU) with the CPU fallback always baked in, so a local
1044
+ // `--build-fused-lib` produces "CPU + platform GPU" for the build host.
1045
+ const FUSED_LIB_VARIANT =
1046
+ getArgValue(args, "fused-lib-variant") ??
1047
+ process.env.ELIZA_DESKTOP_FUSED_LIB_VARIANT ??
1048
+ "auto";
1049
+ // Where the fused lib is staged so the Electrobun copy (dist -> eliza-dist)
1050
+ // carries it; app-core's runtime probe (ensureBundledFusedLibDir) then finds
1051
+ // `<eliza-dist>/local-inference/lib` with no env wiring.
1052
+ const FUSED_LIB_OUT_DIR = path.join(ROOT, "dist", "local-inference", "lib");
1053
+
1054
+ function fusedLibFilenames() {
1055
+ if (process.platform === "darwin") return ["libelizainference.dylib"];
1056
+ if (process.platform === "win32")
1057
+ return ["elizainference.dll", "libelizainference.dll"];
1058
+ return ["libelizainference.so"];
1059
+ }
1060
+
1061
+ function fusedLibAlreadyStaged() {
1062
+ return fusedLibFilenames().some((name) =>
1063
+ fs.existsSync(path.join(FUSED_LIB_OUT_DIR, name)),
1064
+ );
1065
+ }
1066
+
1067
+ // Provenance for the staged fused lib so the reuse gate never silently reuses a
1068
+ // lib built for a DIFFERENT variant/platform than this build targets (#9309).
1069
+ const FUSED_LIB_SIDECAR = path.join(FUSED_LIB_OUT_DIR, "staged-fused-lib.json");
1070
+
1071
+ function readFusedLibSidecar() {
1072
+ try {
1073
+ return JSON.parse(fs.readFileSync(FUSED_LIB_SIDECAR, "utf8"));
1074
+ } catch {
1075
+ return null;
1076
+ }
1077
+ }
1078
+
1079
+ function writeFusedLibSidecar() {
1080
+ fs.mkdirSync(FUSED_LIB_OUT_DIR, { recursive: true });
1081
+ fs.writeFileSync(
1082
+ FUSED_LIB_SIDECAR,
1083
+ `${JSON.stringify(
1084
+ {
1085
+ variant: FUSED_LIB_VARIANT,
1086
+ platform: process.platform,
1087
+ builtAt: new Date().toISOString(),
1088
+ },
1089
+ null,
1090
+ 2,
1091
+ )}\n`,
1092
+ );
1093
+ }
1094
+
1095
+ /**
1096
+ * A staged lib whose provenance sidecar names a DIFFERENT variant/platform than
1097
+ * this build targets — a confirmed wrong-variant lib we must not ship.
1098
+ */
1099
+ function fusedLibStagedVariantMismatch() {
1100
+ if (!fusedLibAlreadyStaged()) return false;
1101
+ const sidecar = readFusedLibSidecar();
1102
+ if (!sidecar) return false; // no provenance ≠ wrong provenance
1103
+ return (
1104
+ sidecar.variant !== FUSED_LIB_VARIANT ||
1105
+ sidecar.platform !== process.platform
1106
+ );
1107
+ }
1108
+
1109
+ /**
1110
+ * Whether a staged lib can be reused. A lib with a matching sidecar is reused; a
1111
+ * sidecar-less lib (e.g. a prebuilt artifact a CI step dropped into
1112
+ * dist/local-inference/lib) is TRUSTED and reused — we can't confirm its variant
1113
+ * but it was deliberately staged. Only a sidecar that names a different
1114
+ * variant/platform forces a rebuild.
1115
+ */
1116
+ function fusedLibStagedForCurrentVariant() {
1117
+ return fusedLibAlreadyStaged() && !fusedLibStagedVariantMismatch();
1118
+ }
1119
+
1120
+ const FUSED_LIB_FORK_DIR = path.join(
1121
+ PLUGIN_LOCAL_INFERENCE_PACKAGE_DIR,
1122
+ "native",
1123
+ "llama.cpp",
1124
+ );
1125
+
1126
+ /**
1127
+ * Ensure the native llama.cpp fork submodule is checked out (the fused build
1128
+ * needs its CMakeLists). Release CI checks out with `submodules: false`, so the
1129
+ * fork is absent; init just the one path on demand rather than requiring the
1130
+ * workflow to fetch every submodule. Returns true if the fork is present after.
1131
+ */
1132
+ function ensureFusedLibSubmodule() {
1133
+ if (fs.existsSync(path.join(FUSED_LIB_FORK_DIR, "CMakeLists.txt")))
1134
+ return true;
1135
+ const rel = path.relative(ROOT, FUSED_LIB_FORK_DIR).split(path.sep).join("/");
1136
+ console.log(
1137
+ `[desktop-build] Native fork missing; initializing submodule ${rel}`,
1138
+ );
1139
+ // NB: no --depth/shallow here — a shallow submodule fetch fails with
1140
+ // "Server does not allow request for unadvertised object <sha>" when the
1141
+ // recorded gitlink commit isn't the remote tip, which is common. Reliability
1142
+ // over speed: this path must actually produce the fork.
1143
+ spawnSync(
1144
+ "git",
1145
+ ["-C", ROOT, "submodule", "update", "--init", "--recursive", rel],
1146
+ { stdio: "inherit" },
1147
+ );
1148
+ return fs.existsSync(path.join(FUSED_LIB_FORK_DIR, "CMakeLists.txt"));
1149
+ }
1150
+
1151
+ /**
1152
+ * Build + stage the fused `libelizainference` into the desktop bundle so a
1153
+ * COMPILED app ships with working local inference — no first-run download, no
1154
+ * manual `build:fused-desktop`. The "auto" variant bakes CPU in and layers the
1155
+ * host's best GPU backend (Metal on macOS; CUDA when nvcc is present; else CPU),
1156
+ * so it works on every host.
1157
+ *
1158
+ * Gating:
1159
+ * - Reuses an already-staged lib (a prior build, or a prebuilt artifact a CI
1160
+ * step dropped into dist/local-inference/lib).
1161
+ * - Builds when explicitly asked (`--build-fused-lib` /
1162
+ * ELIZA_DESKTOP_BUILD_FUSED_LIB=1) OR automatically on CI release builds
1163
+ * (CI=true) — initializing the native submodule on demand. Off for plain
1164
+ * local dev builds (keeps iteration fast).
1165
+ * - An EXPLICIT request hard-fails if it can't produce the lib (unless
1166
+ * ELIZA_DESKTOP_FUSED_LIB_OPTIONAL=1). A CI auto-build is BEST-EFFORT: a
1167
+ * missing toolchain or a build failure warns and ships without the lib
1168
+ * (cloud fallback) rather than breaking the release. Set
1169
+ * ELIZA_DESKTOP_FUSED_LIB_REQUIRED=1 to make CI auto-builds hard-fail too.
1170
+ */
1171
+ function stageDesktopFusedLib() {
1172
+ const explicitlyRequested =
1173
+ getBooleanArg(args, "build-fused-lib") ||
1174
+ process.env.ELIZA_DESKTOP_BUILD_FUSED_LIB === "1";
1175
+ const ciAutoBuild = process.env.CI === "true";
1176
+ const shouldBuild = explicitlyRequested || ciAutoBuild;
1177
+ const required =
1178
+ (explicitlyRequested ||
1179
+ process.env.ELIZA_DESKTOP_FUSED_LIB_REQUIRED === "1") &&
1180
+ process.env.ELIZA_DESKTOP_FUSED_LIB_OPTIONAL !== "1";
1181
+
1182
+ if (
1183
+ fusedLibStagedForCurrentVariant() &&
1184
+ process.env.ELIZA_DESKTOP_REBUILD_FUSED_LIB !== "1"
1185
+ ) {
1186
+ console.log(
1187
+ `[desktop-build] Reusing already-staged fused lib in ${FUSED_LIB_OUT_DIR} ` +
1188
+ `(variant=${FUSED_LIB_VARIANT}, ${process.platform})`,
1189
+ );
1190
+ return;
1191
+ }
1192
+
1193
+ // A staged lib whose sidecar names a DIFFERENT variant/platform is a confirmed
1194
+ // wrong-variant lib — never silently reused. (A sidecar-less drop-in is trusted
1195
+ // and was already reused above.)
1196
+ const variantMismatch = fusedLibStagedVariantMismatch();
1197
+ if (variantMismatch) {
1198
+ const sidecar = readFusedLibSidecar();
1199
+ console.warn(
1200
+ `[desktop-build] Staged fused lib does not match this build ` +
1201
+ `(want variant=${FUSED_LIB_VARIANT}/${process.platform}, found ` +
1202
+ `${sidecar.variant}/${sidecar.platform}). ` +
1203
+ `It will be rebuilt to avoid shipping a wrong-variant native lib.`,
1204
+ );
1205
+ }
1206
+
1207
+ if (!shouldBuild) {
1208
+ if (variantMismatch) {
1209
+ // Can't rebuild here (no toolchain requested) and the staged lib is the
1210
+ // wrong variant — drop it so the app cleanly falls back to cloud inference
1211
+ // instead of dlopen()-ing a mismatched backend on the device.
1212
+ for (const name of fusedLibFilenames()) {
1213
+ fs.rmSync(path.join(FUSED_LIB_OUT_DIR, name), { force: true });
1214
+ }
1215
+ fs.rmSync(FUSED_LIB_SIDECAR, { force: true });
1216
+ console.warn(
1217
+ "[desktop-build] Removed the mismatched fused lib; this build ships without " +
1218
+ "local inference. Rebuild with --build-fused-lib to stage the right variant.",
1219
+ );
1220
+ return;
1221
+ }
1222
+ console.log(
1223
+ "[desktop-build] Skipping fused libelizainference build (local-inference will be " +
1224
+ "unavailable in this build). Enable with --build-fused-lib or " +
1225
+ "ELIZA_DESKTOP_BUILD_FUSED_LIB=1 (CI release builds enable it automatically).",
1226
+ );
1227
+ return;
1228
+ }
476
1229
 
477
- runNode(
1230
+ // Surface a hard failure for an explicit request that can't proceed; otherwise
1231
+ // warn and ship without the lib so a release never breaks on the native build.
1232
+ const giveUp = (reason) => {
1233
+ if (required) {
1234
+ fail(
1235
+ `Cannot build the fused libelizainference for the desktop bundle: ${reason}. ` +
1236
+ "Install the toolchain / init submodules, or set " +
1237
+ "ELIZA_DESKTOP_FUSED_LIB_OPTIONAL=1 to ship without local inference.",
1238
+ );
1239
+ }
1240
+ console.warn(
1241
+ `[desktop-build] Skipping fused libelizainference build — ${reason}. ` +
1242
+ "The compiled app will fall back to cloud inference.",
1243
+ );
1244
+ };
1245
+
1246
+ if (!which("cmake")) {
1247
+ giveUp("cmake not found on PATH");
1248
+ return;
1249
+ }
1250
+ if (!ensureFusedLibSubmodule()) {
1251
+ giveUp(`native fork not available at ${FUSED_LIB_FORK_DIR}`);
1252
+ return;
1253
+ }
1254
+
1255
+ fs.mkdirSync(FUSED_LIB_OUT_DIR, { recursive: true });
1256
+ run(
1257
+ "node",
478
1258
  [
479
- "--import",
480
- "tsx",
481
- RUNTIME_COPY_SCRIPT,
482
- "--scan-dir",
483
- "dist",
484
- "--target-dist",
485
- "dist",
486
- ...excludedOptionalPacks.flatMap((pack) => [
487
- "--exclude-optional-pack",
488
- pack,
489
- ]),
1259
+ FUSED_LIB_STAGE_SCRIPT,
1260
+ "--variant",
1261
+ FUSED_LIB_VARIANT,
1262
+ "--out",
1263
+ FUSED_LIB_OUT_DIR,
490
1264
  ],
491
1265
  {
492
1266
  cwd: ROOT,
493
- label:
494
- excludedOptionalPacks.length > 0
495
- ? `Bundling runtime node_modules into dist (profile=${buildProfile}, excluding: ${excludedOptionalPacks.join(", ")})`
496
- : `Bundling runtime node_modules into dist (profile=${buildProfile})`,
1267
+ // A CI auto-build that fails must not abort the whole release; an explicit
1268
+ // request is allowed to hard-fail.
1269
+ allowFailure: !required,
1270
+ label: `Building + staging fused libelizainference (${FUSED_LIB_VARIANT}) into the desktop bundle`,
497
1271
  },
498
1272
  );
499
1273
 
500
- runBun(["install", "--ignore-scripts"], {
501
- cwd: APP_DIR,
502
- label: "Ensuring app workspace dependencies are installed",
1274
+ if (!fusedLibAlreadyStaged()) {
1275
+ giveUp("the build produced no lib in the output dir");
1276
+ return;
1277
+ }
1278
+ // Record provenance so a later build with a different variant/platform won't
1279
+ // silently reuse this lib.
1280
+ writeFusedLibSidecar();
1281
+ }
1282
+
1283
+ function stageDesktopBuild() {
1284
+ ensureWorkspaceCheckoutPresent();
1285
+ ensureAppDirs();
1286
+
1287
+ ensureRootRuntimeBundle();
1288
+ ensureWorkspaceRuntimePackagesBuilt();
1289
+
1290
+ // Build + bundle the fused local-inference native lib so the packaged app
1291
+ // serves local AI out of the box. Gated (see stageDesktopFusedLib) so plain
1292
+ // dev builds stay fast; auto-built best-effort on CI release builds.
1293
+ stageDesktopFusedLib();
1294
+
1295
+ runBun(["run", "generate:css-strings"], {
1296
+ cwd: UI_PACKAGE_DIR,
1297
+ label: "Generating UI runtime CSS string modules",
503
1298
  });
504
1299
 
505
- runBun(["install", "--ignore-scripts"], {
506
- cwd: ELECTROBUN_DIR,
507
- label: "Ensuring Electrobun workspace dependencies are installed",
1300
+ runBun([WRITE_BUILD_INFO_SCRIPT], {
1301
+ cwd: ROOT,
1302
+ label: "Writing build metadata",
508
1303
  });
509
1304
 
510
- runPackageBinary("vite", ["build"], {
1305
+ copyRuntimeNodeModulesWithRetry();
1306
+
1307
+ // `bun install` for these workspaces can emit benign EEXIST errors when
1308
+ // file: deps overlap with manually-linked @elizaos/* symlinks. The links
1309
+ // get created successfully; bun exits non-zero only because of the dup
1310
+ // attempt. Tolerate so the build can proceed.
1311
+ runOptionalWorkspaceInstall(
1312
+ APP_DIR,
1313
+ "Ensuring app workspace dependencies are installed",
1314
+ );
1315
+
1316
+ runOptionalWorkspaceInstall(
1317
+ ELECTROBUN_DIR,
1318
+ "Ensuring Electrobun workspace dependencies are installed",
1319
+ );
1320
+
1321
+ ensureUiGeneratedAssets();
1322
+
1323
+ // Capture the moment the renderer build starts so we can prove afterward that
1324
+ // a FRESH bundle was produced — not a stale dist silently reused (issue #9309).
1325
+ const rendererBuildStartedAt = Date.now() - 1000;
1326
+ runBunPackageBinary("vite", ["build"], {
511
1327
  cwd: APP_DIR,
512
- env: {
513
- ...process.env,
514
- VITE_APP_VARIANT: variant,
515
- MILADY_BUILD_VARIANT: buildVariant,
516
- },
517
- label: `Building renderer bundle (VITE_APP_VARIANT=${variant}, MILADY_BUILD_VARIANT=${buildVariant})`,
1328
+ env: desktopRendererBuildEnv(),
1329
+ label: `Building renderer bundle (VITE_APP_VARIANT=${variant}, ELIZA_BUILD_VARIANT=${buildVariant})`,
1330
+ });
1331
+ // Fail loudly if the renderer manifest is missing or predates this build (a
1332
+ // cached/stale dist was reused) or was built for a different variant.
1333
+ assertRendererRebuiltSince(path.join(APP_DIR, "dist"), {
1334
+ notBefore: rendererBuildStartedAt,
1335
+ expectVariant: buildVariant,
1336
+ label: "desktop",
518
1337
  });
519
1338
 
520
1339
  runDesktopPreflight();
@@ -525,20 +1344,32 @@ function stageDesktopBuild() {
525
1344
  });
526
1345
 
527
1346
  if (process.platform === "darwin") {
528
- runBun(["run", "build:native-effects"], {
529
- cwd: ELECTROBUN_DIR,
530
- label: "Building native macOS effects dylib",
531
- });
532
- }
533
-
534
- if (
535
- buildWhisper &&
536
- (process.platform === "darwin" || process.platform === "linux")
537
- ) {
538
- runBun(["run", "build:whisper"], {
539
- cwd: ELECTROBUN_DIR,
540
- label: "Building whisper.cpp native binary",
541
- });
1347
+ // build:native-effects shells to `xcrun clang++` (Xcode Command Line
1348
+ // Tools). On a dev machine without the CLT the compile would hard-fail
1349
+ // deep in the stage; skip gracefully unless the build was explicitly asked
1350
+ // for the native bits (CI passes --build-native-effects on a tooled runner).
1351
+ const clangAvailable =
1352
+ which("xcrun") && runCapture("xcrun", ["-f", "clang++"]).status === 0;
1353
+ if (!clangAvailable) {
1354
+ if (nativeEffectsExplicitlyRequested) {
1355
+ fail(
1356
+ "Native macOS effects build requires the Xcode Command Line Tools " +
1357
+ "(xcrun clang++), which are missing. Install them with " +
1358
+ "`xcode-select --install`, or omit --build-native-effects / " +
1359
+ "ELIZA_DESKTOP_BUILD_NATIVE_EFFECTS=1.",
1360
+ );
1361
+ }
1362
+ console.warn(
1363
+ "[desktop-build] Skipping native macOS effects dylib — Xcode Command " +
1364
+ "Line Tools (xcrun clang++) not found. Request the native build " +
1365
+ "explicitly with --build-native-effects to make this a hard error.",
1366
+ );
1367
+ } else {
1368
+ runBun(["run", "build:native-effects"], {
1369
+ cwd: ELECTROBUN_DIR,
1370
+ label: "Building native macOS effects dylib",
1371
+ });
1372
+ }
542
1373
  }
543
1374
  }
544
1375
 
@@ -700,9 +1531,9 @@ function mirrorCanonicalToLegacy(name) {
700
1531
 
701
1532
  function packageDesktopBuild() {
702
1533
  ensureAppDirs();
703
- const packageArgs = ["run", "build"];
1534
+ const packageArgs = ["build"];
704
1535
  if (buildEnv) {
705
- packageArgs.push("--", `--env=${buildEnv}`);
1536
+ packageArgs.push(`--env=${buildEnv}`);
706
1537
  }
707
1538
 
708
1539
  if (process.platform === "darwin") {
@@ -720,15 +1551,17 @@ function packageDesktopBuild() {
720
1551
 
721
1552
  const packageEnv = {
722
1553
  ...process.env,
1554
+ ELECTROBUN_SKIP_CODESIGN: process.env.ELECTROBUN_SKIP_CODESIGN ?? "1",
723
1555
  ELIZA_ELECTROBUN_REPO_ROOT: process.env.ELIZA_ELECTROBUN_REPO_ROOT ?? ROOT,
724
- MILADY_BUILD_VARIANT: buildVariant,
1556
+ ELIZA_BUILD_VARIANT: buildVariant,
1557
+ PATH: `${path.join(ELECTROBUN_DIR, "scripts", "bin")}${path.delimiter}${process.env.PATH ?? ""}`,
725
1558
  ...appIdentityEnv(APP_DIR),
726
1559
  ...(stageMacosReleaseApp && process.platform === "darwin"
727
1560
  ? { ELIZA_ELECTROBUN_NOTARIZE: "0" }
728
1561
  : {}),
729
1562
  };
730
1563
 
731
- runBun(packageArgs, {
1564
+ runElectrobun(packageArgs, {
732
1565
  cwd: ELECTROBUN_DIR,
733
1566
  env: packageEnv,
734
1567
  label: buildEnv
@@ -760,9 +1593,11 @@ function packageDesktopBuild() {
760
1593
 
761
1594
  // Mac App Store post-package codesign: when building the store variant on
762
1595
  // macOS with real signing enabled, walk the bundle and re-sign every nested
763
- // Mach-O with mas-child.entitlements (sandbox + cs.inherit), then sign the
764
- // parent .app with mas.entitlements. Required because Electrobun's config
765
- // exposes only one entitlements field; helpers must inherit explicitly.
1596
+ // Mach-O with the narrowest applicable entitlements. Most helpers get
1597
+ // mas-child.entitlements, the Bun helper gets mas-bun.entitlements
1598
+ // (Bun-scoped allow-jit), and the parent .app gets mas.entitlements.
1599
+ // Required because Electrobun's config exposes only one entitlements field;
1600
+ // helpers must inherit explicitly.
766
1601
  if (
767
1602
  process.platform === "darwin" &&
768
1603
  buildVariant === "store" &&
@@ -773,9 +1608,9 @@ function packageDesktopBuild() {
773
1608
  path.join(SCRIPT_DIR, "codesign-mas.mjs"),
774
1609
  `--app=${appBundlePath}`,
775
1610
  ];
776
- if (process.env.MILADY_MAS_INSTALLER_IDENTITY) {
1611
+ if (process.env.ELIZA_MAS_INSTALLER_IDENTITY) {
777
1612
  codesignArgs.push(
778
- `--installer-identity=${process.env.MILADY_MAS_INSTALLER_IDENTITY}`,
1613
+ `--installer-identity=${process.env.ELIZA_MAS_INSTALLER_IDENTITY}`,
779
1614
  );
780
1615
  }
781
1616
  run("node", codesignArgs, {
@@ -783,6 +1618,26 @@ function packageDesktopBuild() {
783
1618
  env: packageEnv,
784
1619
  label: `MAS post-package codesign (${path.basename(appBundlePath)})`,
785
1620
  });
1621
+
1622
+ // Opt-in post-sign verification. Walks every Mach-O and asserts the
1623
+ // tightened entitlement set is what actually shipped — protects against
1624
+ // future regressions in the signer or in the entitlement plists. Skipped
1625
+ // by default because most builds don't want the extra walk; CI store
1626
+ // builds and developers debugging MAS signing should enable it.
1627
+ if (
1628
+ getBooleanArg(args, "verify-mas") ||
1629
+ process.env.ELIZA_VERIFY_MAS === "1"
1630
+ ) {
1631
+ run(
1632
+ "node",
1633
+ [path.join(SCRIPT_DIR, "mas-smoke.mjs"), `--app=${appBundlePath}`],
1634
+ {
1635
+ cwd: ROOT,
1636
+ env: packageEnv,
1637
+ label: `MAS entitlements verification (${path.basename(appBundlePath)})`,
1638
+ },
1639
+ );
1640
+ }
786
1641
  }
787
1642
 
788
1643
  if (stageMacosReleaseApp && process.platform === "darwin") {
@@ -829,39 +1684,51 @@ Options:
829
1684
  and forces Cloud hosting at runtime; "direct"
830
1685
  keeps current unsandboxed behavior.
831
1686
  --env <channel> Electrobun build env (e.g. canary, stable)
832
- --build-whisper Build whisper.cpp on macOS/Linux during stage
833
1687
  --stage-macos-release-app Stage a direct macOS .app + DMG from the Electrobun build output
834
1688
  --exclude-optional-pack <name> Exclude a manifest-classified optional capability pack during staging
1689
+ --build-native-effects Require the native macOS effects dylib build (hard-fail if Xcode CLT is missing)
1690
+ --verify-mas After MAS codesign, walk the bundle and verify the tightened
1691
+ entitlements via mas-smoke.mjs. Off by default; ELIZA_VERIFY_MAS=1
1692
+ also enables it.
835
1693
 
836
1694
  Environment:
837
1695
  ELIZA_DESKTOP_COMMAND_PREFIX Prefix every spawned command, e.g. "arch -x86_64"
1696
+ ELIZA_VERIFY_MAS=1 Enable mas-smoke entitlement verification on store builds.
838
1697
  `);
839
1698
  }
840
1699
 
841
- switch (command) {
842
- case "preflight":
843
- runDesktopPreflight();
844
- break;
845
- case "stage":
846
- stageDesktopBuild();
847
- break;
848
- case "package":
849
- packageDesktopBuild();
850
- break;
851
- case "build":
852
- stageDesktopBuild();
853
- packageDesktopBuild();
854
- break;
855
- case "run":
856
- stageDesktopBuild();
857
- packageDesktopBuild();
858
- runDesktopBuild();
859
- break;
860
- case "help":
861
- case "--help":
862
- case "-h":
863
- printUsage();
864
- break;
865
- default:
866
- fail(`Unknown command: ${command}`);
1700
+ function runCommand() {
1701
+ switch (command) {
1702
+ case "preflight":
1703
+ runDesktopPreflight();
1704
+ break;
1705
+ case "stage":
1706
+ stageDesktopBuild();
1707
+ break;
1708
+ case "package":
1709
+ packageDesktopBuild();
1710
+ break;
1711
+ case "build":
1712
+ stageDesktopBuild();
1713
+ packageDesktopBuild();
1714
+ break;
1715
+ case "run":
1716
+ stageDesktopBuild();
1717
+ packageDesktopBuild();
1718
+ runDesktopBuild();
1719
+ break;
1720
+ case "help":
1721
+ case "--help":
1722
+ case "-h":
1723
+ printUsage();
1724
+ break;
1725
+ default:
1726
+ fail(`Unknown command: ${command}`);
1727
+ }
1728
+ }
1729
+
1730
+ if (["preflight", "help", "--help", "-h"].includes(command)) {
1731
+ runCommand();
1732
+ } else {
1733
+ withDesktopBuildLock(runCommand);
867
1734
  }