189 lines
10 KiB
JavaScript
189 lines
10 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
|
|
test("shipped local-agent configs include browser and desktop runtime defaults", async () => {
|
|
const exampleConfig = JSON.parse(
|
|
await readFile(path.join(repoRoot, "local-agent", "config.example.json"), "utf8"),
|
|
);
|
|
const cloudConfig = JSON.parse(
|
|
await readFile(path.join(repoRoot, "local-agent", "config.cloud.json"), "utf8"),
|
|
);
|
|
|
|
assert.equal(exampleConfig.browserControlEnabled, true);
|
|
assert.equal(cloudConfig.browserControlEnabled, true);
|
|
assert.equal(exampleConfig.browserControlCommand, "node");
|
|
assert.equal(cloudConfig.browserControlCommand, "node");
|
|
assert.deepEqual(exampleConfig.browserControlArgs, ["scripts/browser-control-smoke.mjs"]);
|
|
assert.deepEqual(cloudConfig.browserControlArgs, ["scripts/browser-control-smoke.mjs"]);
|
|
assert.equal(exampleConfig.browserAutomationConnected, true);
|
|
assert.equal(cloudConfig.browserAutomationConnected, true);
|
|
|
|
assert.equal(exampleConfig.computerUseEnabled, true);
|
|
assert.equal(cloudConfig.computerUseEnabled, true);
|
|
assert.equal(exampleConfig.codexAppServerEnabled, true);
|
|
assert.equal(cloudConfig.codexAppServerEnabled, true);
|
|
assert.equal(exampleConfig.codexComputerUseEnabled, true);
|
|
assert.equal(cloudConfig.codexComputerUseEnabled, true);
|
|
assert.equal(exampleConfig.codexComputerUseCommand, "node");
|
|
assert.equal(cloudConfig.codexComputerUseCommand, "node");
|
|
assert.deepEqual(exampleConfig.codexComputerUseArgs, ["scripts/codex-computer-use-runtime.mjs"]);
|
|
assert.deepEqual(cloudConfig.codexComputerUseArgs, ["scripts/codex-computer-use-runtime.mjs"]);
|
|
assert.equal(exampleConfig.codexComputerUseFallbackToCua, true);
|
|
assert.equal(cloudConfig.codexComputerUseFallbackToCua, true);
|
|
assert.equal(exampleConfig.computerUseCommand, "node");
|
|
assert.equal(cloudConfig.computerUseCommand, "node");
|
|
assert.deepEqual(exampleConfig.computerUseArgs, ["scripts/cua-driver-computer-use-runtime.mjs"]);
|
|
assert.deepEqual(cloudConfig.computerUseArgs, ["scripts/cua-driver-computer-use-runtime.mjs"]);
|
|
assert.equal(exampleConfig.cuaDriverCommand, "cua-driver");
|
|
assert.equal(cloudConfig.cuaDriverCommand, "cua-driver");
|
|
assert.deepEqual(exampleConfig.cuaDriverArgs, []);
|
|
assert.deepEqual(cloudConfig.cuaDriverArgs, []);
|
|
assert.equal(exampleConfig.cuaDriverTimeoutMs, 45000);
|
|
assert.equal(cloudConfig.cuaDriverTimeoutMs, 45000);
|
|
assert.equal(exampleConfig.computerUseConnected, true);
|
|
assert.equal(cloudConfig.computerUseConnected, true);
|
|
assert.equal(exampleConfig.dialogGuardEnabled, true);
|
|
assert.equal(cloudConfig.dialogGuardEnabled, true);
|
|
assert.equal(exampleConfig.dialogGuardConsentRequired, true);
|
|
assert.equal(cloudConfig.dialogGuardConsentRequired, true);
|
|
assert.deepEqual(exampleConfig.dialogGuardPlatformAdapters, ["darwin", "win32"]);
|
|
assert.deepEqual(cloudConfig.dialogGuardPlatformAdapters, ["darwin", "win32"]);
|
|
assert.equal(exampleConfig.dialogGuardMacActionCommand, "");
|
|
assert.equal(cloudConfig.dialogGuardMacActionCommand, "");
|
|
assert.deepEqual(exampleConfig.dialogGuardMacActionArgs, []);
|
|
assert.deepEqual(cloudConfig.dialogGuardMacActionArgs, []);
|
|
assert.equal(exampleConfig.dialogGuardWindowsActionCommand, "");
|
|
assert.equal(cloudConfig.dialogGuardWindowsActionCommand, "");
|
|
assert.deepEqual(exampleConfig.dialogGuardWindowsActionArgs, []);
|
|
assert.deepEqual(cloudConfig.dialogGuardWindowsActionArgs, []);
|
|
|
|
assert.equal(exampleConfig.bossAgentOtaEnabled, true);
|
|
assert.equal(cloudConfig.bossAgentOtaEnabled, true);
|
|
assert.equal(exampleConfig.bossAgentVersion, "dev");
|
|
assert.equal(cloudConfig.bossAgentVersion, "dev");
|
|
assert.equal(exampleConfig.bossAgentOtaAutoInstall, false);
|
|
assert.equal(cloudConfig.bossAgentOtaAutoInstall, false);
|
|
assert.equal(exampleConfig.bossAgentOtaCheckIntervalMs, 300000);
|
|
assert.equal(cloudConfig.bossAgentOtaCheckIntervalMs, 300000);
|
|
|
|
assert.equal(exampleConfig.codexDesktopRefreshEnabled, true);
|
|
assert.equal(cloudConfig.codexDesktopRefreshEnabled, true);
|
|
assert.equal(exampleConfig.codexDesktopRefreshCommand, "node");
|
|
assert.equal(cloudConfig.codexDesktopRefreshCommand, "node");
|
|
assert.deepEqual(exampleConfig.codexDesktopRefreshArgs, ["scripts/codex-desktop-refresh-hint.mjs"]);
|
|
assert.deepEqual(cloudConfig.codexDesktopRefreshArgs, ["scripts/codex-desktop-refresh-hint.mjs"]);
|
|
assert.equal(exampleConfig.codexDesktopRefreshEndpoint, "http://127.0.0.1:4318/api/v1/codex-desktop/refresh");
|
|
assert.equal(cloudConfig.codexDesktopRefreshEndpoint, "http://127.0.0.1:4318/api/v1/codex-desktop/refresh");
|
|
assert.equal(exampleConfig.codexDesktopRefreshAppName, "Codex");
|
|
assert.equal(cloudConfig.codexDesktopRefreshAppName, "Codex");
|
|
assert.equal(exampleConfig.codexDesktopRefreshMode, "deeplink-reload");
|
|
assert.equal(cloudConfig.codexDesktopRefreshMode, "deeplink-reload");
|
|
assert.equal(exampleConfig.codexDesktopRefreshRetryCount, 2);
|
|
assert.equal(cloudConfig.codexDesktopRefreshRetryCount, 2);
|
|
assert.equal(exampleConfig.codexDesktopRefreshRetryDelayMs, 120);
|
|
assert.equal(cloudConfig.codexDesktopRefreshRetryDelayMs, 120);
|
|
});
|
|
|
|
test("repo ships browser and desktop runtime scripts", async () => {
|
|
const browserSmoke = await readFile(path.join(repoRoot, "scripts", "browser-control-smoke.mjs"), "utf8");
|
|
const computerSmoke = await readFile(path.join(repoRoot, "scripts", "computer-use-smoke.mjs"), "utf8");
|
|
const cuaComputerUseRuntime = await readFile(
|
|
path.join(repoRoot, "scripts", "cua-driver-computer-use-runtime.mjs"),
|
|
"utf8",
|
|
);
|
|
const codexComputerUseRuntime = await readFile(
|
|
path.join(repoRoot, "scripts", "codex-computer-use-runtime.mjs"),
|
|
"utf8",
|
|
);
|
|
const codexDesktopRefreshHint = await readFile(
|
|
path.join(repoRoot, "scripts", "codex-desktop-refresh-hint.mjs"),
|
|
"utf8",
|
|
);
|
|
const codexDesktopRefreshBridgeDaemon = await readFile(
|
|
path.join(repoRoot, "scripts", "codex-desktop-refresh-bridge-daemon.mjs"),
|
|
"utf8",
|
|
);
|
|
const codexDesktopEventConsumer = await readFile(
|
|
path.join(repoRoot, "scripts", "codex-desktop-event-consumer.mjs"),
|
|
"utf8",
|
|
);
|
|
const codexDesktopIntegrationProbe = await readFile(
|
|
path.join(repoRoot, "scripts", "codex-desktop-integration-probe.mjs"),
|
|
"utf8",
|
|
);
|
|
const codexDesktopBridgeLaunchAgent = await readFile(
|
|
path.join(repoRoot, "deployment", "launchd", "com.hyzq.boss.codex-desktop-bridge.plist"),
|
|
"utf8",
|
|
);
|
|
const bossAgentPackageScript = await readFile(
|
|
path.join(repoRoot, "scripts", "package-boss-agent-mac-runtime.sh"),
|
|
"utf8",
|
|
);
|
|
const startLocalAgent = await readFile(
|
|
path.join(repoRoot, "scripts", "start-local-agent.sh"),
|
|
"utf8",
|
|
);
|
|
const installLocalLaunchAgent = await readFile(
|
|
path.join(repoRoot, "scripts", "install-local-launchagent.sh"),
|
|
"utf8",
|
|
);
|
|
|
|
assert.match(browserSmoke, /status/);
|
|
assert.match(browserSmoke, /replyBody/);
|
|
assert.match(browserSmoke, /BOSS_BROWSER_AUTOMATION_MODE/);
|
|
assert.match(computerSmoke, /status/);
|
|
assert.match(computerSmoke, /replyBody/);
|
|
assert.match(computerSmoke, /resolveOpenAppPrefixArgs/);
|
|
assert.match(computerSmoke, /BOSS_COMPUTER_USE_MODE/);
|
|
assert.match(computerSmoke, /osascript/);
|
|
assert.match(cuaComputerUseRuntime, /runCuaDriverComputerUseTask/);
|
|
assert.match(cuaComputerUseRuntime, /BOSS_CUA_DRIVER_COMMAND/);
|
|
assert.match(cuaComputerUseRuntime, /launch_app/);
|
|
assert.match(cuaComputerUseRuntime, /get_window_state/);
|
|
assert.match(cuaComputerUseRuntime, /needs_user_action/);
|
|
assert.match(codexComputerUseRuntime, /Codex Computer Use/);
|
|
assert.match(codexComputerUseRuntime, /executeCodexAppServerTask/);
|
|
assert.match(codexDesktopRefreshHint, /codex_desktop_refresh_hint/);
|
|
assert.match(codexDesktopRefreshHint, /osascript/);
|
|
assert.match(codexDesktopRefreshHint, /activate/);
|
|
assert.match(codexDesktopRefreshHint, /refreshMode/);
|
|
assert.match(codexDesktopRefreshHint, /codex:\/\/threads\//);
|
|
assert.match(codexDesktopRefreshHint, /BOSS_CODEX_DESKTOP_REFRESH_DRY_RUN/);
|
|
assert.match(codexDesktopRefreshHint, /key code 15/);
|
|
assert.match(codexDesktopRefreshBridgeDaemon, /api\/v1\/codex-desktop\/refresh/);
|
|
assert.match(codexDesktopRefreshBridgeDaemon, /api\/v1\/codex-desktop\/events/);
|
|
assert.match(codexDesktopRefreshBridgeDaemon, /text\/event-stream/);
|
|
assert.match(codexDesktopRefreshBridgeDaemon, /127\.0\.0\.1/);
|
|
assert.match(codexDesktopEventConsumer, /BOSS_CODEX_DESKTOP_EVENTS_URL/);
|
|
assert.match(codexDesktopEventConsumer, /BOSS_CODEX_DESKTOP_EVENTS_ONCE/);
|
|
assert.match(codexDesktopEventConsumer, /codex_desktop_refresh/);
|
|
assert.match(codexDesktopIntegrationProbe, /BOSS_CODEX_DESKTOP_APP_PATH/);
|
|
assert.match(codexDesktopIntegrationProbe, /codex:\/\/threads\/\{threadId\}/);
|
|
assert.match(codexDesktopIntegrationProbe, /packagePatch/);
|
|
assert.match(codexDesktopBridgeLaunchAgent, /codex-desktop-refresh-bridge-daemon\.mjs/);
|
|
assert.match(codexDesktopBridgeLaunchAgent, /BOSS_CODEX_DESKTOP_BRIDGE_PORT/);
|
|
assert.match(bossAgentPackageScript, /boss-agent-mac-latest\.zip/);
|
|
assert.match(bossAgentPackageScript, /boss-agent-mac-latest\.json/);
|
|
assert.match(bossAgentPackageScript, /bossAgentVersion = version/);
|
|
assert.match(bossAgentPackageScript, /config\*\.json/);
|
|
assert.match(bossAgentPackageScript, /codexComputerUseArgs/);
|
|
assert.match(bossAgentPackageScript, /PlistBuddy/);
|
|
assert.match(bossAgentPackageScript, /ACTIVE_CONFIG_PATH/);
|
|
assert.match(bossAgentPackageScript, /CUSTOM_CONFIGS/);
|
|
assert.match(bossAgentPackageScript, /config\.installed\.json\|config\.cloud\.json\|config\.example\.json/);
|
|
assert.match(bossAgentPackageScript, /BOSS_AGENT_INSTALL_ROOT/);
|
|
assert.match(installLocalLaunchAgent, /resolve_default_config_source/);
|
|
assert.match(installLocalLaunchAgent, /PlistBuddy/);
|
|
assert.match(installLocalLaunchAgent, /ACTIVE_CONFIG_PATH/);
|
|
assert.match(installLocalLaunchAgent, /CONFIG_SOURCE_ARG/);
|
|
assert.match(installLocalLaunchAgent, /codexAppServerWorkdir/);
|
|
assert.match(installLocalLaunchAgent, /codexComputerUseWorkdir/);
|
|
assert.match(startLocalAgent, /BOSS_NODE_BIN/);
|
|
assert.match(startLocalAgent, /\.boss-runtime\/node-\*\/bin\/node/);
|
|
});
|