@elizaos/app-core 2.0.3-beta.2 → 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 (360) hide show
  1. package/agent-bridge.d.ts +5 -5
  2. package/api/auth/audit.d.ts +1 -1
  3. package/api/auth/auth-context.d.ts +1 -1
  4. package/api/auth/bootstrap-token.d.ts +1 -1
  5. package/api/auth/sessions.d.ts +1 -1
  6. package/api/auth-bootstrap-routes.d.ts +1 -1
  7. package/api/auth-pairing-routes.d.ts +1 -1
  8. package/api/auth-pairing-routes.d.ts.map +1 -1
  9. package/api/auth-pairing-routes.js +2 -3
  10. package/api/auth-session-routes.d.ts +2 -2
  11. package/api/auth.d.ts +1 -1
  12. package/api/automations-compat-routes.d.ts +1 -1
  13. package/api/background-tasks-routes.d.ts +1 -1
  14. package/api/catalog-routes.d.ts +1 -1
  15. package/api/cloud-voice-routes.d.ts +1 -1
  16. package/api/compat-route-shared.d.ts +12 -5
  17. package/api/compat-route-shared.d.ts.map +1 -1
  18. package/api/compat-route-shared.js +22 -187
  19. package/api/database-rows-compat-routes.d.ts +1 -1
  20. package/api/dev-compat-routes.d.ts +1 -1
  21. package/api/dev-route-catalog.d.ts.map +1 -1
  22. package/api/dev-route-catalog.js +20 -0
  23. package/api/drop-status-compat-route.d.ts +3 -0
  24. package/api/drop-status-compat-route.d.ts.map +1 -0
  25. package/api/drop-status-compat-route.js +12 -0
  26. package/api/first-run-routes.d.ts +1 -1
  27. package/api/internal-routes.d.ts +1 -1
  28. package/api/runtime-mode-routes.d.ts +1 -1
  29. package/api/secrets-manager-routes.d.ts.map +1 -1
  30. package/api/sensitive-request-routes.d.ts +2 -2
  31. package/api/server-config-filter.d.ts.map +1 -1
  32. package/api/server-config-filter.js +0 -1
  33. package/api/server-first-run-helpers.d.ts.map +1 -1
  34. package/api/server-first-run-helpers.js +0 -3
  35. package/api/server.d.ts +8 -8
  36. package/api/server.d.ts.map +1 -1
  37. package/api/server.js +13 -59
  38. package/api/training-benchmarks.d.ts +1 -1
  39. package/api/training-benchmarks.d.ts.map +1 -1
  40. package/api/training-benchmarks.js +31 -9
  41. package/api/workbench-compat-routes.d.ts +1 -1
  42. package/benchmark/server-utils.d.ts +2 -2
  43. package/browser.d.ts +4 -4
  44. package/cli/plugins-cli.d.ts.map +1 -1
  45. package/cli/plugins-cli.js +5 -0
  46. package/cli/program/register.auth.d.ts +27 -1
  47. package/cli/program/register.auth.d.ts.map +1 -1
  48. package/cli/program/register.auth.js +187 -0
  49. package/cli/program/register.dashboard.d.ts.map +1 -1
  50. package/cli/program/register.dashboard.js +11 -1
  51. package/cli/program.d.ts +1 -1
  52. package/first-run/first-run-config.d.ts +1 -1
  53. package/index.d.ts +46 -47
  54. package/index.d.ts.map +1 -1
  55. package/index.js +3 -7
  56. package/package.json +42 -36
  57. package/packaging/PUBLISHING_GUIDE.md +20 -20
  58. package/platform/elizaos-agent-browser-stub.d.ts +0 -1
  59. package/platform/elizaos-agent-browser-stub.d.ts.map +1 -1
  60. package/platform/elizaos-agent-browser-stub.js +0 -1
  61. package/platform/ios-runtime-bridge.d.ts.map +1 -1
  62. package/platform/ios-runtime-bridge.js +0 -1
  63. package/platform/native-plugin-entrypoints.d.ts +2 -2
  64. package/platforms/android/app/build.gradle +30 -7
  65. package/platforms/android/app/src/main/elizavoice-jni/elizavoice-jni.cpp +179 -35
  66. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +60 -32
  67. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBionicInferenceServer.java +405 -65
  68. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceNative.java +35 -0
  69. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +13 -6
  70. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  71. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  72. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  73. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  74. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  75. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  76. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  77. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  78. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  79. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  80. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  81. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  82. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  83. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png +0 -0
  84. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  85. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  86. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  87. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png +0 -0
  88. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  89. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  90. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  91. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png +0 -0
  92. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  93. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  94. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  95. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png +0 -0
  96. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  97. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  98. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  99. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png +0 -0
  100. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  101. package/platforms/android/app/src/main/res/values/colors.xml +5 -1
  102. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +1 -1
  103. package/platforms/android/app/src/main/res/values/styles.xml +4 -1
  104. package/platforms/electrobun/electrobun.config.ts +0 -1
  105. package/platforms/electrobun/native/macos/window-effects.mm +4 -0
  106. package/platforms/electrobun/package.json +11 -9
  107. package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +1 -1
  108. package/platforms/electrobun/remotes/runtime/src/dev/phase2-smoke.ts +10 -5
  109. package/platforms/electrobun/remotes/runtime/src/dev/phase3-smoke.ts +11 -15
  110. package/platforms/electrobun/src/application-menu.ts +0 -7
  111. package/platforms/electrobun/src/desktop-http-request.test.ts +30 -1
  112. package/platforms/electrobun/src/desktop-http-request.ts +14 -2
  113. package/platforms/electrobun/src/desktop-test-bridge-server.ts +28 -0
  114. package/platforms/electrobun/src/fatal-shutdown.test.ts +3 -7
  115. package/platforms/electrobun/src/index.ts +64 -13
  116. package/platforms/electrobun/src/lifecycle/api-base-owner.test.ts +83 -0
  117. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +37 -16
  118. package/platforms/electrobun/src/native/agent.ts +28 -17
  119. package/platforms/electrobun/src/native/credentials.ts +6 -1
  120. package/platforms/electrobun/src/native/desktop-window.test.ts +142 -26
  121. package/platforms/electrobun/src/native/desktop.ts +8 -4
  122. package/platforms/electrobun/src/native/index.ts +6 -0
  123. package/platforms/electrobun/src/native/remote-plugin-host.ts +18 -8
  124. package/platforms/electrobun/src/preload.js +1 -1
  125. package/platforms/electrobun/src/voice/voice-live-validation.test.ts +10 -5
  126. package/platforms/electrobun/src/voice/voice-runtime-adapter.ts +3 -2
  127. package/platforms/electrobun/src/voice/voice-service.test.ts +26 -0
  128. package/platforms/electrobun/src/voice/voice-service.ts +57 -17
  129. package/platforms/electrobun/tsconfig.json +17 -1
  130. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +4 -6
  131. package/registry/index.d.ts +1 -6
  132. package/registry/index.d.ts.map +1 -1
  133. package/registry/index.js +9 -101
  134. package/runtime/android-avf-microdroid-bridge.d.ts +1 -1
  135. package/runtime/bundled-fused-lib.d.ts +36 -0
  136. package/runtime/bundled-fused-lib.d.ts.map +1 -0
  137. package/runtime/bundled-fused-lib.js +77 -0
  138. package/runtime/channel-plugin-map.d.ts +1 -5
  139. package/runtime/channel-plugin-map.d.ts.map +1 -1
  140. package/runtime/channel-plugin-map.js +11 -31
  141. package/runtime/desktop/index.d.ts +5 -5
  142. package/runtime/dev-server.js +11 -2
  143. package/runtime/eliza.d.ts.map +1 -1
  144. package/runtime/eliza.js +18 -8
  145. package/runtime/mode/route-mode-guard.d.ts +1 -1
  146. package/runtime/mode/route-mode-matrix.d.ts +1 -1
  147. package/runtime/voice-warmup.d.ts +4 -19
  148. package/runtime/voice-warmup.d.ts.map +1 -1
  149. package/runtime/voice-warmup.js +4 -14
  150. package/scripts/aosp/README.md +10 -1
  151. package/scripts/aosp/compile-libllama-zig-pin.test.mjs +147 -0
  152. package/scripts/aosp/compile-libllama.mjs +446 -59
  153. package/scripts/aosp/compile-libllama.test.mjs +133 -0
  154. package/scripts/aosp/compile-shim.mjs +21 -1
  155. package/scripts/aosp/deploy-pixel.mjs +1 -1
  156. package/scripts/aosp/stage-default-models.mjs +24 -31
  157. package/scripts/aosp/stage-default-models.test.mjs +23 -0
  158. package/scripts/assert-required-bundled-packages.test.ts +22 -1
  159. package/scripts/build-helpers/verify-fused-symbols.mjs +33 -0
  160. package/scripts/build-helpers/verify-fused-symbols.test.mjs +0 -0
  161. package/scripts/build-image.sh +1 -3
  162. package/scripts/build-llama-cpp-mtp.mjs +17 -16
  163. package/scripts/check-i18n.mjs +0 -1
  164. package/scripts/copy-runtime-node-modules.ts +147 -0
  165. package/scripts/desktop-build.mjs +317 -4
  166. package/scripts/docker-ci-smoke.sh +33 -8
  167. package/scripts/ensure-type-package-aliases.mjs +1 -1
  168. package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1 -1
  169. package/scripts/lib/agent-source-watcher.mjs +0 -1
  170. package/scripts/lib/artifact-staleness.d.mts +33 -0
  171. package/scripts/lib/artifact-staleness.mjs +122 -0
  172. package/scripts/lib/artifact-staleness.test.mts +98 -0
  173. package/scripts/lib/duet-bridge.mjs +1 -1
  174. package/scripts/lib/ios-plist-url-scheme.mjs +80 -0
  175. package/scripts/lib/mobile-build-decisions.mjs +97 -0
  176. package/scripts/lib/renderer-build-manifest.d.mts +65 -0
  177. package/scripts/lib/renderer-build-manifest.mjs +257 -0
  178. package/scripts/lib/renderer-build-manifest.test.mts +277 -0
  179. package/scripts/lib/stage-android-agent.mjs +13 -4
  180. package/scripts/lib/verify-ondevice-artifact.d.mts +16 -0
  181. package/scripts/lib/verify-ondevice-artifact.mjs +61 -0
  182. package/scripts/lib/verify-ondevice-artifact.test.mts +98 -0
  183. package/scripts/lib/websocket-pending-queue.ts +92 -0
  184. package/scripts/link-docker-local-app-packages.mjs +6 -0
  185. package/scripts/playwright-ui-live-stack.ts +430 -144
  186. package/scripts/playwright-ui-smoke-api-stub.mjs +160 -168
  187. package/scripts/run-local-plugin-live-smoke.mjs +1 -6
  188. package/scripts/run-mobile-build-brand-separation.test.mts +33 -0
  189. package/scripts/run-mobile-build-ios-engine-gate.test.mjs +85 -0
  190. package/scripts/run-mobile-build-mtp-staleness.test.mts +198 -0
  191. package/scripts/run-mobile-build.mjs +408 -86
  192. package/scripts/serve-real-local-agent.ts +72 -0
  193. package/scripts/stage-desktop-fused-lib.mjs +43 -14
  194. package/scripts/verify-ondevice-artifact.mjs +111 -0
  195. package/scripts/voice-attribution-smoke.ts +144 -38
  196. package/scripts/voice-duet.mjs +6 -6
  197. package/scripts/voice-e2e-hardware.ts +22 -16
  198. package/scripts/voice-interactive.mjs +16 -45
  199. package/security/agent-vault-id.d.ts +1 -1
  200. package/security/platform-secure-store-node.d.ts +1 -1
  201. package/services/ambient-audio/consent.d.ts +1 -1
  202. package/services/ambient-audio/index.d.ts +6 -6
  203. package/services/ambient-audio/replay-buffer.d.ts +1 -1
  204. package/services/ambient-audio/response-gate.d.ts +1 -1
  205. package/services/ambient-audio/service.d.ts +3 -3
  206. package/services/connector-target-catalog.d.ts +1 -1
  207. package/services/sensitive-requests/index.d.ts +6 -6
  208. package/services/steward-sidecar/wallet-setup.d.ts +1 -1
  209. package/services/steward-sidecar.d.ts +3 -3
  210. package/services/tunnel-to-mobile/index.d.ts +1 -1
  211. package/services/vault-bootstrap.d.ts.map +1 -1
  212. package/services/vault-bootstrap.js +14 -10
  213. package/services/voice-profiles/diarization-pipeline.d.ts +1 -1
  214. package/services/voice-profiles/index.d.ts +11 -11
  215. package/services/voice-profiles/owner-confidence.d.ts +1 -1
  216. package/services/voice-profiles/private-challenge.d.ts +1 -1
  217. package/services/voice-profiles/store.d.ts +1 -1
  218. package/test/helpers/live-provider.test.ts +91 -1
  219. package/test/helpers/live-provider.ts +195 -51
  220. package/test/scripts/websocket-pending-queue.test.ts +119 -0
  221. package/test-support/test-helpers.d.ts +0 -33
  222. package/test-support/test-helpers.d.ts.map +1 -1
  223. package/test-support/test-helpers.js +81 -189
  224. package/ui-compat.d.ts +1 -0
  225. package/ui-compat.d.ts.map +1 -1
  226. package/ui-compat.js +4 -0
  227. package/platforms/electrobun/docs/convergence-audit.json +0 -3505
  228. package/platforms/electrobun/docs/convergence-audit.md +0 -694
  229. package/platforms/electrobun/scripts/ensure-whisper-gguf.sh +0 -55
  230. package/platforms/electrobun/scripts/ensure-whisper-model.sh +0 -35
  231. package/platforms/electrobun/scripts/generate-convergence-audit.ts +0 -1203
  232. package/platforms/electrobun/src/native/whisper-env.test.ts +0 -71
  233. package/platforms/electrobun/src/native/whisper-env.ts +0 -68
  234. package/registry/app-registry.d.ts +0 -14
  235. package/registry/app-registry.d.ts.map +0 -1
  236. package/registry/app-registry.js +0 -29
  237. package/registry/entries/apps/app-polymarket.json +0 -31
  238. package/registry/entries/apps/clawville.json +0 -27
  239. package/registry/entries/apps/companion.json +0 -28
  240. package/registry/entries/apps/database-viewer.json +0 -27
  241. package/registry/entries/apps/defense-of-the-agents.json +0 -27
  242. package/registry/entries/apps/documents.json +0 -30
  243. package/registry/entries/apps/feed.json +0 -27
  244. package/registry/entries/apps/hyperliquid.json +0 -31
  245. package/registry/entries/apps/log-viewer.json +0 -27
  246. package/registry/entries/apps/memory-viewer.json +0 -27
  247. package/registry/entries/apps/model-tester.json +0 -31
  248. package/registry/entries/apps/plugin-viewer.json +0 -27
  249. package/registry/entries/apps/relationship-viewer.json +0 -27
  250. package/registry/entries/apps/runtime-debugger.json +0 -27
  251. package/registry/entries/apps/shopify.json +0 -31
  252. package/registry/entries/apps/skills-viewer.json +0 -27
  253. package/registry/entries/apps/steward.json +0 -31
  254. package/registry/entries/apps/training.json +0 -54
  255. package/registry/entries/apps/trajectory-viewer.json +0 -27
  256. package/registry/entries/apps/vincent.json +0 -31
  257. package/registry/entries/connectors/bluebubbles.json +0 -99
  258. package/registry/entries/connectors/bluesky.json +0 -173
  259. package/registry/entries/connectors/discord.json +0 -119
  260. package/registry/entries/connectors/farcaster.json +0 -174
  261. package/registry/entries/connectors/feishu.json +0 -79
  262. package/registry/entries/connectors/google-chat.json +0 -120
  263. package/registry/entries/connectors/google.json +0 -82
  264. package/registry/entries/connectors/imessage.json +0 -96
  265. package/registry/entries/connectors/instagram.json +0 -64
  266. package/registry/entries/connectors/line.json +0 -86
  267. package/registry/entries/connectors/matrix.json +0 -94
  268. package/registry/entries/connectors/mattermost.json +0 -110
  269. package/registry/entries/connectors/msteams.json +0 -104
  270. package/registry/entries/connectors/nextcloud-talk.json +0 -104
  271. package/registry/entries/connectors/nostr.json +0 -70
  272. package/registry/entries/connectors/signal.json +0 -81
  273. package/registry/entries/connectors/slack.json +0 -102
  274. package/registry/entries/connectors/telegram.json +0 -71
  275. package/registry/entries/connectors/tlon.json +0 -94
  276. package/registry/entries/connectors/twitch.json +0 -110
  277. package/registry/entries/connectors/whatsapp.json +0 -113
  278. package/registry/entries/connectors/x.json +0 -231
  279. package/registry/entries/connectors/zalo.json +0 -112
  280. package/registry/entries/connectors/zalouser.json +0 -122
  281. package/registry/entries/plugins/agent-orchestrator.json +0 -33
  282. package/registry/entries/plugins/agent-skills.json +0 -72
  283. package/registry/entries/plugins/anthropic.json +0 -73
  284. package/registry/entries/plugins/app-control.json +0 -23
  285. package/registry/entries/plugins/auto-trader.json +0 -203
  286. package/registry/entries/plugins/background-runner.json +0 -26
  287. package/registry/entries/plugins/blooio.json +0 -102
  288. package/registry/entries/plugins/browser.json +0 -75
  289. package/registry/entries/plugins/cli.json +0 -40
  290. package/registry/entries/plugins/clipboard.json +0 -44
  291. package/registry/entries/plugins/coding-tools.json +0 -71
  292. package/registry/entries/plugins/commands.json +0 -63
  293. package/registry/entries/plugins/computeruse.json +0 -74
  294. package/registry/entries/plugins/copilot-proxy.json +0 -93
  295. package/registry/entries/plugins/directives.json +0 -63
  296. package/registry/entries/plugins/edge-tts.json +0 -97
  297. package/registry/entries/plugins/elevenlabs.json +0 -169
  298. package/registry/entries/plugins/elizacloud.json +0 -208
  299. package/registry/entries/plugins/evm.json +0 -134
  300. package/registry/entries/plugins/experience.json +0 -34
  301. package/registry/entries/plugins/facewear.json +0 -131
  302. package/registry/entries/plugins/form.json +0 -26
  303. package/registry/entries/plugins/github.json +0 -93
  304. package/registry/entries/plugins/gmail-watch.json +0 -25
  305. package/registry/entries/plugins/goals.json +0 -77
  306. package/registry/entries/plugins/google-genai.json +0 -106
  307. package/registry/entries/plugins/groq.json +0 -93
  308. package/registry/entries/plugins/hedera.json +0 -48
  309. package/registry/entries/plugins/inmemorydb.json +0 -25
  310. package/registry/entries/plugins/linear.json +0 -51
  311. package/registry/entries/plugins/local-inference.json +0 -137
  312. package/registry/entries/plugins/local-storage.json +0 -36
  313. package/registry/entries/plugins/localdb.json +0 -25
  314. package/registry/entries/plugins/mcp.json +0 -44
  315. package/registry/entries/plugins/memory.json +0 -124
  316. package/registry/entries/plugins/minecraft.json +0 -79
  317. package/registry/entries/plugins/moltbook.json +0 -83
  318. package/registry/entries/plugins/music.json +0 -155
  319. package/registry/entries/plugins/mysticism.json +0 -48
  320. package/registry/entries/plugins/nearai.json +0 -82
  321. package/registry/entries/plugins/ngrok.json +0 -69
  322. package/registry/entries/plugins/ollama.json +0 -96
  323. package/registry/entries/plugins/openai.json +0 -189
  324. package/registry/entries/plugins/openrouter.json +0 -188
  325. package/registry/entries/plugins/pdf.json +0 -26
  326. package/registry/entries/plugins/plugin-manager.json +0 -23
  327. package/registry/entries/plugins/prose.json +0 -48
  328. package/registry/entries/plugins/rlm.json +0 -26
  329. package/registry/entries/plugins/roblox.json +0 -88
  330. package/registry/entries/plugins/rss.json +0 -64
  331. package/registry/entries/plugins/s3-storage.json +0 -91
  332. package/registry/entries/plugins/scheduling.json +0 -35
  333. package/registry/entries/plugins/shell.json +0 -94
  334. package/registry/entries/plugins/social-alpha.json +0 -72
  335. package/registry/entries/plugins/tailscale.json +0 -81
  336. package/registry/entries/plugins/tee.json +0 -53
  337. package/registry/entries/plugins/todos.json +0 -26
  338. package/registry/entries/plugins/trajectory-logger.json +0 -33
  339. package/registry/entries/plugins/trust.json +0 -39
  340. package/registry/entries/plugins/tts.json +0 -71
  341. package/registry/entries/plugins/tunnel.json +0 -45
  342. package/registry/entries/plugins/twilio.json +0 -168
  343. package/registry/entries/plugins/vercel-ai-gateway.json +0 -128
  344. package/registry/entries/plugins/video.json +0 -23
  345. package/registry/entries/plugins/vision.json +0 -43
  346. package/registry/entries/plugins/webhooks.json +0 -23
  347. package/registry/entries/plugins/workflow.json +0 -25
  348. package/registry/entries/plugins/xai.json +0 -75
  349. package/registry/loader.d.ts +0 -28
  350. package/registry/loader.d.ts.map +0 -1
  351. package/registry/loader.js +0 -158
  352. package/registry/schema.d.ts +0 -1199
  353. package/registry/schema.d.ts.map +0 -1
  354. package/registry/schema.js +0 -300
  355. package/scripts/patches/llama-mobile-kokoro-tts.patch +0 -480
  356. package/scripts/release-workflow-drift.test.ts +0 -57
  357. package/test/helpers/i18n.ts +0 -5
  358. package/test/helpers/loopback.ts +0 -33
  359. package/test/helpers/react-test.ts +0 -40
  360. package/test/helpers/skip-without.ts +0 -53
@@ -41,8 +41,8 @@ import java.nio.ByteOrder;
41
41
  * contextCreate({ bundleDir }) -> { handle }
42
42
  * contextDestroy({ handle })
43
43
  * pipelineOpen({ ctx }) -> { handle }
44
- * pipelineProcess({ handle, pcm16 }) -> { turns: [{turnId,samples,...,embedding?,labels?}] }
45
- * pipelineFlush({ handle }) -> { turns: [...] }
44
+ * pipelineProcess({ handle, pcm16, includePcm? }) -> { turns: [{turnId,samples,...,embedding?,labels?,pcm?}] }
45
+ * pipelineFlush({ handle, includePcm? }) -> { turns: [...] }
46
46
  * pipelineReset({ handle }) / pipelineClose({ handle })
47
47
  * wakewordOpen({ ctx, headName }) -> { handle }
48
48
  * wakewordScore({ handle, pcm16 }) -> { scores: number[] }
@@ -273,10 +273,11 @@ public class ElizaVoicePlugin extends Plugin {
273
273
  if (!ensureLoadedOrReject(call)) return;
274
274
  long handle = longArg(call, "handle");
275
275
  String pcm16 = call.getString("pcm16", "");
276
+ boolean includePcm = Boolean.TRUE.equals(call.getBoolean("includePcm", false));
276
277
  try {
277
278
  float[] pcm = decodePcm16(pcm16);
278
279
  String turnsJson = ElizaVoiceNative.nativePipelineProcess(handle, pcm);
279
- call.resolve(buildTurns(handle, turnsJson));
280
+ call.resolve(buildTurns(handle, turnsJson, includePcm));
280
281
  } catch (Throwable e) {
281
282
  call.reject("pipelineProcess failed: " + e.getMessage());
282
283
  }
@@ -286,16 +287,17 @@ public class ElizaVoicePlugin extends Plugin {
286
287
  public void pipelineFlush(PluginCall call) {
287
288
  if (!ensureLoadedOrReject(call)) return;
288
289
  long handle = longArg(call, "handle");
290
+ boolean includePcm = Boolean.TRUE.equals(call.getBoolean("includePcm", false));
289
291
  try {
290
292
  String turnsJson = ElizaVoiceNative.nativePipelineFlush(handle);
291
- call.resolve(buildTurns(handle, turnsJson));
293
+ call.resolve(buildTurns(handle, turnsJson, includePcm));
292
294
  } catch (Throwable e) {
293
295
  call.reject("pipelineFlush failed: " + e.getMessage());
294
296
  }
295
297
  }
296
298
 
297
- /** Attach per-turn embedding/labels payloads to the native turn JSON. */
298
- private JSObject buildTurns(long handle, String turnsJson) throws JSONException {
299
+ /** Attach per-turn native payloads to the native turn JSON. */
300
+ private JSObject buildTurns(long handle, String turnsJson, boolean includePcm) throws JSONException {
299
301
  JSONArray native_ = new JSONArray(turnsJson);
300
302
  JSArray turns = new JSArray();
301
303
  for (int i = 0; i < native_.length(); i++) {
@@ -306,6 +308,11 @@ public class ElizaVoicePlugin extends Plugin {
306
308
  turn.put("embeddingDim", emb != null ? emb.length : 0);
307
309
  turn.put("labels", encodeBytes(labels));
308
310
  turn.put("labelCount", labels != null ? labels.length : 0);
311
+ if (includePcm) {
312
+ float[] pcm = ElizaVoiceNative.nativePipelineTurnPcm(handle, i);
313
+ turn.put("pcm", encodeFloats(pcm));
314
+ turn.put("pcmSampleRate", 16000);
315
+ }
309
316
  turns.put(turn);
310
317
  }
311
318
  JSObject r = new JSObject();
@@ -1,7 +1,11 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <resources>
3
+ <!-- Brand accent (logos, brand surfaces). -->
3
4
  <color name="eliza_orange">#FF5800</color>
4
- <color name="splash_background">#FF5800</color>
5
+ <!-- Launch surface: matches the default home-background orange (#ef5a1f)
6
+ so the native splash + launch status bar flow into the React home with
7
+ no orange flash (issue #9565). -->
8
+ <color name="splash_background">#ef5a1f</color>
5
9
  <color name="colorPrimary">#FF5800</color>
6
10
  <color name="colorPrimaryDark">#FF5800</color>
7
11
  <color name="colorAccent">#FF5800</color>
@@ -1,4 +1,4 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <resources>
3
- <color name="ic_launcher_background">#f0b90b</color>
3
+ <color name="ic_launcher_background">#FF5800</color>
4
4
  </resources>
@@ -30,7 +30,10 @@
30
30
  <style name="AppTheme.NoActionBarLaunch" parent="Theme.SplashScreen">
31
31
  <item name="android:background">@drawable/splash</item>
32
32
  <item name="android:windowSplashScreenBackground">@color/splash_background</item>
33
- <item name="android:statusBarColor">@color/eliza_orange</item>
33
+ <!-- Launch status bar matches the splash + home background (#ef5a1f),
34
+ not the brand accent, so there is no orange→orange flash before the
35
+ ambient home renders (issue #9565). -->
36
+ <item name="android:statusBarColor">@color/splash_background</item>
34
37
  <!-- After the launch splash, swap to the no-action-bar app theme so the
35
38
  Capacitor WebView fills the window. Without this (paired with the
36
39
  installSplashScreen() call in MainActivity) the activity keeps this
@@ -547,7 +547,6 @@ export function createElectrobunConfig(): ElectrobunConfig {
547
547
  // Plugins — initialized by the API subprocess, never the bun shell.
548
548
  "@elizaos/plugin-sql",
549
549
  "@elizaos/plugin-local-inference",
550
- "@elizaos/plugin-local-inference",
551
550
  // Database stack pulled in by plugin-sql.
552
551
  "@electric-sql/pglite",
553
552
  "drizzle-orm",
@@ -811,8 +811,12 @@ API_AVAILABLE(macos(10.14))
811
811
  completionHandler(UNNotificationPresentationOptionBanner |
812
812
  UNNotificationPresentationOptionSound);
813
813
  } else {
814
+ // Alert is the correct foreground presentation option on macOS 10.x.
815
+ #pragma clang diagnostic push
816
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
814
817
  completionHandler(UNNotificationPresentationOptionAlert |
815
818
  UNNotificationPresentationOptionSound);
819
+ #pragma clang diagnostic pop
816
820
  }
817
821
  }
818
822
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/electrobun",
3
- "version": "2.0.3-beta.2",
3
+ "version": "2.0.3-beta.3",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "assets",
@@ -25,13 +25,15 @@
25
25
  "build:native-effects": "bash scripts/build-macos-effects.sh"
26
26
  },
27
27
  "dependencies": {
28
- "@elizaos/agent": "2.0.3-beta.2",
29
- "@elizaos/app-core": "2.0.3-beta.2",
30
- "@elizaos/plugin-browser": "2.0.3-beta.2",
31
- "@elizaos/plugin-registry": "2.0.3-beta.2",
32
- "@elizaos/plugin-remote-manifest": "2.0.3-beta.2",
33
- "@elizaos/shared": "2.0.3-beta.2",
34
- "bonjour-service": "1.3.0",
28
+ "@elizaos/agent": "2.0.3-beta.3",
29
+ "@elizaos/app-core": "2.0.3-beta.3",
30
+ "@elizaos/plugin-browser": "2.0.3-beta.3",
31
+ "@elizaos/plugin-capacitor-bridge": "2.0.3-beta.3",
32
+ "@elizaos/plugin-registry": "2.0.3-beta.3",
33
+ "@elizaos/plugin-remote-manifest": "2.0.3-beta.3",
34
+ "@elizaos/plugin-streaming": "2.0.3-beta.3",
35
+ "@elizaos/shared": "2.0.3-beta.3",
36
+ "bonjour-service": "1.4.2",
35
37
  "electrobun": "^1.18.1"
36
38
  },
37
39
  "devDependencies": {
@@ -44,5 +46,5 @@
44
46
  "publishConfig": {
45
47
  "access": "public"
46
48
  },
47
- "gitHead": "82fe0f44215954c2417328203f5bd6510985c1fc"
49
+ "gitHead": "f54b0f4eaed317d59fa7dbcdce20f4cdb0734420"
48
50
  }
@@ -363,7 +363,7 @@ export function getEliza1Catalog(): LocalModelCatalogEntry[] {
363
363
  default: tier.defaultTier === true,
364
364
  source: {
365
365
  localCatalog: source,
366
- eliza1BaseLineage: "Qwen",
366
+ eliza1BaseLineage: "Gemma",
367
367
  fineTuned: false,
368
368
  },
369
369
  raw: {
@@ -1,8 +1,12 @@
1
+ import {
2
+ readPhase2SmokeTestEnv,
3
+ TEST_ENV_NAMES,
4
+ } from "../../../../../../../shared/src/test-env-config.ts";
1
5
  import { ElizaRuntimeApiClient } from "../bun/api-client.ts";
2
6
  import { serializeError } from "../bun/errors.ts";
3
7
  import { RuntimeLogBuffer } from "../bun/log-buffer.ts";
4
- import { ElizaRuntimeManager } from "../bun/runtime-manager.ts";
5
8
  import type { AgentMessageParams } from "../bun/protocol.ts";
9
+ import { ElizaRuntimeManager } from "../bun/runtime-manager.ts";
6
10
 
7
11
  function writeJson(label: string, value: unknown): void {
8
12
  process.stdout.write(`${JSON.stringify({ label, value }, null, 2)}\n`);
@@ -34,6 +38,7 @@ const apiClient = new ElizaRuntimeApiClient({
34
38
  getAuthToken: () =>
35
39
  process.env.ELIZA_RUNTIME_API_TOKEN ?? process.env.ELIZA_API_TOKEN ?? null,
36
40
  });
41
+ const phase2Env = readPhase2SmokeTestEnv(process.env);
37
42
 
38
43
  writeJson("initialStatus", manager.status());
39
44
 
@@ -60,7 +65,7 @@ await capture("memory.search", () =>
60
65
  apiClient.searchMemory({ query: "test", limit: 5 }),
61
66
  );
62
67
 
63
- if (process.env.ELIZA_PHASE2_SEND_TEST_MESSAGE === "1") {
68
+ if (phase2Env.sendTestMessage) {
64
69
  const message: AgentMessageParams = {
65
70
  text: "Phase 2 ElizaLaunch API bridge smoke test. Reply briefly.",
66
71
  };
@@ -68,18 +73,18 @@ if (process.env.ELIZA_PHASE2_SEND_TEST_MESSAGE === "1") {
68
73
  } else {
69
74
  writeJson("agent.message", {
70
75
  ok: true,
71
- skipped: "Set ELIZA_PHASE2_SEND_TEST_MESSAGE=1 to send a real message.",
76
+ skipped: `Set ${TEST_ENV_NAMES.phase2.sendTestMessage}=1 to send a real message.`,
72
77
  });
73
78
  }
74
79
 
75
80
  writeJson("logsTail", manager.logsTail(20));
76
81
 
77
- if (process.env.ELIZA_PHASE2_STOP_AFTER === "1") {
82
+ if (phase2Env.stopAfter) {
78
83
  await capture("runtimeStop", () => manager.stop());
79
84
  } else {
80
85
  writeJson("runtimeStop", {
81
86
  ok: true,
82
- skipped: "Set ELIZA_PHASE2_STOP_AFTER=1 to stop after the smoke run.",
87
+ skipped: `Set ${TEST_ENV_NAMES.phase2.stopAfter}=1 to stop after the smoke run.`,
83
88
  });
84
89
  }
85
90
 
@@ -1,9 +1,13 @@
1
+ import {
2
+ readPhase3SmokeTestEnv,
3
+ TEST_ENV_NAMES,
4
+ } from "../../../../../../../shared/src/test-env-config.ts";
1
5
  import { ElizaRuntimeApiClient } from "../bun/api-client.ts";
2
6
  import { serializeError } from "../bun/errors.ts";
3
7
  import { RuntimeLogBuffer } from "../bun/log-buffer.ts";
8
+ import type { AgentMessageStreamEvent } from "../bun/protocol.ts";
4
9
  import { ElizaRuntimeManager } from "../bun/runtime-manager.ts";
5
10
  import { AgentStreamManager } from "../bun/stream-manager.ts";
6
- import type { AgentMessageStreamEvent } from "../bun/protocol.ts";
7
11
 
8
12
  function writeJson(label: string, value: unknown): void {
9
13
  process.stdout.write(`${JSON.stringify({ label, value }, null, 2)}\n`);
@@ -28,12 +32,6 @@ async function capture(
28
32
  }
29
33
  }
30
34
 
31
- function parsePositiveInt(value: string | undefined): number | null {
32
- if (value === undefined || value.trim().length === 0) return null;
33
- const parsed = Number.parseInt(value, 10);
34
- return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
35
- }
36
-
37
35
  const logBuffer = new RuntimeLogBuffer();
38
36
  const manager = new ElizaRuntimeManager({ logBuffer });
39
37
  const apiClient = new ElizaRuntimeApiClient({
@@ -59,6 +57,7 @@ const streamManager = new AgentStreamManager({
59
57
  },
60
58
  log: (line) => logBuffer.push("system", line),
61
59
  });
60
+ const phase3Env = readPhase3SmokeTestEnv(process.env);
62
61
 
63
62
  writeJson("initialStatus", manager.status());
64
63
 
@@ -85,7 +84,7 @@ if (
85
84
  writeJson("streamingRoutes", discovery.streamingRoutes);
86
85
  }
87
86
 
88
- if (process.env.ELIZA_PHASE3_SEND_STREAM_MESSAGE === "1") {
87
+ if (phase3Env.sendStreamMessage) {
89
88
  const startResult = await capture("agent.message.stream", () =>
90
89
  streamManager.startMessageStream({
91
90
  text: "Phase 3 ElizaLaunch streaming bridge smoke test. Reply briefly.",
@@ -98,9 +97,7 @@ if (process.env.ELIZA_PHASE3_SEND_STREAM_MESSAGE === "1") {
98
97
  typeof startResult.streamId === "string"
99
98
  ) {
100
99
  const streamId = startResult.streamId;
101
- const cancelAfterMs = parsePositiveInt(
102
- process.env.ELIZA_PHASE3_CANCEL_AFTER_MS,
103
- );
100
+ const cancelAfterMs = phase3Env.cancelAfterMs;
104
101
  if (cancelAfterMs !== null) {
105
102
  setTimeout(() => {
106
103
  void capture("agent.message.stream.cancel", () =>
@@ -122,19 +119,18 @@ if (process.env.ELIZA_PHASE3_SEND_STREAM_MESSAGE === "1") {
122
119
  } else {
123
120
  writeJson("agent.message.stream", {
124
121
  ok: true,
125
- skipped:
126
- "Set ELIZA_PHASE3_SEND_STREAM_MESSAGE=1 to send a real streaming message.",
122
+ skipped: `Set ${TEST_ENV_NAMES.phase3.sendStreamMessage}=1 to send a real streaming message.`,
127
123
  });
128
124
  }
129
125
 
130
126
  writeJson("logsTail", manager.logsTail(20));
131
127
 
132
- if (process.env.ELIZA_PHASE3_STOP_AFTER === "1") {
128
+ if (phase3Env.stopAfter) {
133
129
  await capture("runtimeStop", () => manager.stop());
134
130
  } else {
135
131
  writeJson("runtimeStop", {
136
132
  ok: true,
137
- skipped: "Set ELIZA_PHASE3_STOP_AFTER=1 to stop after the smoke run.",
133
+ skipped: `Set ${TEST_ENV_NAMES.phase3.stopAfter}=1 to stop after the smoke run.`,
138
134
  });
139
135
  }
140
136
 
@@ -22,13 +22,6 @@ export interface AppMenuEntry {
22
22
  }
23
23
 
24
24
  const APP_MENU_ENTRIES: readonly AppMenuEntry[] = [
25
- {
26
- slug: "lifeops",
27
- name: "@elizaos/plugin-personal-assistant",
28
- displayName: "LifeOps",
29
- windowPath: "/apps/lifeops",
30
- hasDetailsPage: true,
31
- },
32
25
  {
33
26
  slug: "plugin-viewer",
34
27
  name: "@elizaos/app-plugin-viewer",
@@ -54,11 +54,40 @@ describe("desktopHttpRequest", () => {
54
54
  "https://agent.example:2138",
55
55
  ]) {
56
56
  expect(() => normalizeDesktopHttpRequest({ url })).toThrow(
57
- "external plain HTTP",
57
+ "configured desktop API plain HTTP",
58
58
  );
59
59
  }
60
60
  });
61
61
 
62
+ it("allows the configured external desktop API base even when it is loopback", () => {
63
+ const previous = process.env.ELIZA_DESKTOP_TEST_API_BASE;
64
+ process.env.ELIZA_DESKTOP_TEST_API_BASE = "http://127.0.0.1:2138";
65
+ try {
66
+ expect(
67
+ normalizeDesktopHttpRequest({
68
+ url: "http://127.0.0.1:2138/api/config",
69
+ }),
70
+ ).toEqual({
71
+ url: "http://127.0.0.1:2138/api/config",
72
+ method: "GET",
73
+ headers: {},
74
+ body: null,
75
+ timeoutMs: undefined,
76
+ });
77
+ expect(() =>
78
+ normalizeDesktopHttpRequest({
79
+ url: "http://127.0.0.1:31337/api/config",
80
+ }),
81
+ ).toThrow("configured desktop API plain HTTP");
82
+ } finally {
83
+ if (typeof previous === "undefined") {
84
+ delete process.env.ELIZA_DESKTOP_TEST_API_BASE;
85
+ } else {
86
+ process.env.ELIZA_DESKTOP_TEST_API_BASE = previous;
87
+ }
88
+ }
89
+ });
90
+
62
91
  it("times out the full request including response body reads", async () => {
63
92
  vi.useFakeTimers();
64
93
  vi.stubGlobal(
@@ -1,4 +1,5 @@
1
1
  import { isLoopbackBindHost, isWildcardBindHost } from "@elizaos/shared";
2
+ import { resolveExternalApiBase } from "./api-base";
2
3
 
3
4
  function isExternalPlainHttpUrl(parsed: URL): boolean {
4
5
  return (
@@ -8,6 +9,14 @@ function isExternalPlainHttpUrl(parsed: URL): boolean {
8
9
  );
9
10
  }
10
11
 
12
+ function isConfiguredExternalApiBaseUrl(parsed: URL): boolean {
13
+ if (parsed.protocol !== "http:") return false;
14
+ const configured = resolveExternalApiBase(
15
+ process.env as Record<string, string | undefined>,
16
+ ).base;
17
+ return Boolean(configured && parsed.origin === configured);
18
+ }
19
+
11
20
  export function normalizeDesktopHttpRequest(params: unknown): {
12
21
  url: string;
13
22
  method: string;
@@ -23,9 +32,12 @@ export function normalizeDesktopHttpRequest(params: unknown): {
23
32
  throw new Error("desktopHttpRequest url must be a string.");
24
33
  }
25
34
  const parsed = new URL(record.url);
26
- if (!isExternalPlainHttpUrl(parsed)) {
35
+ if (
36
+ !isExternalPlainHttpUrl(parsed) &&
37
+ !isConfiguredExternalApiBaseUrl(parsed)
38
+ ) {
27
39
  throw new Error(
28
- "desktopHttpRequest supports only external plain HTTP URLs.",
40
+ "desktopHttpRequest supports only external or configured desktop API plain HTTP URLs.",
29
41
  );
30
42
  }
31
43
  const method = typeof record.method === "string" ? record.method : "GET";
@@ -161,6 +161,18 @@ export async function startDesktopTestBridgeServer(): Promise<
161
161
  return;
162
162
  }
163
163
 
164
+ if (pathname === "/main-window/show" && method === "POST") {
165
+ await getDesktopManager().showWindow();
166
+ json(res, 200, { ok: true });
167
+ return;
168
+ }
169
+
170
+ if (pathname === "/main-window/focus" && method === "POST") {
171
+ await getDesktopManager().focusWindow();
172
+ json(res, 200, { ok: true });
173
+ return;
174
+ }
175
+
164
176
  if (pathname === "/main-window/bounds") {
165
177
  const snapshot = getCurrentMainWindowSnapshot();
166
178
  if (!snapshot.present) {
@@ -224,6 +236,22 @@ export async function startDesktopTestBridgeServer(): Promise<
224
236
  return;
225
237
  }
226
238
 
239
+ if (pathname === "/app/quit" && method === "POST") {
240
+ json(res, 202, { ok: true });
241
+ setTimeout(() => {
242
+ void getDesktopManager()
243
+ .quit()
244
+ .catch((error: unknown) => {
245
+ console.warn(
246
+ `[DesktopTestBridge] Graceful quit failed: ${
247
+ error instanceof Error ? error.message : String(error)
248
+ }`,
249
+ );
250
+ });
251
+ }, 0);
252
+ return;
253
+ }
254
+
227
255
  json(res, 404, { error: "not found" });
228
256
  } catch (error) {
229
257
  json(res, 500, {
@@ -10,12 +10,9 @@ vi.mock("electrobun/bun", () => ({
10
10
 
11
11
  // Rule (electrobun.md:601-610):
12
12
  // Don't use process.exit() for shutdown — use Utils.quit() for graceful
13
- // shutdown with CEF cleanup.
14
- //
15
- // Current code (src/fatal-shutdown.ts):
16
- // export function shutdownAfterFatalError(): void {
17
- // process.exit(1);
18
- // }
13
+ // shutdown with CEF cleanup. shutdownAfterFatalError() must therefore call
14
+ // Utils.quit() (not process.exit) so CEF/native destructors run on a fatal
15
+ // startup error.
19
16
 
20
17
  describe("fatal startup shutdown", () => {
21
18
  it("does not call process.exit()", () => {
@@ -23,7 +20,6 @@ describe("fatal startup shutdown", () => {
23
20
 
24
21
  shutdownAfterFatalError();
25
22
 
26
- // RED: currently calls process.exit(1) — should call Utils.quit()
27
23
  expect(processExitSpy).not.toHaveBeenCalled();
28
24
  expect(Utils.quit).toHaveBeenCalledOnce();
29
25
  });