'use strict'; const fs = require('node:fs'); const assert = require('node:assert/strict'); const bootstrap = require('../../dockerfiles/hermes-webui-hux/bootstrap.js'); const modes = require('../../dockerfiles/hermes-webui-hux/runtime/wave_b_projects_modes.js'); const waveC = require('../../dockerfiles/hermes-webui-hux/runtime/wave_c_multimodal_onboarding_release.js'); const data = JSON.parse(fs.readFileSync(0, 'utf8')); const session = {session_id: data.rawSessionId, hux_context: data.context}; const context = bootstrap.normalizeContext(session); assert.ok(context, 'real backend scope must remain a valid browser context'); assert.ok(bootstrap.normalizeBootstrap(data.bootstrap.body, context, data.bootstrap.status)); const cards = bootstrap.normalizeCapabilities(data.capabilities, context.identity); assert.ok(bootstrap.cardComplete(cards, 'HUX-06')); assert.ok(bootstrap.cardComplete(cards, 'HUX-07')); assert.ok(bootstrap.cardComplete(cards, 'HUX-09')); assert.ok(bootstrap.cardComplete(cards, 'HUX-12')); const catalog = modes.normalizeModes(data.modes); assert.equal(catalog.length, 5); const selection = modes.normalizeSelection(data.selection, context.identity, context.projectId, context.conversationId); assert.equal(selection.mode.id, 'fast'); assert.deepEqual(waveC.normalizeMediaPage(data.media, context.identity, context.projectId, context.conversationId), {media: []}); const trigger = {surface: context.identity.surface, context: 'first_session'}; assert.ok(waveC.normalizeEvaluation(data.evaluation, context.identity, context.sessionId, context.conversationId, trigger, true)); const releases = waveC.normalizeReleasePage(data.releases, context.identity, context.projectId, context.conversationId); assert.deepEqual(releases, {items: [], withheld: 0});