@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
@@ -0,0 +1,198 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
6
+
7
+ import {
8
+ MTP_FORK_SRC_CANDIDATES,
9
+ mtpBuilderRepoRoot,
10
+ mtpForceRebuildRequested,
11
+ mtpSliceReuse,
12
+ } from "./lib/mobile-build-decisions.mjs";
13
+
14
+ // Far-future mtimes keep these tests independent of the checkout's own file
15
+ // timestamps (the worktree stamps every file at checkout time, including the
16
+ // real MTP_BUILD_SCRIPT that mtpSliceReuse folds into its source set).
17
+ const FUTURE_ARTIFACT = new Date("2031-01-01T00:00:00Z").getTime();
18
+ const OLDER_SOURCE = new Date("2030-01-01T00:00:00Z").getTime();
19
+ const NEWER_SOURCE = new Date("2032-01-01T00:00:00Z").getTime();
20
+
21
+ let tmp: string;
22
+
23
+ beforeEach(() => {
24
+ tmp = fs.mkdtempSync(path.join(os.tmpdir(), "mtp-staleness-"));
25
+ });
26
+
27
+ afterEach(() => {
28
+ fs.rmSync(tmp, { recursive: true, force: true });
29
+ });
30
+
31
+ function touch(file: string, mtimeMs: number) {
32
+ fs.mkdirSync(path.dirname(file), { recursive: true });
33
+ fs.writeFileSync(file, "x");
34
+ fs.utimesSync(file, mtimeMs / 1000, mtimeMs / 1000);
35
+ }
36
+
37
+ function makeForkSrc(sourceMtime: number) {
38
+ const fork = path.join(tmp, "fork");
39
+ touch(path.join(fork, "CMakeLists.txt"), sourceMtime);
40
+ touch(path.join(fork, "ggml", "src", "ggml.c"), sourceMtime);
41
+ touch(path.join(fork, "src", "llama.cpp"), sourceMtime);
42
+ return fork;
43
+ }
44
+
45
+ function writeCapabilities(revision: string | null, mtimeMs: number) {
46
+ const outDir = path.join(tmp, "mtp-out");
47
+ const capabilities = path.join(outDir, "CAPABILITIES.json");
48
+ fs.mkdirSync(outDir, { recursive: true });
49
+ fs.writeFileSync(capabilities, JSON.stringify({ fork: { revision } }));
50
+ fs.utimesSync(capabilities, mtimeMs / 1000, mtimeMs / 1000);
51
+ return capabilities;
52
+ }
53
+
54
+ describe("mtpSliceReuse", () => {
55
+ it("is not reusable when CAPABILITIES.json is missing", () => {
56
+ const fork = makeForkSrc(OLDER_SOURCE);
57
+ const result = mtpSliceReuse(
58
+ path.join(tmp, "mtp-out", "CAPABILITIES.json"),
59
+ fork,
60
+ "rev-a",
61
+ );
62
+ expect(result.reusable).toBe(false);
63
+ expect(result.reason).toMatch(/no CAPABILITIES\.json/);
64
+ });
65
+
66
+ it("is not reusable when the fork revision changed", () => {
67
+ const fork = makeForkSrc(OLDER_SOURCE);
68
+ const caps = writeCapabilities("rev-a", FUTURE_ARTIFACT);
69
+ const result = mtpSliceReuse(caps, fork, "rev-b");
70
+ expect(result.reusable).toBe(false);
71
+ expect(result.reason).toMatch(/fork revision changed/);
72
+ });
73
+
74
+ it("is not reusable when a fork source is newer than the artifact (stale kernels)", () => {
75
+ const fork = makeForkSrc(NEWER_SOURCE);
76
+ const caps = writeCapabilities("rev-a", FUTURE_ARTIFACT);
77
+ const result = mtpSliceReuse(caps, fork, "rev-a");
78
+ expect(result.reusable).toBe(false);
79
+ expect(result.reason).toMatch(/source newer than artifact/);
80
+ });
81
+
82
+ it("is reusable when revision matches and the artifact is newer than sources", () => {
83
+ const fork = makeForkSrc(OLDER_SOURCE);
84
+ const caps = writeCapabilities("rev-a", FUTURE_ARTIFACT);
85
+ const result = mtpSliceReuse(caps, fork, "rev-a");
86
+ expect(result.reusable).toBe(true);
87
+ expect(result.reason).toBe("fresh");
88
+ });
89
+
90
+ it("falls back to the mtime check (not a forced rebuild) when git revision is unknown", () => {
91
+ const fork = makeForkSrc(OLDER_SOURCE);
92
+ const caps = writeCapabilities("rev-a", FUTURE_ARTIFACT);
93
+ // currentRevision unknown (git failed in CI) → revision check is skipped,
94
+ // and the fresh mtime keeps the slice reusable rather than rebuilding blindly.
95
+ const result = mtpSliceReuse(caps, fork, null);
96
+ expect(result.reusable).toBe(true);
97
+ });
98
+
99
+ it("does NOT spuriously rebuild when the recorded revision is the 'unknown' sentinel", () => {
100
+ const fork = makeForkSrc(OLDER_SOURCE);
101
+ // Slice built when git was unavailable → recorded "unknown"; now git works
102
+ // and returns a real SHA. The "unknown" sentinel must normalize to null so
103
+ // it falls through to the (fresh) mtime check instead of rebuilding.
104
+ const caps = writeCapabilities("unknown", FUTURE_ARTIFACT);
105
+ const result = mtpSliceReuse(caps, fork, "v1.2.3-real-sha");
106
+ expect(result.reusable).toBe(true);
107
+ });
108
+
109
+ it("still catches a stale slice even when the recorded revision is 'unknown'", () => {
110
+ const fork = makeForkSrc(NEWER_SOURCE);
111
+ const caps = writeCapabilities("unknown", FUTURE_ARTIFACT);
112
+ const result = mtpSliceReuse(caps, fork, "v1.2.3-real-sha");
113
+ expect(result.reusable).toBe(false);
114
+ expect(result.reason).toMatch(/source newer than artifact/);
115
+ });
116
+ });
117
+
118
+ describe("MTP_FORK_SRC_CANDIDATES (no drift vs the builder)", () => {
119
+ it("mirrors build-llama-cpp-mtp.mjs: the in-repo fork + the ios-deps fallback, and nothing divergent", () => {
120
+ const here = path.dirname(fileURLToPath(import.meta.url));
121
+ const repoRoot = path.resolve(here, "..", "..", "..");
122
+ const forkSuffix = path.join(
123
+ "plugins",
124
+ "plugin-local-inference",
125
+ "native",
126
+ "llama.cpp",
127
+ );
128
+ const iosDepsSuffix = path.join(
129
+ "packages",
130
+ "native",
131
+ "ios-deps",
132
+ "llama.cpp",
133
+ "src",
134
+ );
135
+
136
+ expect(repoRoot).toBe(mtpBuilderRepoRoot);
137
+ expect(MTP_FORK_SRC_CANDIDATES).toEqual(
138
+ [
139
+ process.env.ELIZA_MTP_LLAMA_CPP_SRC?.trim(),
140
+ path.join(
141
+ repoRoot,
142
+ "plugins",
143
+ "plugin-local-inference",
144
+ "native",
145
+ "llama.cpp",
146
+ ),
147
+ path.join(
148
+ repoRoot,
149
+ "packages",
150
+ "native",
151
+ "ios-deps",
152
+ "llama.cpp",
153
+ "src",
154
+ ),
155
+ ].filter(Boolean),
156
+ );
157
+ expect(MTP_FORK_SRC_CANDIDATES.some((c) => c.endsWith(forkSuffix))).toBe(
158
+ true,
159
+ );
160
+ expect(MTP_FORK_SRC_CANDIDATES.some((c) => c.endsWith(iosDepsSuffix))).toBe(
161
+ true,
162
+ );
163
+ // The previously-divergent `eliza/plugins` candidate (absent from the
164
+ // builder) must NOT reappear — that was the drift the builder never had.
165
+ // Check the path RELATIVE to the repo root: the legit candidate resolves to
166
+ // `plugins/plugin-local-inference/…`; the old divergent one resolved to a
167
+ // nested `eliza/plugins/plugin-local-inference/…`. (An absolute substring
168
+ // check false-positives because the repo root itself is named `eliza`.)
169
+ expect(
170
+ MTP_FORK_SRC_CANDIDATES.some((c) =>
171
+ path
172
+ .relative(mtpBuilderRepoRoot, c)
173
+ .includes(path.join("eliza", "plugins", "plugin-local-inference")),
174
+ ),
175
+ ).toBe(false);
176
+ });
177
+ });
178
+
179
+ describe("mtpForceRebuildRequested", () => {
180
+ it("does NOT force a rebuild for a fresh, reusable slice", () => {
181
+ expect(mtpForceRebuildRequested({ reusable: true }, {})).toBe(false);
182
+ });
183
+
184
+ it("forces a rebuild when the slice is stale (so the child does not reuse it)", () => {
185
+ expect(
186
+ mtpForceRebuildRequested({ reusable: false, reason: "stale" }, {}),
187
+ ).toBe(true);
188
+ });
189
+
190
+ it("forces a rebuild when the operator override is set, even if reusable", () => {
191
+ expect(
192
+ mtpForceRebuildRequested(
193
+ { reusable: true },
194
+ { ELIZA_IOS_REBUILD_MTP: "1" },
195
+ ),
196
+ ).toBe(true);
197
+ });
198
+ });