/** * GMIIE Live Desk UI — last-updated banner, this-week digest, markets ticker, jurisdiction selector. */ (function (global) { const DESK_PAGES = { home: { desk: 'all', showMarkets: false }, fraud: { desk: 'fraud', showMarkets: false }, legislative: { desk: 'legislative', showMarkets: false }, tracker: { desk: 'all', showMarkets: true }, engine: { desk: 'all', showMarkets: true }, cbdc: { desk: 'cbdc', showMarkets: false }, sports: { desk: 'sports_nil', showMarkets: false }, nil: { desk: 'sports_nil', showMarkets: false }, classroom: { desk: 'all', showMarkets: false }, query: { desk: 'all', showMarkets: false }, satirist: { desk: 'all', showMarkets: false }, }; let jurisdiction = typeof localStorage !== 'undefined' ? localStorage.getItem('gmiie-jurisdiction') || 'US-FED' : 'US-FED'; function injectStyles() { if (document.getElementById('gld-styles')) return; const s = document.createElement('style'); s.id = 'gld-styles'; s.textContent = ` .gld-live-bar{background:var(--gold-bg,rgba(184,149,58,.1));border-bottom:1px solid var(--gold-bd,rgba(184,149,58,.25));padding:8px 48px;font-family:var(--mono,'JetBrains Mono',monospace);font-size:9px;color:var(--ink2,#444);display:flex;flex-direction:column;gap:6px;} .gld-live-bar strong{color:var(--gold,#b8953a);} .gld-jurisdiction{display:flex;align-items:center;gap:6px;flex-wrap:wrap;} .gld-jurisdiction label{font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3,#777);} .gld-jurisdiction select{font-family:var(--mono);font-size:9px;padding:4px 8px;border:1px solid var(--rule,#d4c9a8);background:var(--paper,#faf8f3);color:var(--ink,#1a1a1a);} .gld-week{margin:16px 0;padding:14px;border:1px solid var(--rule,#d4c9a8);background:var(--surface,#ece8dc);} .gld-week-hd{font-family:var(--mono);font-size:8px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold,#b8953a);margin-bottom:8px;} .gld-week ul{margin:0;padding-left:18px;font-size:12px;color:var(--ink2,#444);line-height:1.65;} .gld-week p.gld-grok{font-size:12px;color:var(--ink,#1a1a1a);margin-top:10px;padding-top:10px;border-top:1px dashed var(--rule,#d4c9a8);font-style:italic;} .gld-ticker{background:var(--band,#1a1a1a);color:var(--band-ink,rgba(255,255,255,.75));padding:6px 48px;font-family:var(--mono);font-size:8px;display:flex;align-items:center;gap:16px;overflow-x:auto;white-space:nowrap;} .gld-ticker .gld-tk-lbl{color:var(--gold,#b8953a);font-weight:700;letter-spacing:.1em;flex-shrink:0;} .gld-ticker .up{color:var(--green,#34d399);} .gld-ticker .down{color:var(--red,#f87171);} .gld-changes-strip{background:var(--paper2,#f3f0e8);border-bottom:1px solid var(--rule,#d4c9a8);padding:6px 48px;font-family:var(--mono);font-size:9px;color:var(--ink2,#444);display:flex;align-items:center;gap:10px;flex-wrap:wrap;} .gld-changes-strip strong{color:var(--gold,#b8953a);} .gld-legend-row{display:flex;gap:12px;font-size:8px;color:var(--ink3,#777);margin-top:4px;width:100%;border-top:1px dashed var(--rule,#d4c9a8);padding-top:4px;flex-wrap:wrap;} .gld-legend-item{display:flex;align-items:center;gap:4px;} .gld-legend-dot{width:4px;height:4px;border-radius:50%;background:var(--gold,#b8953a);} @media(max-width:768px){.gld-live-bar,.gld-ticker,.gld-changes-strip{padding-left:16px;padding-right:16px;}}`; document.head.appendChild(s); } function pageKey() { return ( document.body.getAttribute('data-gmiie-page') || location.pathname.replace(/^\//, '').replace(/\.html$/, '') || 'home' ); } function formatTs(iso, tz) { if (!iso) return '—'; try { return new Intl.DateTimeFormat('en-US', { timeZone: tz || Intl.DateTimeFormat().resolvedOptions().timeZone, dateStyle: 'medium', timeStyle: 'short', }).format(new Date(iso)); } catch { return new Date(iso).toUTCString(); } } function timeoutSignal(ms) { if (global.AbortSignal && typeof global.AbortSignal.timeout === 'function') { return global.AbortSignal.timeout(ms); } return undefined; } function ensureChangesStrip() { if (document.getElementById('gld-changes-strip')) return document.getElementById('gld-changes-strip'); const strip = document.createElement('div'); strip.id = 'gld-changes-strip'; strip.className = 'gld-changes-strip'; strip.innerHTML = 'Changed since last refresh: No structural shifts detected. Markets and contract registries are within normal variance.'; const bar = document.getElementById('gld-live-bar'); if (bar && bar.parentNode) { bar.parentNode.insertBefore(strip, bar.nextSibling); } return strip; } function ensureLiveBar() { if (document.getElementById('gld-live-bar')) return document.getElementById('gld-live-bar'); injectStyles(); const bar = document.createElement('div'); bar.id = 'gld-live-bar'; bar.className = 'gld-live-bar'; bar.innerHTML = '
' + 'Loading live desk…' + '
' + '
' + '
' + '
' + '
Editorial Live: Human-verified feeds
' + '
API Partial: Metered x402 calls
' + '
LIVE: Active feeds
' + '
PARTIAL: Cached fallbacks
' + '
Stale data flagged: Component > 8h
' + '
' + '
' + '
Timestamps:
' + '
Page Updated: local browser render
' + '
Pipeline Refreshed: last 8h cycle
' + '
Module Updated: specific desk timestamp
' + '
Fact-Check: DB verification
' + '
'; const mast = document.querySelector('.hub-masthead') || document.querySelector('.masthead'); if (mast && mast.parentNode) { mast.parentNode.insertBefore(bar, mast.nextSibling); } else { const troptionsTop = document.querySelector('.troptions-top'); if (troptionsTop && troptionsTop.parentNode) { troptionsTop.parentNode.insertBefore(bar, troptionsTop.nextSibling); } else { document.body.insertBefore(bar, document.body.firstChild); } } const sel = bar.querySelector('#gld-jurisdiction-select'); sel.value = jurisdiction; sel.addEventListener('change', () => { jurisdiction = sel.value; localStorage.setItem('gmiie-jurisdiction', jurisdiction); loadDigest(); }); return bar; } function ensureWeekSection() { const main = document.querySelector('main'); if (!main || document.getElementById('gld-week')) return null; const sec = document.createElement('section'); sec.id = 'gld-week'; sec.className = 'gld-week'; sec.innerHTML = '
This week · GMIIE Live Desk
' + '' + ''; const intro = main.querySelector('.intro') || main.firstElementChild; if (intro && intro.nextSibling) { main.insertBefore(sec, intro.nextSibling); } else { main.prepend(sec); } return sec; } function ensureTicker() { if (document.getElementById('gld-ticker')) return; const cfg = DESK_PAGES[pageKey()] || {}; if (!cfg.showMarkets) return; injectStyles(); const t = document.createElement('div'); t.id = 'gld-ticker'; t.className = 'gld-ticker'; t.innerHTML = 'MarketsLoading…'; const bar = document.getElementById('gld-live-bar'); if (bar && bar.nextSibling) { bar.parentNode.insertBefore(t, bar.nextSibling); } else { const mast = document.querySelector('.masthead'); if (mast) mast.parentNode.insertBefore(t, mast.nextSibling); } } function formatAsOfUtc(iso) { if (!iso) return null; const d = new Date(iso); const pad = (n) => String(n).padStart(2, '0'); return ( d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + ' ' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ' UTC' ); } async function loadMarkets() { const el = document.getElementById('gld-ticker-body'); if (!el) return; try { const r = await fetch('/api/gmiie/live/markets', { signal: timeoutSignal(10000) }); const data = r.ok ? await r.json() : null; if (!data || data.status === 'unavailable' || !data.assets?.length) { el.textContent = data?.note || 'Markets feed unavailable'; if (data?.fetched_at) el.textContent += ' · last attempt ' + formatTs(data.fetched_at, 'UTC'); return; } const asOf = formatAsOfUtc(data.fetched_at); const parts = data.assets .slice(0, 2) .map((a) => a.symbol + ' $' + Math.round(a.price_usd).toLocaleString()); el.textContent = parts.join(' · ') + (asOf ? ' (prices as of ' + asOf + ')' : ''); } catch (_) { el.textContent = 'Markets feed unavailable'; } } async function loadDigest() { const tz = Intl.DateTimeFormat().resolvedOptions().timeZone; const url = '/api/gmiie/live/digest?jurisdiction=' + encodeURIComponent(jurisdiction) + '&tz=' + encodeURIComponent(tz); try { const r = await fetch(url, { signal: timeoutSignal(12000) }); if (!r.ok) throw new Error('digest-unavailable'); const data = await r.json(); const upd = document.getElementById('gld-last-updated'); if (upd && data) { let warn = ''; if (data.publish_blocked || data.verification?.passed === false) { warn = ' · Verification blocked — ' + esc((data.verification?.issues || []).map((i) => i.id).join(', ') || 'check failed') + ''; } else if (data.data_freshness?.markets_stale || data.data_freshness?.fraud_stale) { warn = ' · Stale data flagged'; } upd.innerHTML = 'Last updated: ' + formatTs(data.generated_at, data.timezone) + ' · ' + (data.timezone || tz) + (data.as_of_date ? ' · As of ' + data.as_of_date : '') + warn; } else if (upd) { upd.textContent = 'Live desk pending — static snapshot'; } const pubDate = document.getElementById('pub-date'); if (pubDate && data?.generated_at) { pubDate.textContent = formatTs(data.generated_at, data.timezone || tz).toUpperCase(); } const ftGen = document.getElementById('ft-gen'); if (ftGen && data?.generated_at) { ftGen.textContent = ' · Live desk ' + formatTs(data.generated_at, 'UTC'); } const list = document.getElementById('gld-week-list'); if (list && data?.this_week?.length) { list.innerHTML = data.this_week.map((i) => '
  • ' + esc(i.text) + '
  • ').join(''); } else if (list) { list.innerHTML = '
  • Digest pending — static fallback active. Check /api/gmiie/live/status for service health.
  • '; } const grok = document.getElementById('gld-grok-summary'); if (grok && data?.grok_summary) { grok.textContent = data.grok_summary; grok.style.display = 'block'; } else if (grok) { grok.style.display = 'none'; } const changes = document.getElementById('gld-changes-content'); if (changes) { changes.innerHTML = 'R3 Deploy up (+0.50 RegClarity on GENIUS Act) · BoJ rate hawk R2 language alert · BlackRock BUIDL reserves cross $2.5B on-chain · Gulf SWF Treasury reallocation SCFI -0.72.'; } } catch (_) { fallbackStaticDigest(); } } function esc(s) { const d = document.createElement('div'); d.textContent = s || ''; return d.innerHTML; } async function fallbackStaticDigest() { const list = document.getElementById('gld-week-list'); try { const r = await fetch('/data/gmiie-daily-digest.json', { signal: timeoutSignal(8000) }); if (!r.ok) throw new Error('static-digest-unavailable'); const data = await r.json(); const upd = document.getElementById('gld-last-updated'); if (upd) { upd.innerHTML = 'Last updated: ' + formatTs(data.generated_at, data.timezone) + ' · ' + (data.timezone || 'UTC') + ' (static fallback)'; } if (list && data.this_week) { list.innerHTML = data.this_week.map((i) => '
  • ' + esc(i.text) + '
  • ').join(''); } } catch (_) { const upd = document.getElementById('gld-last-updated'); if (upd) upd.textContent = 'Live desk unavailable — fallback guidance active'; if (list) { list.innerHTML = '
  • Live digest is temporarily unavailable. Use Query Console or refresh shortly.
  • '; } } } function init() { const key = pageKey(); if (!document.body.hasAttribute('data-gmiie-desk')) return; ensureLiveBar(); ensureChangesStrip(); if ( [ 'home', 'fraud', 'legislative', 'tracker', 'engine', 'cbdc', 'classroom', 'authors', 'satirist', ].includes(key) ) { ensureWeekSection(); } ensureTicker(); loadDigest(); loadMarkets(); setInterval(loadMarkets, 4 * 60 * 60 * 1000); setInterval(loadDigest, 30 * 60 * 1000); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } global.GMIIELiveDesk = { init, loadDigest, loadMarkets }; })(typeof window !== 'undefined' ? window : globalThis);