@elizaos/app-core 2.0.3-beta.2 → 2.0.3-beta.4

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 (361) 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-paths.mjs +110 -0
  152. package/scripts/aosp/compile-libllama-zig-pin.test.mjs +147 -0
  153. package/scripts/aosp/compile-libllama.mjs +377 -81
  154. package/scripts/aosp/compile-libllama.test.mjs +133 -0
  155. package/scripts/aosp/compile-shim.mjs +21 -1
  156. package/scripts/aosp/deploy-pixel.mjs +1 -1
  157. package/scripts/aosp/stage-default-models.mjs +24 -31
  158. package/scripts/aosp/stage-default-models.test.mjs +23 -0
  159. package/scripts/assert-required-bundled-packages.test.ts +22 -1
  160. package/scripts/build-helpers/verify-fused-symbols.mjs +33 -0
  161. package/scripts/build-helpers/verify-fused-symbols.test.mjs +0 -0
  162. package/scripts/build-image.sh +1 -3
  163. package/scripts/build-llama-cpp-mtp.mjs +17 -16
  164. package/scripts/check-i18n.mjs +0 -1
  165. package/scripts/copy-runtime-node-modules.ts +147 -0
  166. package/scripts/desktop-build.mjs +317 -4
  167. package/scripts/docker-ci-smoke.sh +33 -8
  168. package/scripts/ensure-type-package-aliases.mjs +1 -1
  169. package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1 -1
  170. package/scripts/lib/agent-source-watcher.mjs +0 -1
  171. package/scripts/lib/artifact-staleness.d.mts +33 -0
  172. package/scripts/lib/artifact-staleness.mjs +122 -0
  173. package/scripts/lib/artifact-staleness.test.mts +98 -0
  174. package/scripts/lib/duet-bridge.mjs +1 -1
  175. package/scripts/lib/ios-plist-url-scheme.mjs +80 -0
  176. package/scripts/lib/mobile-build-decisions.mjs +97 -0
  177. package/scripts/lib/renderer-build-manifest.d.mts +65 -0
  178. package/scripts/lib/renderer-build-manifest.mjs +257 -0
  179. package/scripts/lib/renderer-build-manifest.test.mts +277 -0
  180. package/scripts/lib/stage-android-agent.mjs +13 -4
  181. package/scripts/lib/verify-ondevice-artifact.d.mts +16 -0
  182. package/scripts/lib/verify-ondevice-artifact.mjs +61 -0
  183. package/scripts/lib/verify-ondevice-artifact.test.mts +98 -0
  184. package/scripts/lib/websocket-pending-queue.ts +92 -0
  185. package/scripts/link-docker-local-app-packages.mjs +6 -0
  186. package/scripts/playwright-ui-live-stack.ts +430 -144
  187. package/scripts/playwright-ui-smoke-api-stub.mjs +160 -168
  188. package/scripts/run-local-plugin-live-smoke.mjs +1 -6
  189. package/scripts/run-mobile-build-brand-separation.test.mts +33 -0
  190. package/scripts/run-mobile-build-ios-engine-gate.test.mjs +85 -0
  191. package/scripts/run-mobile-build-mtp-staleness.test.mts +198 -0
  192. package/scripts/run-mobile-build.mjs +408 -86
  193. package/scripts/serve-real-local-agent.ts +72 -0
  194. package/scripts/stage-desktop-fused-lib.mjs +43 -14
  195. package/scripts/verify-ondevice-artifact.mjs +111 -0
  196. package/scripts/voice-attribution-smoke.ts +144 -38
  197. package/scripts/voice-duet.mjs +6 -6
  198. package/scripts/voice-e2e-hardware.ts +22 -16
  199. package/scripts/voice-interactive.mjs +16 -45
  200. package/security/agent-vault-id.d.ts +1 -1
  201. package/security/platform-secure-store-node.d.ts +1 -1
  202. package/services/ambient-audio/consent.d.ts +1 -1
  203. package/services/ambient-audio/index.d.ts +6 -6
  204. package/services/ambient-audio/replay-buffer.d.ts +1 -1
  205. package/services/ambient-audio/response-gate.d.ts +1 -1
  206. package/services/ambient-audio/service.d.ts +3 -3
  207. package/services/connector-target-catalog.d.ts +1 -1
  208. package/services/sensitive-requests/index.d.ts +6 -6
  209. package/services/steward-sidecar/wallet-setup.d.ts +1 -1
  210. package/services/steward-sidecar.d.ts +3 -3
  211. package/services/tunnel-to-mobile/index.d.ts +1 -1
  212. package/services/vault-bootstrap.d.ts.map +1 -1
  213. package/services/vault-bootstrap.js +14 -10
  214. package/services/voice-profiles/diarization-pipeline.d.ts +1 -1
  215. package/services/voice-profiles/index.d.ts +11 -11
  216. package/services/voice-profiles/owner-confidence.d.ts +1 -1
  217. package/services/voice-profiles/private-challenge.d.ts +1 -1
  218. package/services/voice-profiles/store.d.ts +1 -1
  219. package/test/helpers/live-provider.test.ts +91 -1
  220. package/test/helpers/live-provider.ts +195 -51
  221. package/test/scripts/websocket-pending-queue.test.ts +119 -0
  222. package/test-support/test-helpers.d.ts +0 -33
  223. package/test-support/test-helpers.d.ts.map +1 -1
  224. package/test-support/test-helpers.js +81 -189
  225. package/ui-compat.d.ts +1 -0
  226. package/ui-compat.d.ts.map +1 -1
  227. package/ui-compat.js +4 -0
  228. package/platforms/electrobun/docs/convergence-audit.json +0 -3505
  229. package/platforms/electrobun/docs/convergence-audit.md +0 -694
  230. package/platforms/electrobun/scripts/ensure-whisper-gguf.sh +0 -55
  231. package/platforms/electrobun/scripts/ensure-whisper-model.sh +0 -35
  232. package/platforms/electrobun/scripts/generate-convergence-audit.ts +0 -1203
  233. package/platforms/electrobun/src/native/whisper-env.test.ts +0 -71
  234. package/platforms/electrobun/src/native/whisper-env.ts +0 -68
  235. package/registry/app-registry.d.ts +0 -14
  236. package/registry/app-registry.d.ts.map +0 -1
  237. package/registry/app-registry.js +0 -29
  238. package/registry/entries/apps/app-polymarket.json +0 -31
  239. package/registry/entries/apps/clawville.json +0 -27
  240. package/registry/entries/apps/companion.json +0 -28
  241. package/registry/entries/apps/database-viewer.json +0 -27
  242. package/registry/entries/apps/defense-of-the-agents.json +0 -27
  243. package/registry/entries/apps/documents.json +0 -30
  244. package/registry/entries/apps/feed.json +0 -27
  245. package/registry/entries/apps/hyperliquid.json +0 -31
  246. package/registry/entries/apps/log-viewer.json +0 -27
  247. package/registry/entries/apps/memory-viewer.json +0 -27
  248. package/registry/entries/apps/model-tester.json +0 -31
  249. package/registry/entries/apps/plugin-viewer.json +0 -27
  250. package/registry/entries/apps/relationship-viewer.json +0 -27
  251. package/registry/entries/apps/runtime-debugger.json +0 -27
  252. package/registry/entries/apps/shopify.json +0 -31
  253. package/registry/entries/apps/skills-viewer.json +0 -27
  254. package/registry/entries/apps/steward.json +0 -31
  255. package/registry/entries/apps/training.json +0 -54
  256. package/registry/entries/apps/trajectory-viewer.json +0 -27
  257. package/registry/entries/apps/vincent.json +0 -31
  258. package/registry/entries/connectors/bluebubbles.json +0 -99
  259. package/registry/entries/connectors/bluesky.json +0 -173
  260. package/registry/entries/connectors/discord.json +0 -119
  261. package/registry/entries/connectors/farcaster.json +0 -174
  262. package/registry/entries/connectors/feishu.json +0 -79
  263. package/registry/entries/connectors/google-chat.json +0 -120
  264. package/registry/entries/connectors/google.json +0 -82
  265. package/registry/entries/connectors/imessage.json +0 -96
  266. package/registry/entries/connectors/instagram.json +0 -64
  267. package/registry/entries/connectors/line.json +0 -86
  268. package/registry/entries/connectors/matrix.json +0 -94
  269. package/registry/entries/connectors/mattermost.json +0 -110
  270. package/registry/entries/connectors/msteams.json +0 -104
  271. package/registry/entries/connectors/nextcloud-talk.json +0 -104
  272. package/registry/entries/connectors/nostr.json +0 -70
  273. package/registry/entries/connectors/signal.json +0 -81
  274. package/registry/entries/connectors/slack.json +0 -102
  275. package/registry/entries/connectors/telegram.json +0 -71
  276. package/registry/entries/connectors/tlon.json +0 -94
  277. package/registry/entries/connectors/twitch.json +0 -110
  278. package/registry/entries/connectors/whatsapp.json +0 -113
  279. package/registry/entries/connectors/x.json +0 -231
  280. package/registry/entries/connectors/zalo.json +0 -112
  281. package/registry/entries/connectors/zalouser.json +0 -122
  282. package/registry/entries/plugins/agent-orchestrator.json +0 -33
  283. package/registry/entries/plugins/agent-skills.json +0 -72
  284. package/registry/entries/plugins/anthropic.json +0 -73
  285. package/registry/entries/plugins/app-control.json +0 -23
  286. package/registry/entries/plugins/auto-trader.json +0 -203
  287. package/registry/entries/plugins/background-runner.json +0 -26
  288. package/registry/entries/plugins/blooio.json +0 -102
  289. package/registry/entries/plugins/browser.json +0 -75
  290. package/registry/entries/plugins/cli.json +0 -40
  291. package/registry/entries/plugins/clipboard.json +0 -44
  292. package/registry/entries/plugins/coding-tools.json +0 -71
  293. package/registry/entries/plugins/commands.json +0 -63
  294. package/registry/entries/plugins/computeruse.json +0 -74
  295. package/registry/entries/plugins/copilot-proxy.json +0 -93
  296. package/registry/entries/plugins/directives.json +0 -63
  297. package/registry/entries/plugins/edge-tts.json +0 -97
  298. package/registry/entries/plugins/elevenlabs.json +0 -169
  299. package/registry/entries/plugins/elizacloud.json +0 -208
  300. package/registry/entries/plugins/evm.json +0 -134
  301. package/registry/entries/plugins/experience.json +0 -34
  302. package/registry/entries/plugins/facewear.json +0 -131
  303. package/registry/entries/plugins/form.json +0 -26
  304. package/registry/entries/plugins/github.json +0 -93
  305. package/registry/entries/plugins/gmail-watch.json +0 -25
  306. package/registry/entries/plugins/goals.json +0 -77
  307. package/registry/entries/plugins/google-genai.json +0 -106
  308. package/registry/entries/plugins/groq.json +0 -93
  309. package/registry/entries/plugins/hedera.json +0 -48
  310. package/registry/entries/plugins/inmemorydb.json +0 -25
  311. package/registry/entries/plugins/linear.json +0 -51
  312. package/registry/entries/plugins/local-inference.json +0 -137
  313. package/registry/entries/plugins/local-storage.json +0 -36
  314. package/registry/entries/plugins/localdb.json +0 -25
  315. package/registry/entries/plugins/mcp.json +0 -44
  316. package/registry/entries/plugins/memory.json +0 -124
  317. package/registry/entries/plugins/minecraft.json +0 -79
  318. package/registry/entries/plugins/moltbook.json +0 -83
  319. package/registry/entries/plugins/music.json +0 -155
  320. package/registry/entries/plugins/mysticism.json +0 -48
  321. package/registry/entries/plugins/nearai.json +0 -82
  322. package/registry/entries/plugins/ngrok.json +0 -69
  323. package/registry/entries/plugins/ollama.json +0 -96
  324. package/registry/entries/plugins/openai.json +0 -189
  325. package/registry/entries/plugins/openrouter.json +0 -188
  326. package/registry/entries/plugins/pdf.json +0 -26
  327. package/registry/entries/plugins/plugin-manager.json +0 -23
  328. package/registry/entries/plugins/prose.json +0 -48
  329. package/registry/entries/plugins/rlm.json +0 -26
  330. package/registry/entries/plugins/roblox.json +0 -88
  331. package/registry/entries/plugins/rss.json +0 -64
  332. package/registry/entries/plugins/s3-storage.json +0 -91
  333. package/registry/entries/plugins/scheduling.json +0 -35
  334. package/registry/entries/plugins/shell.json +0 -94
  335. package/registry/entries/plugins/social-alpha.json +0 -72
  336. package/registry/entries/plugins/tailscale.json +0 -81
  337. package/registry/entries/plugins/tee.json +0 -53
  338. package/registry/entries/plugins/todos.json +0 -26
  339. package/registry/entries/plugins/trajectory-logger.json +0 -33
  340. package/registry/entries/plugins/trust.json +0 -39
  341. package/registry/entries/plugins/tts.json +0 -71
  342. package/registry/entries/plugins/tunnel.json +0 -45
  343. package/registry/entries/plugins/twilio.json +0 -168
  344. package/registry/entries/plugins/vercel-ai-gateway.json +0 -128
  345. package/registry/entries/plugins/video.json +0 -23
  346. package/registry/entries/plugins/vision.json +0 -43
  347. package/registry/entries/plugins/webhooks.json +0 -23
  348. package/registry/entries/plugins/workflow.json +0 -25
  349. package/registry/entries/plugins/xai.json +0 -75
  350. package/registry/loader.d.ts +0 -28
  351. package/registry/loader.d.ts.map +0 -1
  352. package/registry/loader.js +0 -158
  353. package/registry/schema.d.ts +0 -1199
  354. package/registry/schema.d.ts.map +0 -1
  355. package/registry/schema.js +0 -300
  356. package/scripts/patches/llama-mobile-kokoro-tts.patch +0 -480
  357. package/scripts/release-workflow-drift.test.ts +0 -57
  358. package/test/helpers/i18n.ts +0 -5
  359. package/test/helpers/loopback.ts +0 -33
  360. package/test/helpers/react-test.ts +0 -40
  361. package/test/helpers/skip-without.ts +0 -53
@@ -74,39 +74,37 @@ function readSmokeVrm() {
74
74
 
75
75
  const SMOKE_VRM = readSmokeVrm();
76
76
 
77
+ // A collapsed plugin declares ONE view that draws gui + tui (+ xr) from the
78
+ // same `<Name>View` componentExport and the same bundle on the same `/<id>`
79
+ // route. In the stub a `modalities` 6th element expands that single declaration
80
+ // into one gui object + one tui object (both at `/<id>`, both serving the same
81
+ // componentExport), mirroring how the real /api/views collapses modalities.
82
+ // Plugins that still declare a standalone tui route (training) keep a separate
83
+ // `tui` row with its own `/<id>/tui` path below.
77
84
  const smokeViewDeclarations = [
78
- ["companion", "Companion", "plugin-companion", "/companion", "CompanionView"],
79
85
  [
80
86
  "companion",
81
- "Companion TUI",
87
+ "Companion",
82
88
  "plugin-companion",
83
- "/companion/tui",
84
- "CompanionTuiView",
85
- "tui",
89
+ "/companion",
90
+ "CompanionView",
91
+ ["gui", "tui"],
86
92
  ],
87
- ["contacts", "Contacts", "plugin-contacts", "/contacts", "ContactsAppView"],
88
93
  [
89
94
  "contacts",
90
- "Contacts TUI",
95
+ "Contacts",
91
96
  "plugin-contacts",
92
- "/contacts/tui",
93
- "ContactsTuiView",
94
- "tui",
97
+ "/contacts",
98
+ "ContactsView",
99
+ ["gui", "tui"],
95
100
  ],
96
101
  [
97
102
  "hyperliquid",
98
103
  "Hyperliquid",
99
104
  "plugin-hyperliquid-app",
100
105
  "/hyperliquid",
101
- "HyperliquidAppView",
102
- ],
103
- [
104
- "hyperliquid",
105
- "Hyperliquid TUI",
106
- "plugin-hyperliquid-app",
107
- "/hyperliquid/tui",
108
- "HyperliquidTuiView",
109
- "tui",
106
+ "HyperliquidView",
107
+ ["gui", "tui"],
110
108
  ],
111
109
  // NOTE: the LifeOps overview view was removed (PA no longer registers a
112
110
  // `lifeops` view). Its stub entries are deleted so the smoke launcher matches
@@ -136,83 +134,59 @@ const smokeViewDeclarations = [
136
134
  "Messages",
137
135
  "plugin-messages",
138
136
  "/messages",
139
- "MessagesPluginView",
140
- ],
141
- [
142
- "messages",
143
- "Messages TUI",
144
- "plugin-messages",
145
- "/messages/tui",
146
- "MessagesTuiView",
147
- "tui",
137
+ "MessagesView",
138
+ ["gui", "tui"],
148
139
  ],
149
140
  [
150
141
  "model-tester",
151
142
  "Model Tester",
152
143
  "app-model-tester",
153
144
  "/model-tester",
154
- "ModelTesterAppView",
155
- ],
156
- [
157
- "model-tester",
158
- "Model Tester TUI",
159
- "app-model-tester",
160
- "/model-tester/tui",
161
- "ModelTesterTuiView",
162
- "tui",
145
+ "ModelTesterView",
146
+ ["gui", "tui"],
163
147
  ],
164
- ["phone", "Phone", "plugin-phone", "/phone", "PhonePluginView"],
165
- ["phone", "Phone TUI", "plugin-phone", "/phone/tui", "PhoneTuiView", "tui"],
148
+ // Phone collapsed to ONE source: gui + tui (+ xr) all mount the single
149
+ // PhoneView spatial component from the same bundle.
150
+ ["phone", "Phone", "plugin-phone", "/phone", "PhoneView", ["gui", "tui"]],
166
151
  [
167
152
  "polymarket",
168
153
  "Polymarket",
169
154
  "plugin-polymarket-app",
170
155
  "/polymarket",
171
- "PolymarketAppView",
172
- ],
173
- [
174
- "polymarket",
175
- "Polymarket TUI",
176
- "plugin-polymarket-app",
177
- "/polymarket/tui",
178
- "PolymarketTuiView",
179
- "tui",
156
+ "PolymarketView",
157
+ ["gui", "tui"],
180
158
  ],
181
- ["shopify", "Shopify", "plugin-shopify-ui", "/shopify", "ShopifyAppView"],
182
159
  [
183
160
  "shopify",
184
- "Shopify TUI",
161
+ "Shopify",
185
162
  "plugin-shopify-ui",
186
- "/shopify/tui",
187
- "ShopifyTuiView",
188
- "tui",
163
+ "/shopify",
164
+ "ShopifyView",
165
+ ["gui", "tui"],
189
166
  ],
190
- ["steward", "Steward", "plugin-steward-app", "/steward", "StewardView"],
191
167
  [
192
168
  "steward",
193
- "Steward TUI",
169
+ "Steward",
194
170
  "plugin-steward-app",
195
- "/steward/tui",
196
- "StewardTuiView",
197
- "tui",
171
+ "/steward",
172
+ "StewardView",
173
+ ["gui", "tui"],
198
174
  ],
199
- ["vincent", "Vincent", "plugin-vincent", "/vincent", "VincentAppView"],
200
175
  [
201
176
  "vincent",
202
- "Vincent TUI",
177
+ "Vincent",
203
178
  "plugin-vincent",
204
- "/vincent/tui",
205
- "VincentTuiView",
206
- "tui",
179
+ "/vincent",
180
+ "VincentView",
181
+ ["gui", "tui"],
207
182
  ],
208
- ["wallet", "Wallet", "plugin-wallet-ui", "/wallet", "InventoryView"],
209
183
  [
210
184
  "wallet",
211
- "Wallet TUI",
185
+ "Wallet",
212
186
  "plugin-wallet-ui",
213
- "/wallet/tui",
214
- "InventoryTuiView",
215
- "tui",
187
+ "/wallet",
188
+ "InventoryView",
189
+ ["gui", "tui"],
216
190
  ],
217
191
  [
218
192
  "vector-browser",
@@ -221,61 +195,22 @@ const smokeViewDeclarations = [
221
195
  "/vector-browser",
222
196
  "VectorBrowserView",
223
197
  ],
224
- ["feed", "Feed", "plugin-feed", "/feed", "FeedOperatorSurface"],
225
- ["feed", "Feed TUI", "plugin-feed", "/feed/tui", "FeedTuiView", "tui"],
226
- ["views-manager", "Views", "plugin-app-control", "/views", "ViewManagerView"],
198
+ ["feed", "Feed", "plugin-feed", "/feed", "FeedView", ["gui", "tui"]],
227
199
  [
228
200
  "views-manager",
229
- "Views TUI",
201
+ "Views",
230
202
  "plugin-app-control",
231
- "/views/tui",
232
- "ViewManagerTuiView",
233
- "tui",
234
- ],
235
- [
236
- "clawville",
237
- "Clawville",
238
- "plugin-clawville",
239
- "/clawville",
240
- "ClawvilleOperatorSurface",
241
- ],
242
- [
243
- "clawville",
244
- "Clawville TUI",
245
- "plugin-clawville",
246
- "/clawville/tui",
247
- "ClawvilleTuiView",
248
- "tui",
249
- ],
250
- [
251
- "defense-of-the-agents",
252
- "Defense of the Agents",
253
- "plugin-defense-of-the-agents",
254
- "/defense-of-the-agents",
255
- "DefenseAgentsOperatorSurface",
256
- ],
257
- [
258
- "defense-of-the-agents",
259
- "Defense of the Agents TUI",
260
- "plugin-defense-of-the-agents",
261
- "/defense-of-the-agents/tui",
262
- "DefenseAgentsTuiView",
263
- "tui",
203
+ "/views",
204
+ "ViewManagerView",
205
+ ["gui", "tui"],
264
206
  ],
265
207
  [
266
208
  "screenshare",
267
209
  "Screenshare",
268
210
  "plugin-screenshare",
269
211
  "/screenshare",
270
- "ScreenshareOperatorSurface",
271
- ],
272
- [
273
- "screenshare",
274
- "Screenshare TUI",
275
- "plugin-screenshare",
276
- "/screenshare/tui",
277
- "ScreenshareTuiView",
278
- "tui",
212
+ "ScreenshareView",
213
+ ["gui", "tui"],
279
214
  ],
280
215
  [
281
216
  "social-alpha",
@@ -289,15 +224,16 @@ const smokeViewDeclarations = [
289
224
  "Task Coordinator",
290
225
  "plugin-task-coordinator",
291
226
  "/task-coordinator",
292
- "CodingAgentTasksPanel",
227
+ "TaskCoordinatorView",
228
+ ["gui", "tui"],
293
229
  ],
294
230
  [
295
- "task-coordinator",
296
- "Task Coordinator TUI",
231
+ "orchestrator",
232
+ "Orchestrator",
297
233
  "plugin-task-coordinator",
298
- "/task-coordinator/tui",
299
- "TaskCoordinatorTuiView",
300
- "tui",
234
+ "/orchestrator",
235
+ "OrchestratorView",
236
+ ["gui", "tui"],
301
237
  ],
302
238
  [
303
239
  "trajectory-logger",
@@ -305,15 +241,10 @@ const smokeViewDeclarations = [
305
241
  "plugin-trajectory-logger",
306
242
  "/trajectory-logger",
307
243
  "TrajectoryLoggerView",
244
+ ["gui", "tui"],
308
245
  ],
309
- [
310
- "trajectory-logger",
311
- "Trajectory Logger TUI",
312
- "plugin-trajectory-logger",
313
- "/trajectory-logger/tui",
314
- "TrajectoryLoggerTuiView",
315
- "tui",
316
- ],
246
+ // Training is NOT collapsed: it keeps a standalone gui route plus a separate
247
+ // tui declaration on its own `/training/tui` route.
317
248
  ["training", "Fine Tuning", "plugin-training", "/training", "FineTuningView"],
318
249
  [
319
250
  "training",
@@ -325,41 +256,74 @@ const smokeViewDeclarations = [
325
256
  ],
326
257
  ];
327
258
 
328
- const smokeViews = smokeViewDeclarations.map(
329
- ([id, label, pluginDirName, viewPath, componentExport, viewType = "gui"]) => {
330
- const encodedId = encodeURIComponent(id);
331
- const query =
332
- viewType === "tui" ? "?viewType=tui&v=ui-smoke" : "?v=ui-smoke";
333
- const bundlePath = path.join(
334
- repoRoot,
335
- "plugins",
336
- pluginDirName,
337
- "dist",
338
- "views",
339
- "bundle.js",
259
+ function smokeViewObject({
260
+ id,
261
+ label,
262
+ pluginDirName,
263
+ viewPath,
264
+ componentExport,
265
+ viewType,
266
+ }) {
267
+ const encodedId = encodeURIComponent(id);
268
+ const query = viewType === "tui" ? "?viewType=tui&v=ui-smoke" : "?v=ui-smoke";
269
+ const bundlePath = path.join(
270
+ repoRoot,
271
+ "plugins",
272
+ pluginDirName,
273
+ "dist",
274
+ "views",
275
+ "bundle.js",
276
+ );
277
+ return {
278
+ id,
279
+ label,
280
+ viewType,
281
+ pluginName: `@elizaos/${pluginDirName}`,
282
+ path: viewPath,
283
+ order: 100,
284
+ bundlePath: "dist/views/bundle.js",
285
+ bundleUrl: `/api/views/${encodedId}/bundle.js${query}`,
286
+ componentExport,
287
+ available: true,
288
+ realBundleAvailable: existsSync(bundlePath),
289
+ visibleInManager: true,
290
+ capabilities: [
291
+ {
292
+ id: "get-state",
293
+ label: "Get state",
294
+ inputSchema: { type: "object" },
295
+ },
296
+ ],
297
+ _smokePluginDirName: pluginDirName,
298
+ };
299
+ }
300
+
301
+ // A collapsed declaration carries a `modalities` array as its 6th element and
302
+ // expands to one view object per surface (gui + tui), all sharing the same
303
+ // `/<id>` route and `<Name>View` componentExport. A legacy declaration carries
304
+ // a single `viewType` string (default "gui").
305
+ const smokeViews = smokeViewDeclarations.flatMap(
306
+ ([
307
+ id,
308
+ label,
309
+ pluginDirName,
310
+ viewPath,
311
+ componentExport,
312
+ modalitiesOrViewType = "gui",
313
+ ]) => {
314
+ const viewTypes = Array.isArray(modalitiesOrViewType)
315
+ ? modalitiesOrViewType
316
+ : [modalitiesOrViewType];
317
+ return viewTypes.map((viewType) =>
318
+ smokeViewObject({
319
+ id,
320
+ label,
321
+ pluginDirName,
322
+ viewPath,
323
+ componentExport,
324
+ viewType,
325
+ }),
340
326
  );
341
- return {
342
- id,
343
- label,
344
- viewType,
345
- pluginName: `@elizaos/${pluginDirName}`,
346
- path: viewPath,
347
- order: 100,
348
- bundlePath: "dist/views/bundle.js",
349
- bundleUrl: `/api/views/${encodedId}/bundle.js${query}`,
350
- componentExport,
351
- available: true,
352
- realBundleAvailable: existsSync(bundlePath),
353
- visibleInManager: true,
354
- capabilities: [
355
- {
356
- id: "get-state",
357
- label: "Get state",
358
- inputSchema: { type: "object" },
359
- },
360
- ],
361
- _smokePluginDirName: pluginDirName,
362
- };
363
327
  },
364
328
  );
365
329
 
@@ -2099,6 +2063,15 @@ function writeSseEvent(res, payload) {
2099
2063
  res.write(`data: ${JSON.stringify(payload)}\n\n`);
2100
2064
  }
2101
2065
 
2066
+ function sendReadySseStream(req, res) {
2067
+ sendSseHeaders(req, res);
2068
+ writeSseEvent(res, { type: "ready" });
2069
+ const interval = setInterval(() => {
2070
+ res.write(": heartbeat\n\n");
2071
+ }, 15_000);
2072
+ req.on("close", () => clearInterval(interval));
2073
+ }
2074
+
2102
2075
  async function readJsonBody(req) {
2103
2076
  const chunks = [];
2104
2077
  for await (const chunk of req) {
@@ -2743,12 +2716,7 @@ async function handleDemoOrchestratorRoute(req, res, url) {
2743
2716
  const task = demoOrchestratorState.tasks.find((item) => item.id === taskId);
2744
2717
 
2745
2718
  if (action === "stream" && req.method === "GET") {
2746
- sendSseHeaders(req, res);
2747
- writeSseEvent(res, { type: "ready" });
2748
- const interval = setInterval(() => {
2749
- res.write(": heartbeat\n\n");
2750
- }, 15_000);
2751
- req.on("close", () => clearInterval(interval));
2719
+ sendReadySseStream(req, res);
2752
2720
  return true;
2753
2721
  }
2754
2722
 
@@ -3193,6 +3161,26 @@ const server = http.createServer(async (req, res) => {
3193
3161
  return;
3194
3162
  }
3195
3163
 
3164
+ if (req.method === "GET" && url.pathname === "/api/commands") {
3165
+ sendJson(req, res, 200, {
3166
+ commands: [],
3167
+ surface: url.searchParams.get("surface"),
3168
+ agentId: null,
3169
+ generatedAt: SMOKE_GENERATED_AT,
3170
+ });
3171
+ return;
3172
+ }
3173
+
3174
+ if (req.method === "GET" && url.pathname === "/api/custom-actions") {
3175
+ sendJson(req, res, 200, { actions: [] });
3176
+ return;
3177
+ }
3178
+
3179
+ if (req.method === "GET" && url.pathname === "/api/notifications") {
3180
+ sendJson(req, res, 200, { notifications: [], unreadCount: 0 });
3181
+ return;
3182
+ }
3183
+
3196
3184
  if (req.method === "GET" && url.pathname === "/api/views") {
3197
3185
  const requestedViewType = url.searchParams.get("viewType");
3198
3186
  const views =
@@ -4526,6 +4514,10 @@ const server = http.createServer(async (req, res) => {
4526
4514
  /^\/api\/orchestrator\/tasks\/([^/]+)(?:\/([^/]+))?$/.exec(url.pathname);
4527
4515
  if (orchestratorTaskMatch) {
4528
4516
  const [, taskId, action] = orchestratorTaskMatch;
4517
+ if (req.method === "GET" && action === "stream") {
4518
+ sendReadySseStream(req, res);
4519
+ return;
4520
+ }
4529
4521
  if (req.method === "GET" && action === "messages") {
4530
4522
  sendJson(req, res, 200, { items: [], nextCursor: null });
4531
4523
  return;
@@ -34,12 +34,7 @@ const runtimePackageBuildPrerequisites = [
34
34
  {
35
35
  name: "@elizaos/app-core",
36
36
  packageRoot: path.join(repoRoot, "eliza", "packages", "app-core"),
37
- requiredPaths: [
38
- path.join("dist", "index.js"),
39
- path.join("dist", "registry", "entries", "apps"),
40
- path.join("dist", "registry", "entries", "connectors"),
41
- path.join("dist", "registry", "entries", "plugins"),
42
- ],
37
+ requiredPaths: [path.join("dist", "index.js")],
43
38
  },
44
39
  {
45
40
  name: "@elizaos/plugin-companion",
@@ -0,0 +1,33 @@
1
+ import { describe, expect, it } from "vitest";
2
+
3
+ import { androidUsesAppDirFor } from "./lib/mobile-build-decisions.mjs";
4
+
5
+ // Issue #9309 §5: verify brand/whitelabel separation holds — an eliza-root build
6
+ // targets the shared canonical elizaOS Android tree, while a whitelabel build
7
+ // (or an explicit override) is forced into its own appDir tree so the two brands
8
+ // never corrupt each other's native project.
9
+ describe("androidUsesAppDirFor (brand separation)", () => {
10
+ it("eliza root build uses the shared canonical tree (targets eliza)", () => {
11
+ expect(androidUsesAppDirFor("ai.elizaos.app", {})).toBe(false);
12
+ });
13
+
14
+ it("a whitelabel app is forced into its own appDir tree", () => {
15
+ expect(androidUsesAppDirFor("com.acme.whitelabel", {})).toBe(true);
16
+ });
17
+
18
+ it("ELIZA_ANDROID_USE_APP_DIR=1 forces the app dir even for eliza", () => {
19
+ expect(
20
+ androidUsesAppDirFor("ai.elizaos.app", {
21
+ ELIZA_ANDROID_USE_APP_DIR: "1",
22
+ }),
23
+ ).toBe(true);
24
+ });
25
+
26
+ it("a non-'1' override value does not flip eliza off the shared tree", () => {
27
+ expect(
28
+ androidUsesAppDirFor("ai.elizaos.app", {
29
+ ELIZA_ANDROID_USE_APP_DIR: "0",
30
+ }),
31
+ ).toBe(false);
32
+ });
33
+ });
@@ -0,0 +1,85 @@
1
+ import { describe, expect, it } from "vitest";
2
+
3
+ import {
4
+ isIosAppStoreBuild,
5
+ shouldIncludeIosFullBunEngine,
6
+ } from "./run-mobile-build.mjs";
7
+
8
+ // Regression coverage for the prod iOS local-agent failure: an App Store /
9
+ // TestFlight build that ships without the on-device Bun engine leaves the
10
+ // in-app "start local agent" path with no runtime, and (being a non-dev build)
11
+ // the JSContext compatibility fallback is disabled — so it hard-fails with
12
+ // "the JSContext compatibility transport is disabled outside iOS development
13
+ // builds". The fix is to flag the release build as a store build so the engine
14
+ // is embedded; these tests lock that contract on the build script's own gate.
15
+
16
+ describe("iOS full-Bun engine embed gate", () => {
17
+ it("default/empty env does NOT embed the engine (the prod-regression default)", () => {
18
+ // This is exactly the state the apple-store-release.yml build job shipped
19
+ // before the fix: no variant, no engine flag → a cloud-only thin client.
20
+ expect(isIosAppStoreBuild({})).toBe(false);
21
+ expect(shouldIncludeIosFullBunEngine({})).toBe(false);
22
+ });
23
+
24
+ it("a plain direct build does not embed the engine", () => {
25
+ const env = { ELIZA_BUILD_VARIANT: "direct" };
26
+ expect(isIosAppStoreBuild(env)).toBe(false);
27
+ expect(shouldIncludeIosFullBunEngine(env)).toBe(false);
28
+ });
29
+
30
+ it("ELIZA_BUILD_VARIANT=store embeds the engine by default", () => {
31
+ const env = { ELIZA_BUILD_VARIANT: "store" };
32
+ expect(isIosAppStoreBuild(env)).toBe(true);
33
+ expect(shouldIncludeIosFullBunEngine(env)).toBe(true);
34
+ });
35
+
36
+ it("ELIZA_BUILD_VARIANT=store is case-insensitive", () => {
37
+ expect(
38
+ shouldIncludeIosFullBunEngine({ ELIZA_BUILD_VARIANT: "STORE" }),
39
+ ).toBe(true);
40
+ });
41
+
42
+ it("ELIZA_RELEASE_AUTHORITY=apple-app-store embeds the engine by default", () => {
43
+ const env = { ELIZA_RELEASE_AUTHORITY: "apple-app-store" };
44
+ expect(isIosAppStoreBuild(env)).toBe(true);
45
+ expect(shouldIncludeIosFullBunEngine(env)).toBe(true);
46
+ });
47
+
48
+ it("explicit ELIZA_IOS_FULL_BUN_ENGINE=1 embeds the engine even on a direct build", () => {
49
+ const env = {
50
+ ELIZA_BUILD_VARIANT: "direct",
51
+ ELIZA_IOS_FULL_BUN_ENGINE: "1",
52
+ };
53
+ expect(shouldIncludeIosFullBunEngine(env)).toBe(true);
54
+ });
55
+
56
+ it("a store build can opt into a cloud-only thin client (no engine)", () => {
57
+ const env = {
58
+ ELIZA_BUILD_VARIANT: "store",
59
+ ELIZA_IOS_APP_STORE_LOCAL_RUNTIME: "0",
60
+ };
61
+ expect(isIosAppStoreBuild(env)).toBe(true);
62
+ expect(shouldIncludeIosFullBunEngine(env)).toBe(false);
63
+ });
64
+
65
+ it("cloud-only opt-out is overridden by an explicit engine request", () => {
66
+ // ELIZA_IOS_FULL_BUN_ENGINE is the unconditional force switch.
67
+ const env = {
68
+ ELIZA_BUILD_VARIANT: "store",
69
+ ELIZA_IOS_APP_STORE_LOCAL_RUNTIME: "0",
70
+ ELIZA_IOS_FULL_BUN_ENGINE: "1",
71
+ };
72
+ expect(shouldIncludeIosFullBunEngine(env)).toBe(true);
73
+ });
74
+
75
+ it("the production release env (post-fix) embeds the engine", () => {
76
+ // Mirrors the env block now set on apple-store-release.yml's build-ios job.
77
+ const env = {
78
+ ELIZA_BUILD_VARIANT: "store",
79
+ ELIZA_RELEASE_AUTHORITY: "apple-app-store",
80
+ ELIZA_IOS_FULL_BUN_ENGINE: "1",
81
+ };
82
+ expect(isIosAppStoreBuild(env)).toBe(true);
83
+ expect(shouldIncludeIosFullBunEngine(env)).toBe(true);
84
+ });
85
+ });