@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
@@ -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
+ });