119 lines
6.5 KiB
JavaScript
119 lines
6.5 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 smoke 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.computerUseCommand, "node");
|
|
assert.equal(cloudConfig.computerUseCommand, "node");
|
|
assert.deepEqual(exampleConfig.computerUseArgs, ["scripts/computer-use-smoke.mjs"]);
|
|
assert.deepEqual(cloudConfig.computerUseArgs, ["scripts/computer-use-smoke.mjs"]);
|
|
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.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 smoke 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 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",
|
|
);
|
|
|
|
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(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/);
|
|
});
|