// 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 3 mitra maestro flow (ts-mitra-3-04-session_ended_banner.yaml) to // drive the red "Durasi sesi habis" banner and "SELESAI" timer pill without // waiting in real time. // // Reads BACKEND_INTERNAL_URL + SECONDS_FROM_NOW from env. Backend re-runs // startSessionTimer with the new schedule AND broadcasts a timer resync so // the chat screen flips into the sessionExpired UI within ~1s. const url = BACKEND_INTERNAL_URL || 'http://localhost:3001' // Default to a negative offset so the session is immediately expired — the // mitra flow wants the ended banner / SELESAI pill, not the 3-min warning. const seconds = parseInt(SECONDS_FROM_NOW || '-1', 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