@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.
- package/agent-bridge.d.ts +5 -5
- package/api/auth/audit.d.ts +1 -1
- package/api/auth/auth-context.d.ts +1 -1
- package/api/auth/bootstrap-token.d.ts +1 -1
- package/api/auth/sessions.d.ts +1 -1
- package/api/auth-bootstrap-routes.d.ts +1 -1
- package/api/auth-pairing-routes.d.ts +1 -1
- package/api/auth-pairing-routes.d.ts.map +1 -1
- package/api/auth-pairing-routes.js +2 -3
- package/api/auth-session-routes.d.ts +2 -2
- package/api/auth.d.ts +1 -1
- package/api/automations-compat-routes.d.ts +1 -1
- package/api/background-tasks-routes.d.ts +1 -1
- package/api/catalog-routes.d.ts +1 -1
- package/api/cloud-voice-routes.d.ts +1 -1
- package/api/compat-route-shared.d.ts +12 -5
- package/api/compat-route-shared.d.ts.map +1 -1
- package/api/compat-route-shared.js +22 -187
- package/api/database-rows-compat-routes.d.ts +1 -1
- package/api/dev-compat-routes.d.ts +1 -1
- package/api/dev-route-catalog.d.ts.map +1 -1
- package/api/dev-route-catalog.js +20 -0
- package/api/drop-status-compat-route.d.ts +3 -0
- package/api/drop-status-compat-route.d.ts.map +1 -0
- package/api/drop-status-compat-route.js +12 -0
- package/api/first-run-routes.d.ts +1 -1
- package/api/internal-routes.d.ts +1 -1
- package/api/runtime-mode-routes.d.ts +1 -1
- package/api/secrets-manager-routes.d.ts.map +1 -1
- package/api/sensitive-request-routes.d.ts +2 -2
- package/api/server-config-filter.d.ts.map +1 -1
- package/api/server-config-filter.js +0 -1
- package/api/server-first-run-helpers.d.ts.map +1 -1
- package/api/server-first-run-helpers.js +0 -3
- package/api/server.d.ts +8 -8
- package/api/server.d.ts.map +1 -1
- package/api/server.js +13 -59
- package/api/training-benchmarks.d.ts +1 -1
- package/api/training-benchmarks.d.ts.map +1 -1
- package/api/training-benchmarks.js +31 -9
- package/api/workbench-compat-routes.d.ts +1 -1
- package/benchmark/server-utils.d.ts +2 -2
- package/browser.d.ts +4 -4
- package/cli/plugins-cli.d.ts.map +1 -1
- package/cli/plugins-cli.js +5 -0
- package/cli/program/register.auth.d.ts +27 -1
- package/cli/program/register.auth.d.ts.map +1 -1
- package/cli/program/register.auth.js +187 -0
- package/cli/program/register.dashboard.d.ts.map +1 -1
- package/cli/program/register.dashboard.js +11 -1
- package/cli/program.d.ts +1 -1
- package/first-run/first-run-config.d.ts +1 -1
- package/index.d.ts +46 -47
- package/index.d.ts.map +1 -1
- package/index.js +3 -7
- package/package.json +42 -36
- package/packaging/PUBLISHING_GUIDE.md +20 -20
- package/platform/elizaos-agent-browser-stub.d.ts +0 -1
- package/platform/elizaos-agent-browser-stub.d.ts.map +1 -1
- package/platform/elizaos-agent-browser-stub.js +0 -1
- package/platform/ios-runtime-bridge.d.ts.map +1 -1
- package/platform/ios-runtime-bridge.js +0 -1
- package/platform/native-plugin-entrypoints.d.ts +2 -2
- package/platforms/android/app/build.gradle +30 -7
- package/platforms/android/app/src/main/elizavoice-jni/elizavoice-jni.cpp +179 -35
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +60 -32
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBionicInferenceServer.java +405 -65
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceNative.java +35 -0
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +13 -6
- package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png +0 -0
- package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/platforms/android/app/src/main/res/values/colors.xml +5 -1
- package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +1 -1
- package/platforms/android/app/src/main/res/values/styles.xml +4 -1
- package/platforms/electrobun/electrobun.config.ts +0 -1
- package/platforms/electrobun/native/macos/window-effects.mm +4 -0
- package/platforms/electrobun/package.json +11 -9
- package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +1 -1
- package/platforms/electrobun/remotes/runtime/src/dev/phase2-smoke.ts +10 -5
- package/platforms/electrobun/remotes/runtime/src/dev/phase3-smoke.ts +11 -15
- package/platforms/electrobun/src/application-menu.ts +0 -7
- package/platforms/electrobun/src/desktop-http-request.test.ts +30 -1
- package/platforms/electrobun/src/desktop-http-request.ts +14 -2
- package/platforms/electrobun/src/desktop-test-bridge-server.ts +28 -0
- package/platforms/electrobun/src/fatal-shutdown.test.ts +3 -7
- package/platforms/electrobun/src/index.ts +64 -13
- package/platforms/electrobun/src/lifecycle/api-base-owner.test.ts +83 -0
- package/platforms/electrobun/src/lifecycle/api-base-owner.ts +37 -16
- package/platforms/electrobun/src/native/agent.ts +28 -17
- package/platforms/electrobun/src/native/credentials.ts +6 -1
- package/platforms/electrobun/src/native/desktop-window.test.ts +142 -26
- package/platforms/electrobun/src/native/desktop.ts +8 -4
- package/platforms/electrobun/src/native/index.ts +6 -0
- package/platforms/electrobun/src/native/remote-plugin-host.ts +18 -8
- package/platforms/electrobun/src/preload.js +1 -1
- package/platforms/electrobun/src/voice/voice-live-validation.test.ts +10 -5
- package/platforms/electrobun/src/voice/voice-runtime-adapter.ts +3 -2
- package/platforms/electrobun/src/voice/voice-service.test.ts +26 -0
- package/platforms/electrobun/src/voice/voice-service.ts +57 -17
- package/platforms/electrobun/tsconfig.json +17 -1
- package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +4 -6
- package/registry/index.d.ts +1 -6
- package/registry/index.d.ts.map +1 -1
- package/registry/index.js +9 -101
- package/runtime/android-avf-microdroid-bridge.d.ts +1 -1
- package/runtime/bundled-fused-lib.d.ts +36 -0
- package/runtime/bundled-fused-lib.d.ts.map +1 -0
- package/runtime/bundled-fused-lib.js +77 -0
- package/runtime/channel-plugin-map.d.ts +1 -5
- package/runtime/channel-plugin-map.d.ts.map +1 -1
- package/runtime/channel-plugin-map.js +11 -31
- package/runtime/desktop/index.d.ts +5 -5
- package/runtime/dev-server.js +11 -2
- package/runtime/eliza.d.ts.map +1 -1
- package/runtime/eliza.js +18 -8
- package/runtime/mode/route-mode-guard.d.ts +1 -1
- package/runtime/mode/route-mode-matrix.d.ts +1 -1
- package/runtime/voice-warmup.d.ts +4 -19
- package/runtime/voice-warmup.d.ts.map +1 -1
- package/runtime/voice-warmup.js +4 -14
- package/scripts/aosp/README.md +10 -1
- package/scripts/aosp/compile-libllama-zig-pin.test.mjs +147 -0
- package/scripts/aosp/compile-libllama.mjs +446 -59
- package/scripts/aosp/compile-libllama.test.mjs +133 -0
- package/scripts/aosp/compile-shim.mjs +21 -1
- package/scripts/aosp/deploy-pixel.mjs +1 -1
- package/scripts/aosp/stage-default-models.mjs +24 -31
- package/scripts/aosp/stage-default-models.test.mjs +23 -0
- package/scripts/assert-required-bundled-packages.test.ts +22 -1
- package/scripts/build-helpers/verify-fused-symbols.mjs +33 -0
- package/scripts/build-helpers/verify-fused-symbols.test.mjs +0 -0
- package/scripts/build-image.sh +1 -3
- package/scripts/build-llama-cpp-mtp.mjs +17 -16
- package/scripts/check-i18n.mjs +0 -1
- package/scripts/copy-runtime-node-modules.ts +147 -0
- package/scripts/desktop-build.mjs +317 -4
- package/scripts/docker-ci-smoke.sh +33 -8
- package/scripts/ensure-type-package-aliases.mjs +1 -1
- package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1 -1
- package/scripts/lib/agent-source-watcher.mjs +0 -1
- package/scripts/lib/artifact-staleness.d.mts +33 -0
- package/scripts/lib/artifact-staleness.mjs +122 -0
- package/scripts/lib/artifact-staleness.test.mts +98 -0
- package/scripts/lib/duet-bridge.mjs +1 -1
- package/scripts/lib/ios-plist-url-scheme.mjs +80 -0
- package/scripts/lib/mobile-build-decisions.mjs +97 -0
- package/scripts/lib/renderer-build-manifest.d.mts +65 -0
- package/scripts/lib/renderer-build-manifest.mjs +257 -0
- package/scripts/lib/renderer-build-manifest.test.mts +277 -0
- package/scripts/lib/stage-android-agent.mjs +13 -4
- package/scripts/lib/verify-ondevice-artifact.d.mts +16 -0
- package/scripts/lib/verify-ondevice-artifact.mjs +61 -0
- package/scripts/lib/verify-ondevice-artifact.test.mts +98 -0
- package/scripts/lib/websocket-pending-queue.ts +92 -0
- package/scripts/link-docker-local-app-packages.mjs +6 -0
- package/scripts/playwright-ui-live-stack.ts +430 -144
- package/scripts/playwright-ui-smoke-api-stub.mjs +160 -168
- package/scripts/run-local-plugin-live-smoke.mjs +1 -6
- package/scripts/run-mobile-build-brand-separation.test.mts +33 -0
- package/scripts/run-mobile-build-ios-engine-gate.test.mjs +85 -0
- package/scripts/run-mobile-build-mtp-staleness.test.mts +198 -0
- package/scripts/run-mobile-build.mjs +408 -86
- package/scripts/serve-real-local-agent.ts +72 -0
- package/scripts/stage-desktop-fused-lib.mjs +43 -14
- package/scripts/verify-ondevice-artifact.mjs +111 -0
- package/scripts/voice-attribution-smoke.ts +144 -38
- package/scripts/voice-duet.mjs +6 -6
- package/scripts/voice-e2e-hardware.ts +22 -16
- package/scripts/voice-interactive.mjs +16 -45
- package/security/agent-vault-id.d.ts +1 -1
- package/security/platform-secure-store-node.d.ts +1 -1
- package/services/ambient-audio/consent.d.ts +1 -1
- package/services/ambient-audio/index.d.ts +6 -6
- package/services/ambient-audio/replay-buffer.d.ts +1 -1
- package/services/ambient-audio/response-gate.d.ts +1 -1
- package/services/ambient-audio/service.d.ts +3 -3
- package/services/connector-target-catalog.d.ts +1 -1
- package/services/sensitive-requests/index.d.ts +6 -6
- package/services/steward-sidecar/wallet-setup.d.ts +1 -1
- package/services/steward-sidecar.d.ts +3 -3
- package/services/tunnel-to-mobile/index.d.ts +1 -1
- package/services/vault-bootstrap.d.ts.map +1 -1
- package/services/vault-bootstrap.js +14 -10
- package/services/voice-profiles/diarization-pipeline.d.ts +1 -1
- package/services/voice-profiles/index.d.ts +11 -11
- package/services/voice-profiles/owner-confidence.d.ts +1 -1
- package/services/voice-profiles/private-challenge.d.ts +1 -1
- package/services/voice-profiles/store.d.ts +1 -1
- package/test/helpers/live-provider.test.ts +91 -1
- package/test/helpers/live-provider.ts +195 -51
- package/test/scripts/websocket-pending-queue.test.ts +119 -0
- package/test-support/test-helpers.d.ts +0 -33
- package/test-support/test-helpers.d.ts.map +1 -1
- package/test-support/test-helpers.js +81 -189
- package/ui-compat.d.ts +1 -0
- package/ui-compat.d.ts.map +1 -1
- package/ui-compat.js +4 -0
- package/platforms/electrobun/docs/convergence-audit.json +0 -3505
- package/platforms/electrobun/docs/convergence-audit.md +0 -694
- package/platforms/electrobun/scripts/ensure-whisper-gguf.sh +0 -55
- package/platforms/electrobun/scripts/ensure-whisper-model.sh +0 -35
- package/platforms/electrobun/scripts/generate-convergence-audit.ts +0 -1203
- package/platforms/electrobun/src/native/whisper-env.test.ts +0 -71
- package/platforms/electrobun/src/native/whisper-env.ts +0 -68
- package/registry/app-registry.d.ts +0 -14
- package/registry/app-registry.d.ts.map +0 -1
- package/registry/app-registry.js +0 -29
- package/registry/entries/apps/app-polymarket.json +0 -31
- package/registry/entries/apps/clawville.json +0 -27
- package/registry/entries/apps/companion.json +0 -28
- package/registry/entries/apps/database-viewer.json +0 -27
- package/registry/entries/apps/defense-of-the-agents.json +0 -27
- package/registry/entries/apps/documents.json +0 -30
- package/registry/entries/apps/feed.json +0 -27
- package/registry/entries/apps/hyperliquid.json +0 -31
- package/registry/entries/apps/log-viewer.json +0 -27
- package/registry/entries/apps/memory-viewer.json +0 -27
- package/registry/entries/apps/model-tester.json +0 -31
- package/registry/entries/apps/plugin-viewer.json +0 -27
- package/registry/entries/apps/relationship-viewer.json +0 -27
- package/registry/entries/apps/runtime-debugger.json +0 -27
- package/registry/entries/apps/shopify.json +0 -31
- package/registry/entries/apps/skills-viewer.json +0 -27
- package/registry/entries/apps/steward.json +0 -31
- package/registry/entries/apps/training.json +0 -54
- package/registry/entries/apps/trajectory-viewer.json +0 -27
- package/registry/entries/apps/vincent.json +0 -31
- package/registry/entries/connectors/bluebubbles.json +0 -99
- package/registry/entries/connectors/bluesky.json +0 -173
- package/registry/entries/connectors/discord.json +0 -119
- package/registry/entries/connectors/farcaster.json +0 -174
- package/registry/entries/connectors/feishu.json +0 -79
- package/registry/entries/connectors/google-chat.json +0 -120
- package/registry/entries/connectors/google.json +0 -82
- package/registry/entries/connectors/imessage.json +0 -96
- package/registry/entries/connectors/instagram.json +0 -64
- package/registry/entries/connectors/line.json +0 -86
- package/registry/entries/connectors/matrix.json +0 -94
- package/registry/entries/connectors/mattermost.json +0 -110
- package/registry/entries/connectors/msteams.json +0 -104
- package/registry/entries/connectors/nextcloud-talk.json +0 -104
- package/registry/entries/connectors/nostr.json +0 -70
- package/registry/entries/connectors/signal.json +0 -81
- package/registry/entries/connectors/slack.json +0 -102
- package/registry/entries/connectors/telegram.json +0 -71
- package/registry/entries/connectors/tlon.json +0 -94
- package/registry/entries/connectors/twitch.json +0 -110
- package/registry/entries/connectors/whatsapp.json +0 -113
- package/registry/entries/connectors/x.json +0 -231
- package/registry/entries/connectors/zalo.json +0 -112
- package/registry/entries/connectors/zalouser.json +0 -122
- package/registry/entries/plugins/agent-orchestrator.json +0 -33
- package/registry/entries/plugins/agent-skills.json +0 -72
- package/registry/entries/plugins/anthropic.json +0 -73
- package/registry/entries/plugins/app-control.json +0 -23
- package/registry/entries/plugins/auto-trader.json +0 -203
- package/registry/entries/plugins/background-runner.json +0 -26
- package/registry/entries/plugins/blooio.json +0 -102
- package/registry/entries/plugins/browser.json +0 -75
- package/registry/entries/plugins/cli.json +0 -40
- package/registry/entries/plugins/clipboard.json +0 -44
- package/registry/entries/plugins/coding-tools.json +0 -71
- package/registry/entries/plugins/commands.json +0 -63
- package/registry/entries/plugins/computeruse.json +0 -74
- package/registry/entries/plugins/copilot-proxy.json +0 -93
- package/registry/entries/plugins/directives.json +0 -63
- package/registry/entries/plugins/edge-tts.json +0 -97
- package/registry/entries/plugins/elevenlabs.json +0 -169
- package/registry/entries/plugins/elizacloud.json +0 -208
- package/registry/entries/plugins/evm.json +0 -134
- package/registry/entries/plugins/experience.json +0 -34
- package/registry/entries/plugins/facewear.json +0 -131
- package/registry/entries/plugins/form.json +0 -26
- package/registry/entries/plugins/github.json +0 -93
- package/registry/entries/plugins/gmail-watch.json +0 -25
- package/registry/entries/plugins/goals.json +0 -77
- package/registry/entries/plugins/google-genai.json +0 -106
- package/registry/entries/plugins/groq.json +0 -93
- package/registry/entries/plugins/hedera.json +0 -48
- package/registry/entries/plugins/inmemorydb.json +0 -25
- package/registry/entries/plugins/linear.json +0 -51
- package/registry/entries/plugins/local-inference.json +0 -137
- package/registry/entries/plugins/local-storage.json +0 -36
- package/registry/entries/plugins/localdb.json +0 -25
- package/registry/entries/plugins/mcp.json +0 -44
- package/registry/entries/plugins/memory.json +0 -124
- package/registry/entries/plugins/minecraft.json +0 -79
- package/registry/entries/plugins/moltbook.json +0 -83
- package/registry/entries/plugins/music.json +0 -155
- package/registry/entries/plugins/mysticism.json +0 -48
- package/registry/entries/plugins/nearai.json +0 -82
- package/registry/entries/plugins/ngrok.json +0 -69
- package/registry/entries/plugins/ollama.json +0 -96
- package/registry/entries/plugins/openai.json +0 -189
- package/registry/entries/plugins/openrouter.json +0 -188
- package/registry/entries/plugins/pdf.json +0 -26
- package/registry/entries/plugins/plugin-manager.json +0 -23
- package/registry/entries/plugins/prose.json +0 -48
- package/registry/entries/plugins/rlm.json +0 -26
- package/registry/entries/plugins/roblox.json +0 -88
- package/registry/entries/plugins/rss.json +0 -64
- package/registry/entries/plugins/s3-storage.json +0 -91
- package/registry/entries/plugins/scheduling.json +0 -35
- package/registry/entries/plugins/shell.json +0 -94
- package/registry/entries/plugins/social-alpha.json +0 -72
- package/registry/entries/plugins/tailscale.json +0 -81
- package/registry/entries/plugins/tee.json +0 -53
- package/registry/entries/plugins/todos.json +0 -26
- package/registry/entries/plugins/trajectory-logger.json +0 -33
- package/registry/entries/plugins/trust.json +0 -39
- package/registry/entries/plugins/tts.json +0 -71
- package/registry/entries/plugins/tunnel.json +0 -45
- package/registry/entries/plugins/twilio.json +0 -168
- package/registry/entries/plugins/vercel-ai-gateway.json +0 -128
- package/registry/entries/plugins/video.json +0 -23
- package/registry/entries/plugins/vision.json +0 -43
- package/registry/entries/plugins/webhooks.json +0 -23
- package/registry/entries/plugins/workflow.json +0 -25
- package/registry/entries/plugins/xai.json +0 -75
- package/registry/loader.d.ts +0 -28
- package/registry/loader.d.ts.map +0 -1
- package/registry/loader.js +0 -158
- package/registry/schema.d.ts +0 -1199
- package/registry/schema.d.ts.map +0 -1
- package/registry/schema.js +0 -300
- package/scripts/patches/llama-mobile-kokoro-tts.patch +0 -480
- package/scripts/release-workflow-drift.test.ts +0 -57
- package/test/helpers/i18n.ts +0 -5
- package/test/helpers/loopback.ts +0 -33
- package/test/helpers/react-test.ts +0 -40
- 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
|
|
87
|
+
"Companion",
|
|
82
88
|
"plugin-companion",
|
|
83
|
-
"/companion
|
|
84
|
-
"
|
|
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
|
|
95
|
+
"Contacts",
|
|
91
96
|
"plugin-contacts",
|
|
92
|
-
"/contacts
|
|
93
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
|
|
165
|
-
|
|
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
|
-
"
|
|
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
|
|
161
|
+
"Shopify",
|
|
185
162
|
"plugin-shopify-ui",
|
|
186
|
-
"/shopify
|
|
187
|
-
"
|
|
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
|
|
169
|
+
"Steward",
|
|
194
170
|
"plugin-steward-app",
|
|
195
|
-
"/steward
|
|
196
|
-
"
|
|
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
|
|
177
|
+
"Vincent",
|
|
203
178
|
"plugin-vincent",
|
|
204
|
-
"/vincent
|
|
205
|
-
"
|
|
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
|
|
185
|
+
"Wallet",
|
|
212
186
|
"plugin-wallet-ui",
|
|
213
|
-
"/wallet
|
|
214
|
-
"
|
|
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", "
|
|
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
|
|
201
|
+
"Views",
|
|
230
202
|
"plugin-app-control",
|
|
231
|
-
"/views
|
|
232
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
227
|
+
"TaskCoordinatorView",
|
|
228
|
+
["gui", "tui"],
|
|
293
229
|
],
|
|
294
230
|
[
|
|
295
|
-
"
|
|
296
|
-
"
|
|
231
|
+
"orchestrator",
|
|
232
|
+
"Orchestrator",
|
|
297
233
|
"plugin-task-coordinator",
|
|
298
|
-
"/
|
|
299
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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
|
-
|
|
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
|
+
});
|