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/); });