@elizaos/app-core 2.0.3-beta.4 → 2.0.3-beta.6
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/api/i18n-locale-routes.d.ts +7 -0
- package/api/i18n-locale-routes.d.ts.map +1 -0
- package/api/i18n-locale-routes.js +58 -0
- package/api/ios-local-agent-transport.d.ts +3 -0
- package/api/ios-local-agent-transport.d.ts.map +1 -1
- package/api/ios-local-agent-transport.js +22 -1
- package/api/server.d.ts.map +1 -1
- package/api/server.js +5 -0
- package/benchmark/cerebras-autowire.d.ts.map +1 -1
- package/benchmark/cerebras-autowire.js +9 -2
- package/package.json +36 -36
- package/packaging/debian/rules +1 -1
- package/packaging/flatpak/generate-sources.sh +6 -1
- package/packaging/snap/snapcraft.yaml +15 -11
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +2 -1
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +5 -0
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaStartupTrace.java +28 -0
- package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +1 -1
- package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +1 -0
- package/platforms/electrobun/electrobun.config.ts +31 -1
- package/platforms/electrobun/package.json +10 -10
- package/platforms/electrobun/remotes/local-model/README.md +2 -5
- package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +0 -16
- package/platforms/electrobun/remotes/local-model/src/dev/phase8-smoke.ts +0 -2
- package/platforms/electrobun/scripts/smoke-test.sh +8 -2
- package/platforms/electrobun/scripts/stage-macos-release-artifacts.sh +8 -2
- package/platforms/electrobun/scripts/sync-web-assets.mjs +31 -2
- package/platforms/electrobun/src/bridge/electrobun-boot-config.ts +8 -0
- package/platforms/electrobun/src/bridge/electrobun-crypto-ready.ts +5 -1
- package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +5 -11
- package/platforms/electrobun/src/preload.js +1 -1
- package/platforms/ios/App/App/Base.lproj/Main.storyboard +1 -1
- package/platforms/ios/App/App/ElizaBridgeViewController.swift +22 -0
- package/platforms/ios/App/App/ElizaStartupTrace.swift +12 -0
- package/platforms/ios/App/App.xcodeproj/project.pbxproj +8 -0
- package/runtime/eliza.d.ts.map +1 -1
- package/runtime/eliza.js +18 -0
- package/runtime/voice-warmup.d.ts +4 -4
- package/runtime/voice-warmup.d.ts.map +1 -1
- package/runtime/voice-warmup.js +4 -4
- package/scripts/aosp/compile-libllama.mjs +25 -5
- package/scripts/aosp/compile-libllama.test.mjs +17 -1
- package/scripts/assert-required-bundled-packages.test.ts +24 -2
- package/scripts/benchmark-preflight.mjs +31 -2
- package/scripts/build-bundled-agent-skills-artifact.mjs +32 -8
- package/scripts/build-bundled-orchestrator-artifact.mjs +34 -12
- package/scripts/build-llama-cpp-mtp.mjs +27 -3
- package/scripts/build-patched-electrobun-cli.mjs +30 -2
- package/scripts/bun-riscv64/bun-version.json +1 -1
- package/scripts/bun-riscv64/validate.sh +21 -8
- package/scripts/check-real-local-reset.ts +13 -1
- package/scripts/check-sms-gateway-completion-audit.mjs +96 -31
- package/scripts/check-sms-gateway-readiness.mjs +54 -17
- package/scripts/clean-repo.mjs +21 -3
- package/scripts/copy-runtime-node-modules.ts +68 -63
- package/scripts/desktop-build.mjs +46 -5
- package/scripts/dev-platform-no-install.test.mjs +19 -0
- package/scripts/dev-platform.mjs +6 -2
- package/scripts/disable-local-eliza-workspace.mjs +23 -1
- package/scripts/docker-ci-smoke.sh +6 -5
- package/scripts/ensure-avatars.mjs +18 -5
- package/scripts/ensure-bundled-workspaces.mjs +4 -15
- package/scripts/ensure-type-package-aliases.mjs +47 -3
- package/scripts/ffi-stub/Makefile +5 -2
- package/scripts/ios-xcframework/build-xcframework.mjs +22 -11
- package/scripts/ios-xcframework/run-physical-device-smoke.mjs +99 -6
- package/scripts/ios-xcframework/runtime-symbol-shim.c +560 -105
- package/scripts/lib/agent-source-watcher.test.mjs +24 -4
- package/scripts/lib/apple-entitlement-audit.test.mjs +19 -2
- package/scripts/lib/artifact-staleness.test.mts +18 -1
- package/scripts/lib/patch-bun-exports.mjs +20 -2
- package/scripts/lib/patch-bun-exports.test.mjs +108 -4
- package/scripts/lib/renderer-build-manifest.test.mts +18 -1
- package/scripts/lib/stage-android-agent.mjs +16 -3
- package/scripts/lib/verify-ondevice-artifact.test.mts +18 -1
- package/scripts/link-docker-local-app-packages.mjs +26 -1
- package/scripts/mas-smoke.test.mjs +25 -9
- package/scripts/omnivoice-fuse/prepare.mjs +27 -4
- package/scripts/package-electrobun-linux.mjs +22 -7
- package/scripts/patch-deps.mjs +18 -5
- package/scripts/playwright-ui-live-stack.ts +16 -3
- package/scripts/playwright-ui-smoke-api-stub.mjs +167 -2
- package/scripts/prepare-ios-cocoapods.sh +5 -1
- package/scripts/prune-cdn-local-assets.mjs +52 -5
- package/scripts/run-mobile-build-android-app-actions.test.mjs +19 -1
- package/scripts/run-mobile-build-mtp-staleness.test.mts +20 -4
- package/scripts/run-mobile-build.mjs +74 -16
- package/scripts/stage-android-agent.test.mjs +19 -1
- package/scripts/stage-desktop-fused-lib.mjs +26 -1
- package/scripts/sync-desktop-renderer.mjs +53 -12
- package/scripts/test-sms-gateway-software.mjs +20 -4
- package/cli/command-format.d.ts +0 -2
- package/cli/command-format.d.ts.map +0 -1
- package/cli/command-format.js +0 -20
- package/register-runtime-hooks.d.ts +0 -2
- package/register-runtime-hooks.d.ts.map +0 -1
- package/register-runtime-hooks.js +0 -19
|
@@ -199,6 +199,11 @@ const iosBunRuntimePackageRoot = path.join(
|
|
|
199
199
|
"native",
|
|
200
200
|
"bun-runtime",
|
|
201
201
|
);
|
|
202
|
+
const RM_PATH_RECURSIVE_SCRIPT = path.join(
|
|
203
|
+
packagesRoot,
|
|
204
|
+
"scripts",
|
|
205
|
+
"rm-path-recursive.mjs",
|
|
206
|
+
);
|
|
202
207
|
const defaultIosBunEngineXcframework = path.join(
|
|
203
208
|
iosBunRuntimePackageRoot,
|
|
204
209
|
"artifacts",
|
|
@@ -413,6 +418,28 @@ function runCaptureSync(command, args, { cwd = repoRoot, maxBuffer } = {}) {
|
|
|
413
418
|
});
|
|
414
419
|
}
|
|
415
420
|
|
|
421
|
+
function rmRecursive(pathToRemove) {
|
|
422
|
+
const result = spawnSync(
|
|
423
|
+
process.execPath,
|
|
424
|
+
[RM_PATH_RECURSIVE_SCRIPT, path.resolve(pathToRemove)],
|
|
425
|
+
{
|
|
426
|
+
cwd: repoRoot,
|
|
427
|
+
encoding: "utf8",
|
|
428
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
429
|
+
},
|
|
430
|
+
);
|
|
431
|
+
if (result.status !== 0) {
|
|
432
|
+
const reason =
|
|
433
|
+
result.stderr?.trim() ||
|
|
434
|
+
result.stdout?.trim() ||
|
|
435
|
+
result.error?.message ||
|
|
436
|
+
`exit status ${String(result.status)}`;
|
|
437
|
+
throw new Error(
|
|
438
|
+
`[mobile-build] failed to recursively remove ${pathToRemove}: ${reason}`,
|
|
439
|
+
);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
416
443
|
function resolveBunExecutable() {
|
|
417
444
|
if (process.versions.bun) return process.execPath;
|
|
418
445
|
return resolveExecutable("bun");
|
|
@@ -979,6 +1006,40 @@ export function resolveMobileBuildPolicy(platform) {
|
|
|
979
1006
|
}
|
|
980
1007
|
|
|
981
1008
|
async function buildWeb(platform) {
|
|
1009
|
+
// Auto-skip the full Vite renderer build when it is NOT explicitly forced and
|
|
1010
|
+
// the existing dist is already up-to-date for this variant/target (#9626).
|
|
1011
|
+
// This reuses the same manifest + staleness checks as the explicit-skip path
|
|
1012
|
+
// below, so the loud-fail-on-stale guarantee is preserved: a stale or
|
|
1013
|
+
// mismatched dist simply does not match here and falls through to a rebuild.
|
|
1014
|
+
// Explicit ELIZA_MOBILE_SKIP_WEB_BUILD=1 keeps its force-reuse semantics below.
|
|
1015
|
+
if (process.env.ELIZA_MOBILE_SKIP_WEB_BUILD !== "1") {
|
|
1016
|
+
const autoDistDir = path.join(appDir, "dist");
|
|
1017
|
+
if (fs.existsSync(path.join(autoDistDir, "index.html"))) {
|
|
1018
|
+
const autoPolicy = resolveMobileBuildPolicy(platform);
|
|
1019
|
+
const autoVariant =
|
|
1020
|
+
process.env.ELIZA_BUILD_VARIANT || autoPolicy.buildVariant;
|
|
1021
|
+
const autoManifest = readRendererBuildManifest(autoDistDir);
|
|
1022
|
+
const variantOk =
|
|
1023
|
+
autoManifest != null &&
|
|
1024
|
+
(autoManifest.variant == null || autoManifest.variant === autoVariant);
|
|
1025
|
+
const targetOk =
|
|
1026
|
+
autoManifest != null &&
|
|
1027
|
+
(autoManifest.capacitorTarget == null ||
|
|
1028
|
+
autoManifest.capacitorTarget === autoPolicy.capacitorTarget);
|
|
1029
|
+
if (
|
|
1030
|
+
autoManifest != null &&
|
|
1031
|
+
variantOk &&
|
|
1032
|
+
targetOk &&
|
|
1033
|
+
!viteRendererBuildNeeded(appDir, repoRoot)
|
|
1034
|
+
) {
|
|
1035
|
+
console.log(
|
|
1036
|
+
"[mobile-build] Auto-skipping web build: existing dist is up-to-date " +
|
|
1037
|
+
`(buildId=${autoManifest.buildId.slice(0, 12)})`,
|
|
1038
|
+
);
|
|
1039
|
+
return;
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
982
1043
|
if (process.env.ELIZA_MOBILE_SKIP_WEB_BUILD === "1") {
|
|
983
1044
|
const distDir = path.join(appDir, "dist");
|
|
984
1045
|
const indexPath = path.join(distDir, "index.html");
|
|
@@ -1239,7 +1300,7 @@ function stageIosAgentRuntime({
|
|
|
1239
1300
|
}
|
|
1240
1301
|
|
|
1241
1302
|
const targetDir = path.join(iosDir, "App", "public", "agent");
|
|
1242
|
-
|
|
1303
|
+
rmRecursive(targetDir);
|
|
1243
1304
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
1244
1305
|
const filesToStage = assetPlan.agentAssets ?? fs.readdirSync(sourceDir);
|
|
1245
1306
|
for (const file of filesToStage) {
|
|
@@ -1286,7 +1347,7 @@ function removeIosLocalExecutionAssets() {
|
|
|
1286
1347
|
let removed = 0;
|
|
1287
1348
|
for (const target of targets) {
|
|
1288
1349
|
if (!fs.existsSync(target)) continue;
|
|
1289
|
-
|
|
1350
|
+
rmRecursive(target);
|
|
1290
1351
|
removed += 1;
|
|
1291
1352
|
}
|
|
1292
1353
|
if (removed > 0) {
|
|
@@ -1408,7 +1469,7 @@ function mirrorCapacitorWebPayloadIntoAndroidDir() {
|
|
|
1408
1469
|
fs.realpathSync(syncedAssets) === fs.realpathSync(targetAssets);
|
|
1409
1470
|
if (hasSyncedPublic && !sameTree) {
|
|
1410
1471
|
fs.mkdirSync(targetAssets, { recursive: true });
|
|
1411
|
-
|
|
1472
|
+
rmRecursive(targetPublic);
|
|
1412
1473
|
fs.cpSync(syncedPublic, targetPublic, { recursive: true });
|
|
1413
1474
|
for (const cfg of ["capacitor.config.json", "capacitor.plugins.json"]) {
|
|
1414
1475
|
const src = path.join(syncedAssets, cfg);
|
|
@@ -1447,10 +1508,7 @@ function mirrorCapacitorWebPayloadIntoAndroidDir() {
|
|
|
1447
1508
|
fs.existsSync(targetAssets)
|
|
1448
1509
|
) {
|
|
1449
1510
|
fs.mkdirSync(targetPublic, { recursive: true });
|
|
1450
|
-
|
|
1451
|
-
recursive: true,
|
|
1452
|
-
force: true,
|
|
1453
|
-
});
|
|
1511
|
+
rmRecursive(path.join(targetPublic, "assets"));
|
|
1454
1512
|
fs.cpSync(freshWeb, targetPublic, { recursive: true });
|
|
1455
1513
|
console.log(
|
|
1456
1514
|
`[mobile-build] Stale-web guard: overlaid fresh ${path.relative(repoRoot, freshWeb)} → ${path.relative(repoRoot, targetPublic)}`,
|
|
@@ -2475,7 +2533,7 @@ function removeStaleAndroidJavaSourceRoots(
|
|
|
2475
2533
|
shouldRemoveAndroidJavaSourceRoot(candidate, dstJava, protectedRoots) &&
|
|
2476
2534
|
fs.existsSync(candidate)
|
|
2477
2535
|
) {
|
|
2478
|
-
|
|
2536
|
+
rmRecursive(candidate);
|
|
2479
2537
|
}
|
|
2480
2538
|
}
|
|
2481
2539
|
}
|
|
@@ -2997,7 +3055,7 @@ function overlayAndroid({ includeAospRoleLaunchers = false } = {}) {
|
|
|
2997
3055
|
protectedJavaRoots,
|
|
2998
3056
|
)
|
|
2999
3057
|
) {
|
|
3000
|
-
|
|
3058
|
+
rmRecursive(staleJava);
|
|
3001
3059
|
}
|
|
3002
3060
|
}
|
|
3003
3061
|
fs.mkdirSync(dstJava, { recursive: true });
|
|
@@ -3074,7 +3132,7 @@ function overlayAndroid({ includeAospRoleLaunchers = false } = {}) {
|
|
|
3074
3132
|
path.resolve(srcJava) !== path.resolve(templateJava) &&
|
|
3075
3133
|
path.resolve(srcJava) !== path.resolve(dstJava)
|
|
3076
3134
|
) {
|
|
3077
|
-
|
|
3135
|
+
rmRecursive(srcJava);
|
|
3078
3136
|
}
|
|
3079
3137
|
console.log("[mobile-build] Overlaid Android Java sources.");
|
|
3080
3138
|
}
|
|
@@ -5105,7 +5163,7 @@ async function ensureIosLlamaCppVendoredFramework({
|
|
|
5105
5163
|
await ensureMtpIosTarget(simulatorTarget);
|
|
5106
5164
|
|
|
5107
5165
|
fs.mkdirSync(xcframeworksDir, { recursive: true });
|
|
5108
|
-
|
|
5166
|
+
rmRecursive(xcframeworkDir);
|
|
5109
5167
|
await run("node", [
|
|
5110
5168
|
IOS_XCFRAMEWORK_BUILD_SCRIPT,
|
|
5111
5169
|
"--output",
|
|
@@ -5136,7 +5194,7 @@ async function ensureIosLlamaCppVendoredFramework({
|
|
|
5136
5194
|
"ios",
|
|
5137
5195
|
`.${path.basename(stale, ".framework")}-stock-archive`,
|
|
5138
5196
|
);
|
|
5139
|
-
|
|
5197
|
+
rmRecursive(archived);
|
|
5140
5198
|
fs.renameSync(stale, archived);
|
|
5141
5199
|
console.log(
|
|
5142
5200
|
`[mobile-build] Archived stock npm framework: ${stale} -> ${archived} ` +
|
|
@@ -5471,7 +5529,7 @@ function stageIosFullBunEngineForPodspec(framework) {
|
|
|
5471
5529
|
console.log(
|
|
5472
5530
|
`[mobile-build] staging external iOS full Bun engine for CocoaPods: ${resolved} -> ${defaultIosBunEngineXcframework}`,
|
|
5473
5531
|
);
|
|
5474
|
-
|
|
5532
|
+
rmRecursive(defaultIosBunEngineXcframework);
|
|
5475
5533
|
fs.mkdirSync(path.dirname(defaultIosBunEngineXcframework), {
|
|
5476
5534
|
recursive: true,
|
|
5477
5535
|
});
|
|
@@ -6056,7 +6114,7 @@ export function removeInactiveAndroidJavaSourceRoots(javaRoots, activeRoot) {
|
|
|
6056
6114
|
if (resolved === active || seen.has(resolved)) continue;
|
|
6057
6115
|
seen.add(resolved);
|
|
6058
6116
|
if (!fs.existsSync(root)) continue;
|
|
6059
|
-
|
|
6117
|
+
rmRecursive(root);
|
|
6060
6118
|
removed += 1;
|
|
6061
6119
|
}
|
|
6062
6120
|
return removed;
|
|
@@ -6066,7 +6124,7 @@ function removeCloudNativeArtifacts() {
|
|
|
6066
6124
|
const assetsRoot = path.join(androidDir, "app", "src", "main", "assets");
|
|
6067
6125
|
const stagedAgentAssets = path.join(assetsRoot, "agent");
|
|
6068
6126
|
if (fs.existsSync(stagedAgentAssets)) {
|
|
6069
|
-
|
|
6127
|
+
rmRecursive(stagedAgentAssets);
|
|
6070
6128
|
console.log(
|
|
6071
6129
|
"[mobile-build] Removed staged on-device agent runtime under assets/agent/.",
|
|
6072
6130
|
);
|
|
@@ -7417,7 +7475,7 @@ function writeAndroidSystemProvenance(apkPath) {
|
|
|
7417
7475
|
);
|
|
7418
7476
|
}
|
|
7419
7477
|
} finally {
|
|
7420
|
-
|
|
7478
|
+
rmRecursive(tmpDir);
|
|
7421
7479
|
}
|
|
7422
7480
|
}
|
|
7423
7481
|
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
2
3
|
import fs from "node:fs";
|
|
3
4
|
import os from "node:os";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
import test from "node:test";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
6
8
|
|
|
7
9
|
import { __testables } from "./lib/stage-android-agent.mjs";
|
|
8
10
|
|
|
11
|
+
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const repoRoot = path.resolve(scriptDir, "..", "..", "..");
|
|
13
|
+
const cleanupHelperScript = path.join(
|
|
14
|
+
repoRoot,
|
|
15
|
+
"packages",
|
|
16
|
+
"scripts",
|
|
17
|
+
"rm-path-recursive.mjs",
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
function removePathRecursive(targetPath) {
|
|
21
|
+
execFileSync(process.execPath, [cleanupHelperScript, targetPath], {
|
|
22
|
+
cwd: repoRoot,
|
|
23
|
+
stdio: "inherit",
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
9
27
|
function withEnv(values, fn) {
|
|
10
28
|
const prior = {};
|
|
11
29
|
for (const key of Object.keys(values)) {
|
|
@@ -36,7 +54,7 @@ test("riscv64 Bun artifact path resolves from the ELIZA_BUN_RISCV64_FILE env", (
|
|
|
36
54
|
);
|
|
37
55
|
assert.equal(resolved, artifact);
|
|
38
56
|
} finally {
|
|
39
|
-
|
|
57
|
+
removePathRecursive(tmp);
|
|
40
58
|
}
|
|
41
59
|
});
|
|
42
60
|
|
|
@@ -48,6 +48,12 @@ import { fileURLToPath } from "node:url";
|
|
|
48
48
|
|
|
49
49
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
50
50
|
const repoRoot = path.resolve(__dirname, "..", "..", "..");
|
|
51
|
+
const cleanupHelperScript = path.join(
|
|
52
|
+
repoRoot,
|
|
53
|
+
"packages",
|
|
54
|
+
"scripts",
|
|
55
|
+
"rm-path-recursive.mjs",
|
|
56
|
+
);
|
|
51
57
|
const forkSrc = path.join(
|
|
52
58
|
repoRoot,
|
|
53
59
|
"plugins/plugin-local-inference/native/llama.cpp",
|
|
@@ -67,6 +73,25 @@ function run(cmd, args, opts = {}) {
|
|
|
67
73
|
die(`${cmd} exited ${res.status ?? res.signal}`);
|
|
68
74
|
}
|
|
69
75
|
}
|
|
76
|
+
function removePathRecursive(targetPath) {
|
|
77
|
+
const res = spawnSync(
|
|
78
|
+
"node",
|
|
79
|
+
[cleanupHelperScript, path.relative(repoRoot, targetPath)],
|
|
80
|
+
{
|
|
81
|
+
cwd: repoRoot,
|
|
82
|
+
encoding: "utf8",
|
|
83
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
84
|
+
},
|
|
85
|
+
);
|
|
86
|
+
if (res.error) throw res.error;
|
|
87
|
+
if (res.status !== 0) {
|
|
88
|
+
die(
|
|
89
|
+
[`failed to remove ${targetPath}`, res.stdout.trim(), res.stderr.trim()]
|
|
90
|
+
.filter(Boolean)
|
|
91
|
+
.join("\n"),
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
70
95
|
function have(cmd, args = ["--version"]) {
|
|
71
96
|
try {
|
|
72
97
|
const res = spawnSync(cmd, args, { stdio: "ignore" });
|
|
@@ -261,7 +286,7 @@ const outDir =
|
|
|
261
286
|
outOverride || path.join(resolveStateDir(), "local-inference", "lib");
|
|
262
287
|
|
|
263
288
|
if (force && existsSync(buildDir)) {
|
|
264
|
-
|
|
289
|
+
removePathRecursive(buildDir);
|
|
265
290
|
}
|
|
266
291
|
mkdirSync(buildDir, { recursive: true });
|
|
267
292
|
mkdirSync(outDir, { recursive: true });
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { spawn, spawnSync } from "node:child_process";
|
|
4
|
-
import {
|
|
5
|
-
cpSync,
|
|
6
|
-
existsSync,
|
|
7
|
-
mkdirSync,
|
|
8
|
-
rmSync,
|
|
9
|
-
statSync,
|
|
10
|
-
watch,
|
|
11
|
-
} from "node:fs";
|
|
4
|
+
import { cpSync, existsSync, mkdirSync, statSync, watch } from "node:fs";
|
|
12
5
|
import path from "node:path";
|
|
13
6
|
|
|
7
|
+
import { resolveMainAppDir } from "./lib/app-dir.mjs";
|
|
14
8
|
import { signalSpawnedProcessTree } from "./lib/kill-process-tree.mjs";
|
|
9
|
+
import { resolveRepoRootFromImportMeta } from "./lib/repo-root.mjs";
|
|
15
10
|
|
|
16
|
-
const ROOT =
|
|
11
|
+
const ROOT = resolveRepoRootFromImportMeta(import.meta.url, {
|
|
12
|
+
fallbackToCwd: true,
|
|
13
|
+
});
|
|
17
14
|
const ARGS = process.argv.slice(2);
|
|
18
15
|
|
|
19
|
-
const APP_DIR =
|
|
16
|
+
const APP_DIR = resolveMainAppDir(ROOT, "app");
|
|
20
17
|
const DIST_DIR = path.join(APP_DIR, "dist");
|
|
18
|
+
const CLEANUP_HELPER_SCRIPT = resolveCleanupHelperScript();
|
|
21
19
|
const APP_PATH_ARG =
|
|
22
20
|
getArgValue("app-path") || process.env.ELIZA_DESKTOP_APP_PATH || null;
|
|
23
21
|
const RENDERER_PATH_ARG =
|
|
@@ -45,6 +43,43 @@ let activeBuildProcess = null;
|
|
|
45
43
|
|
|
46
44
|
const WATCH_SYNC_DEBOUNCE_MS = 250;
|
|
47
45
|
|
|
46
|
+
function resolveCleanupHelperScript() {
|
|
47
|
+
const candidates = [
|
|
48
|
+
path.join(ROOT, "packages", "scripts", "rm-path-recursive.mjs"),
|
|
49
|
+
path.join(ROOT, "eliza", "packages", "scripts", "rm-path-recursive.mjs"),
|
|
50
|
+
];
|
|
51
|
+
return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function removePathRecursive(targetPath) {
|
|
55
|
+
if (!existsSync(targetPath)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const result = spawnSync(
|
|
60
|
+
"node",
|
|
61
|
+
[CLEANUP_HELPER_SCRIPT, path.relative(ROOT, targetPath)],
|
|
62
|
+
{
|
|
63
|
+
cwd: ROOT,
|
|
64
|
+
encoding: "utf8",
|
|
65
|
+
stdio: "pipe",
|
|
66
|
+
},
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
if (result.error) {
|
|
70
|
+
throw result.error;
|
|
71
|
+
}
|
|
72
|
+
if (result.status !== 0) {
|
|
73
|
+
const output = [result.stdout, result.stderr]
|
|
74
|
+
.filter(Boolean)
|
|
75
|
+
.join("\n")
|
|
76
|
+
.trim();
|
|
77
|
+
throw new Error(
|
|
78
|
+
`cleanup helper failed for ${targetPath}${output ? `:\n${output}` : ""}`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
48
83
|
function fail(message, code = 1) {
|
|
49
84
|
console.error(`[eliza-ui-sync] ${message}`);
|
|
50
85
|
process.exit(code);
|
|
@@ -247,7 +282,7 @@ function syncRendererBundle() {
|
|
|
247
282
|
// Renderer path will be created below.
|
|
248
283
|
}
|
|
249
284
|
|
|
250
|
-
|
|
285
|
+
removePathRecursive(TARGET_RENDERER);
|
|
251
286
|
mkdirSync(TARGET_RENDERER, { recursive: true });
|
|
252
287
|
cpSync(DIST_DIR, TARGET_RENDERER, { recursive: true, force: true });
|
|
253
288
|
console.log(`[eliza-ui-sync] Synced ${DIST_DIR} -> ${TARGET_RENDERER}`);
|
|
@@ -301,7 +336,13 @@ function main() {
|
|
|
301
336
|
return;
|
|
302
337
|
}
|
|
303
338
|
|
|
304
|
-
|
|
339
|
+
if (SKIP_BUILD) {
|
|
340
|
+
console.log(
|
|
341
|
+
"[eliza-ui-sync] --skip-build set: syncing existing dist folder only",
|
|
342
|
+
);
|
|
343
|
+
} else {
|
|
344
|
+
runBuild();
|
|
345
|
+
}
|
|
305
346
|
syncRendererBundle();
|
|
306
347
|
}
|
|
307
348
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* operator runs do not fail on coverage reporter output or macOS file limits.
|
|
7
7
|
* It does not send SMS and does not mutate external systems.
|
|
8
8
|
*/
|
|
9
|
-
import { spawnSync } from "node:child_process";
|
|
9
|
+
import { execFileSync, spawnSync } from "node:child_process";
|
|
10
10
|
import fs from "node:fs";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
@@ -14,11 +14,25 @@ import { fileURLToPath } from "node:url";
|
|
|
14
14
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
15
15
|
const repoRoot = path.resolve(scriptDir, "..", "..", "..");
|
|
16
16
|
const packagesRoot = path.join(repoRoot, "packages");
|
|
17
|
+
const cleanupHelperScript = path.join(
|
|
18
|
+
repoRoot,
|
|
19
|
+
"packages",
|
|
20
|
+
"scripts",
|
|
21
|
+
"rm-path-recursive.mjs",
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
function removePathRecursive(targetPath) {
|
|
25
|
+
execFileSync(process.execPath, [cleanupHelperScript, targetPath], {
|
|
26
|
+
cwd: repoRoot,
|
|
27
|
+
stdio: "inherit",
|
|
28
|
+
});
|
|
29
|
+
}
|
|
17
30
|
|
|
18
31
|
const groups = [
|
|
19
32
|
{
|
|
20
33
|
key: "routing-contracts",
|
|
21
|
-
label:
|
|
34
|
+
label:
|
|
35
|
+
"known-owner priority, friend-contact routing, and contact recording",
|
|
22
36
|
files: [
|
|
23
37
|
"cloud-shared/src/lib/services/phone-gateway-devices.test.ts",
|
|
24
38
|
"cloud-shared/src/lib/services/agent-gateway-router.test.ts",
|
|
@@ -73,7 +87,9 @@ function runGroup(group) {
|
|
|
73
87
|
const output = `${result.stdout ?? ""}${result.stderr ?? ""}`;
|
|
74
88
|
const status = result.status ?? (result.error ? 1 : 0);
|
|
75
89
|
if (status === 0) {
|
|
76
|
-
const passLine = output
|
|
90
|
+
const passLine = output
|
|
91
|
+
.match(/\d+ pass\s*\n0 fail/)?.[0]
|
|
92
|
+
?.replace(/\s+/g, " ");
|
|
77
93
|
console.log(
|
|
78
94
|
`[sms-gateway-software] PASS ${group.key}: ${group.label}${passLine ? ` (${passLine})` : ""}`,
|
|
79
95
|
);
|
|
@@ -83,7 +99,7 @@ function runGroup(group) {
|
|
|
83
99
|
console.error(output.trim());
|
|
84
100
|
return false;
|
|
85
101
|
} finally {
|
|
86
|
-
|
|
102
|
+
removePathRecursive(cwd);
|
|
87
103
|
}
|
|
88
104
|
}
|
|
89
105
|
|
package/cli/command-format.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-format.d.ts","sourceRoot":"","sources":["../../../../../src/cli/command-format.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAGrC,GACA,MAAM,CAoBR"}
|
package/cli/command-format.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { CLI_PREFIX_RE, replaceCliName, resolveCliName } from "./cli-name.js";
|
|
2
|
-
import { normalizeProfileName } from "./profile-utils.js";
|
|
3
|
-
const PROFILE_FLAG_RE = /(?:^|\s)--profile(?:\s|=|$)/;
|
|
4
|
-
const DEV_FLAG_RE = /(?:^|\s)--dev(?:\s|$)/;
|
|
5
|
-
export function formatCliCommand(command, env = process.env) {
|
|
6
|
-
const cliName = resolveCliName();
|
|
7
|
-
const normalizedCommand = replaceCliName(command, cliName);
|
|
8
|
-
const profile = normalizeProfileName(env.ELIZA_PROFILE);
|
|
9
|
-
if (!profile) {
|
|
10
|
-
return normalizedCommand;
|
|
11
|
-
}
|
|
12
|
-
if (!CLI_PREFIX_RE.test(normalizedCommand)) {
|
|
13
|
-
return normalizedCommand;
|
|
14
|
-
}
|
|
15
|
-
if (PROFILE_FLAG_RE.test(normalizedCommand) ||
|
|
16
|
-
DEV_FLAG_RE.test(normalizedCommand)) {
|
|
17
|
-
return normalizedCommand;
|
|
18
|
-
}
|
|
19
|
-
return normalizedCommand.replace(CLI_PREFIX_RE, (match) => `${match} --profile ${profile}`);
|
|
20
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register-runtime-hooks.d.ts","sourceRoot":"","sources":["../../../../src/register-runtime-hooks.ts"],"names":[],"mappings":""}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { registerAppCoreRuntimeHooks } from "./runtime/app-core-runtime-hooks.js";
|
|
2
|
-
import { hydrateWalletKeysFromNodePlatformSecureStore } from "./security/hydrate-wallet-keys-from-platform-store.js";
|
|
3
|
-
import { applyAccountPoolApiCredentials, getDefaultAccountPool, startAccountPoolKeepAlive, } from "./services/account-pool.js";
|
|
4
|
-
import { runVaultBootstrap } from "./services/vault-bootstrap.js";
|
|
5
|
-
import { sharedVault } from "./services/vault-mirror.js";
|
|
6
|
-
// Lazy wrapper: avoids static @elizaos/plugin-local-inference import at this boundary.
|
|
7
|
-
async function ensureLocalInferenceHandler(runtime) {
|
|
8
|
-
const { ensureLocalInferenceHandler: _fn } = await import("@elizaos/plugin-local-inference/runtime");
|
|
9
|
-
return _fn(runtime);
|
|
10
|
-
}
|
|
11
|
-
registerAppCoreRuntimeHooks({
|
|
12
|
-
applyAccountPoolApiCredentials,
|
|
13
|
-
ensureLocalInferenceHandler,
|
|
14
|
-
getDefaultAccountPool,
|
|
15
|
-
hydrateWalletKeysFromNodePlatformSecureStore,
|
|
16
|
-
runVaultBootstrap,
|
|
17
|
-
sharedVault,
|
|
18
|
-
startAccountPoolKeepAlive,
|
|
19
|
-
});
|