atlas-iac/testing/tests/test_hermes_hux_ui_modes.mjs
jenkins b66c762f5d hermes(webui): add HUX card UI models with contract-locked suites
Standalone per-card browser model/security/view modules for HUX-01..10
plus node+pytest suites that read the hux.v1 contract schemas directly.
Reconciled drift found on integration: the activity model now accepts
all 32 hux.event.v1 kinds (delegation.*, memory.suppressed,
memory.retrieval_removed, budget.exhausted, side_effect.*), the
autonomy model carries the external_side_effect capability, and the
foundation boundary test now asserts the shipped static HUX surface
exists on disk and that images never bake activated HUX_FLAGS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BvMSXH8VH2tMWXanb8SJdf
2026-08-24 04:12:03 -03:00

306 lines
9.2 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
FOUNDATION_FLAG,
FRIENDLY_MODES_FLAG,
MODE_ORDER,
buildModeRequest,
createFriendlyModesAdapter,
friendlyModesEnabled,
normalizeAdvancedRoutes,
normalizeMode,
normalizeModeCatalog,
normalizeResolvedRoute,
} from "../../dockerfiles/hermes-webui-hux/modes/model.ts";
const constraints = (providers, localOnly = false) => ({
providers,
local_only: localOnly,
effort: { min: "low", max: "high" },
tools: {
web: "allowed",
shell: "allowed",
artifacts: "allowed",
delegate: "allowed",
},
memory: { read: true, write: true },
citations_required: false,
retention: "default",
});
const labels = {
fast: "Fast",
thoughtful: "Thoughtful",
research: "Research",
create: "Create",
private: "Private",
};
function mode(name, extra = {}) {
const isPrivate = name === "private";
return {
schema: "hux.mode.v1",
mode: name,
label: labels[name],
intent: `${labels[name]} response intent`,
constraints: constraints(
isPrivate ? ["local"] : ["claude", "codex"],
isPrivate,
),
switchyard: { route_id: `atlas/auto/${name}` },
...extra,
};
}
const catalog = () => MODE_ORDER.map((name) => mode(name));
test("friendly modes remain default-off and depend on HUX foundation", () => {
assert.equal(friendlyModesEnabled(), false);
assert.equal(friendlyModesEnabled([]), false);
assert.equal(friendlyModesEnabled([FOUNDATION_FLAG]), false);
assert.equal(friendlyModesEnabled([FRIENDLY_MODES_FLAG]), false);
assert.equal(
friendlyModesEnabled([FOUNDATION_FLAG, FRIENDLY_MODES_FLAG]),
true,
);
});
test("valid catalog is canonical and automatic modes preserve both pools", () => {
const normalized = normalizeModeCatalog(catalog());
assert.ok(normalized);
assert.deepEqual(normalized.map((item) => item.mode), MODE_ORDER);
for (const intent of normalized.slice(0, -1)) {
assert.deepEqual(intent.constraints.providers, ["codex", "claude"]);
assert.equal(intent.constraints.local_only, false);
assert.match(intent.switchyard.route_id, /^atlas\/auto\//);
assert.equal("override_route_id" in intent.switchyard, false);
}
assert.deepEqual(normalized.at(-1).constraints.providers, ["local"]);
assert.equal(normalized.at(-1).constraints.local_only, true);
});
test("catalog rejects missing, duplicate, and malformed entries", () => {
assert.equal(normalizeModeCatalog({}), null);
assert.equal(normalizeModeCatalog(catalog().slice(1)), null);
assert.equal(normalizeModeCatalog([...catalog().slice(0, 4), mode("fast")]), null);
assert.equal(normalizeModeCatalog([...catalog().slice(0, 4), null]), null);
});
test("mode validation is exact and fail-closed", () => {
assert.equal(normalizeMode(null), null);
assert.equal(normalizeMode({ ...mode("fast"), surprise: true }), null);
assert.equal(normalizeMode({ ...mode("fast"), schema: "hux.mode.v0" }), null);
assert.equal(normalizeMode({ ...mode("fast"), mode: "turbo" }), null);
assert.equal(normalizeMode({ ...mode("fast"), label: "Claude Fast" }), null);
assert.equal(normalizeMode({ ...mode("fast"), intent: "" }), null);
assert.equal(normalizeMode({ ...mode("fast"), intent: "x".repeat(401) }), null);
assert.equal(
normalizeMode({ ...mode("fast"), switchyard: { route_id: "vendor/default" } }),
null,
);
assert.equal(
normalizeMode({
...mode("fast"),
switchyard: { route_id: "atlas/auto/claude/fast" },
}),
null,
);
assert.equal(
normalizeMode({ ...mode("fast"), intent: "Prefer OpenAI for this mode" }),
null,
);
assert.equal(
normalizeMode({
...mode("fast"),
switchyard: {
route_id: "atlas/auto/fast",
override_route_id: "atlas/manual/codex/high",
},
}),
null,
);
});
test("constraint validation rejects provider bias and malformed nested policy", () => {
const invalid = [
constraints([], false),
constraints(["codex"], false),
constraints(["claude"], false),
constraints(["codex", "codex"], false),
constraints(["codex", "unknown"], false),
{ ...constraints(["codex", "claude"]), local_only: true },
{ ...constraints(["codex", "claude"]), effort: { min: "high", max: "low" } },
{ ...constraints(["codex", "claude"]), tools: null },
{
...constraints(["codex", "claude"]),
tools: { ...constraints([]).tools, web: "sometimes" },
},
{ ...constraints(["codex", "claude"]), memory: { read: true } },
{ ...constraints(["codex", "claude"]), citations_required: "no" },
{ ...constraints(["codex", "claude"]), retention: "forever" },
{ ...constraints(["codex", "claude"]), secret: "value" },
];
for (const value of invalid) {
assert.equal(normalizeMode({ ...mode("fast"), constraints: value }), null);
}
});
test("Private is strictly local-only while non-private can include local", () => {
assert.equal(
normalizeMode({ ...mode("private"), constraints: constraints(["codex"], true) }),
null,
);
assert.equal(
normalizeMode({ ...mode("private"), constraints: constraints(["local"], false) }),
null,
);
assert.ok(
normalizeMode({
...mode("research"),
constraints: constraints(["local", "claude", "codex"]),
}),
);
});
test("advanced catalog keeps only bounded exact manual route choices", () => {
const raw = [
{
route_id: "atlas/manual/codex/high",
label: "Deep route",
provider: "codex",
effort: "high",
local_only: false,
},
{
route_id: "atlas/manual/local/private",
label: "Local route",
provider: "local",
effort: "medium",
local_only: true,
},
{
route_id: "atlas/auto/claude/high",
label: "Not a pin",
provider: "claude",
effort: "high",
local_only: false,
},
{
route_id: "atlas/manual/codex/high",
label: "Duplicate",
provider: "codex",
effort: "high",
local_only: false,
},
null,
];
assert.deepEqual(normalizeAdvancedRoutes({}), []);
assert.deepEqual(
normalizeAdvancedRoutes(raw).map((choice) => choice.routeId),
["atlas/manual/codex/high", "atlas/manual/local/private"],
);
});
test("exact pin is created only from an explicit compatible advanced choice", () => {
const automatic = normalizeMode(mode("fast"));
const privateMode = normalizeMode(mode("private"));
const choices = normalizeAdvancedRoutes([
{
route_id: "atlas/manual/codex/high",
label: "OpenAI high",
provider: "codex",
effort: "high",
local_only: false,
},
{
route_id: "atlas/manual/local/private",
label: "Local",
provider: "local",
effort: "medium",
local_only: true,
},
]);
assert.deepEqual(buildModeRequest(automatic), automatic);
assert.equal(buildModeRequest(null), null);
assert.equal(buildModeRequest(automatic, "atlas/manual/unknown", choices), null);
assert.equal(
buildModeRequest(automatic, "atlas/manual/local/private", choices),
null,
);
assert.equal(
buildModeRequest(privateMode, "atlas/manual/codex/high", choices),
null,
);
assert.equal(
buildModeRequest(privateMode, "atlas/manual/local/private", choices)
.switchyard.override_route_id,
"atlas/manual/local/private",
);
assert.equal(
buildModeRequest(automatic, "atlas/manual/codex/high", choices).switchyard
.override_route_id,
"atlas/manual/codex/high",
);
});
test("resolved route disclosure validates the shared hux.v1 route shape", () => {
assert.deepEqual(
normalizeResolvedRoute({
requested: "fast",
resolved_target: "route/codex/luna/low",
provider: "codex",
effort: "low",
}),
{
requested: "fast",
target: "route/codex/luna/low",
provider: "codex",
effort: "low",
},
);
assert.deepEqual(normalizeResolvedRoute({ requested: "private" }), {
requested: "private",
target: undefined,
provider: undefined,
effort: undefined,
});
for (const invalid of [
null,
{},
{ requested: "" },
{ requested: "fast", provider: "gemini" },
{ requested: "fast", effort: "ultra" },
{ requested: "fast", raw: "secret" },
{ requested: "fast", resolved_target: 7 },
]) {
assert.equal(normalizeResolvedRoute(invalid), null);
}
});
test("foundation adapter preserves version, flags, endpoint, and validators", () => {
const calls = [];
const foundation = {
apiVersion: "hux.v1",
enabled: (flag) => flag === FOUNDATION_FLAG || flag === FRIENDLY_MODES_FLAG,
endpoint: (path) => (calls.push(path), `/hux/v1${path}`),
};
const adapter = createFriendlyModesAdapter(foundation);
assert.equal(adapter.apiVersion, "hux.v1");
assert.equal(adapter.enabled(), true);
assert.equal(adapter.endpoint(), "/hux/v1/modes");
assert.deepEqual(calls, ["/modes"]);
assert.ok(adapter.adaptCatalog(catalog()));
assert.equal(adapter.adaptResolvedRoute({}), null);
assert.ok(adapter.buildRequest(normalizeMode(mode("fast"))));
assert.throws(() => createFriendlyModesAdapter(null), TypeError);
assert.throws(
() => createFriendlyModesAdapter({ ...foundation, apiVersion: "hux.v0" }),
TypeError,
);
assert.equal(
createFriendlyModesAdapter({ ...foundation, enabled: () => false }).enabled(),
false,
);
});