// Force-set the expires_at of the most-recent ACTIVE chat_session by hitting // the dev-only /internal/_test/force-session-expires-at endpoint. Used by the // Stage 6 maestro flow (06_chat_countdown.yaml) to drive the 3-min snackbar, // last-2-min danger pill, and expired banner without waiting in real time. // // Reads BACKEND_INTERNAL_URL + SECONDS_FROM_NOW from env (Maestro injects them // from the flow). The backend re-runs startSessionTimer with the new schedule // AND clears the per-session "3-min warning fired" flag so the warning fires // again on the new schedule. const url = BACKEND_INTERNAL_URL || 'http://localhost:3001' const seconds = parseInt(SECONDS_FROM_NOW || '175', 10) const resp = http.post(`${url}/internal/_test/force-session-expires-at`, { body: JSON.stringify({ latest: true, seconds_from_now: seconds }), headers: { 'Content-Type': 'application/json' }, }) if (resp.status !== 200) { throw new Error(`force-session-expires-at failed (${resp.status}): ${resp.body}`) } const data = json(resp.body) output.SESSION_ID = data.session_id output.EXPIRES_AT = data.expires_at