kimi-k2.7-code · cursor

cursor
config
kimi-k2.7-code--cli--cursor--dev
batch
2026-07-19--unified
transport
cursor-agent-cli-isolated-home
protocol
cli · plan
served model
kimi-k2.7-code
captured
Jul 18, 2026, 11:54 AM · N=2
variant
live
slot 0 · P-q · sandboxed iframe
kimi-k2.7-code · cursor P-q slot 0 screenshot

The screenshot is the exact frozen pixels the similarity channels measured. Run live re-executes the raw output in a sandboxed iframe; its rendering depends on your browser and fonts and is not guaranteed to match the measured pixels.

similarity neighborsNo similarity data for this session — this batch has no computed pairs.

Fidelity — does the card show the right data?

  • namematch
  • conditionmatch
  • datematch
  • max tempmismatchshown: 15
  • min tempmismatchshown: 18
  • hourlymismatchcoverage 0/24 · 0 match · 3 mismatch · 21 not shown
  • request sidematch0 violation(s)

extractor fidelity-extractor-v1+Berlin-2026-07-15

Source — raw model output, one byte unchanged

download card.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=1280">
  <title>Weather Card</title>
  <style>
    :root {
      --accent: #fbbf24;
    }
    * { box-sizing: border-box; }
    html, body {
      margin: 0;
      padding: 0;
      width: 100vw;
      height: 100vh;
      overflow: hidden;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
      background: linear-gradient(145deg, #0f172a, #1e293b 60%, #334155);
      color: #fff;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    body::before, body::after {
      content: "";
      position: absolute;
      border-radius: 50%;
      filter: blur(80px);
      z-index: -1;
      pointer-events: none;
    }
    body::before {
      top: -30%;
      left: -15%;
      width: 60%;
      height: 80%;
      background: radial-gradient(circle, var(--accent) 0%, transparent 60%);
      opacity: 0.12;
    }
    body::after {
      bottom: -25%;
      right: -15%;
      width: 55%;
      height: 70%;
      background: radial-gradient(circle, #38bdf8 0%, transparent 60%);
      opacity: 0.08;
    }
    #card {
      width: 1120px;
      height: 720px;
      border-radius: 40px;
      background: rgba(15, 23, 42, 0.55);
      backdrop-filter: blur(28px);
      -webkit-backdrop-filter: blur(28px);
      border: 1px solid rgba(255,255,255,0.12);
      box-shadow: 0 32px 100px rgba(0,0,0,0.35);
      padding: 60px;
      display: flex;
      flex-direction: column;
      position: relative;
    }
    #content {
      display: flex;
      flex-direction: column;
      height: 100%;
      justify-content: space-between;
    }
    header {
      display: flex;
      justify-content: space-between;
      align-items: flex-end;
      border-bottom: 1px solid rgba(255,255,255,0.1);
      padding-bottom: 32px;
    }
    #location {
      font-size: 52px;
      font-weight: 700;
      letter-spacing: -0.5px;
      margin: 0;
      line-height: 1.1;
    }
    #date {
      font-size: 18px;
      font-weight: 500;
      text-transform: uppercase;
      letter-spacing: 1.5px;
      opacity: 0.7;
      margin: 0;
    }
    #summary {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 40px;
      margin-top: 24px;
    }
    #condition {
      display: flex;
      align-items: center;
      gap: 28px;
    }
    #icon {
      width: 160px;
      height: 160px;
      filter: drop-shadow(0 8px 24px rgba(0,0,0,0.25));
      flex-shrink: 0;
    }
    #icon svg {
      width: 100%;
      height: 100%;
      display: block;
    }
    #condition-text {
      font-size: 32px;
      font-weight: 500;
      line-height: 1.2;
    }
    #temps {
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      gap: 12px;
    }
    .temp-pill {
      background: rgba(255,255,255,0.08);
      border: 1px solid rgba(255,255,255,0.12);
      border-radius: 16px;
      padding: 14px 22px;
      display: flex;
      align-items: baseline;
      gap: 8px;
      min-width: 140px;
      justify-content: flex-end;
    }
    .temp-label {
      font-size: 14px;
      text-transform: uppercase;
      letter-spacing: 1px;
      opacity: 0.65;
      margin-right: auto;
    }
    .temp-value {
      font-size: 28px;
      font-weight: 700;
    }
    .temp-unit {
      font-size: 18px;
      opacity: 0.7;
    }
    #hourly {
      margin-top: 28px;
    }
    #hourly h2 {
      font-size: 16px;
      text-transform: uppercase;
      letter-spacing: 1.5px;
      opacity: 0.65;
      margin: 0 0 16px;
    }
    #chart {
      width: 100%;
      height: 240px;
      background: rgba(255,255,255,0.04);
      border-radius: 24px;
      border: 1px solid rgba(255,255,255,0.08);
      position: relative;
      overflow: hidden;
    }
    #chart svg {
      display: block;
    }
    .axis {
      fill: rgba(255,255,255,0.5);
      font-size: 12px;
      font-weight: 500;
    }
    .grid-line {
      stroke: rgba(255,255,255,0.08);
      stroke-width: 1;
    }
    .area-fill {
      fill: url(#areaGradient);
      opacity: 0.35;
    }
    .temp-line {
      fill: none;
      stroke: var(--accent);
      stroke-width: 4;
      stroke-linecap: round;
      stroke-linejoin: round;
      filter: drop-shadow(0 2px 8px rgba(0,0,0,0.2));
    }
    .data-point {
      fill: #0f172a;
      stroke: var(--accent);
      stroke-width: 3;
      transition: r 0.2s;
    }
    .data-point:hover {
      r: 6;
    }
    #cursor-line {
      stroke: rgba(255,255,255,0.25);
      stroke-width: 1;
      stroke-dasharray: 4 4;
      display: none;
    }
    #tooltip {
      position: absolute;
      pointer-events: none;
      background: rgba(15, 23, 42, 0.9);
      border: 1px solid rgba(255,255,255,0.15);
      border-radius: 10px;
      padding: 8px 12px;
      font-size: 13px;
      color: #fff;
      box-shadow: 0 8px 24px rgba(0,0,0,0.25);
      opacity: 0;
      transition: opacity 0.15s;
      transform: translate(-50%, -125%);
      white-space: nowrap;
    }
    #error {
      display: none;
      text-align: center;
      margin: auto;
    }
    #error svg {
      opacity: 0.7;
    }
    #error p {
      opacity: 0.7;
      margin-top: 16px;
      font-size: 18px;
    }

    @keyframes spin {
      from { transform: rotate(0deg); }
      to { transform: rotate(360deg); }
    }
    @keyframes float {
      0%, 100% { transform: translateY(0); }
      50% { transform: translateY(-4px); }
    }
    @keyframes fall {
      0% { transform: translateY(-6px); opacity: 0; }
      20% { opacity: 1; }
      100% { transform: translateY(18px); opacity: 0; }
    }
    @keyframes flash {
      0%, 100% { opacity: 0.3; }
      50% { opacity: 1; }
    }
    .sun-rays {
      transform-origin: center;
      animation: spin 18s linear infinite;
    }
    .cloud {
      animation: float 4s ease-in-out infinite;
    }
    .drop {
      animation: fall 1.2s linear infinite;
    }
    .drop:nth-child(2) { animation-delay: 0.2s; }
    .drop:nth-child(3) { animation-delay: 0.4s; }
    .bolt {
      animation: flash 1.5s ease-in-out infinite;
    }
  </style>
</head>
<body>
  <div id="card">
    <div id="error">
      <svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <circle cx="12" cy="12" r="10"/>
        <line x1="12" y1="8" x2="12" y2="12"/>
        <line x1="12" y1="16" x2="12.01" y2="16"/>
      </svg>
      <p>Weather data could not be loaded.</p>
    </div>
    <div id="content">
      <header>
        <h1 id="location">Berlin</h1>
        <p id="date">—</p>
      </header>
      <section id="summary">
        <div id="condition">
          <div id="icon"></div>
          <div id="condition-text">—</div>
        </div>
        <div id="temps">
          <div class="temp-pill">
            <span class="temp-label">High</span>
            <span class="temp-value" id="max">--</span>
            <span class="temp-unit">°C</span>
          </div>
          <div class="temp-pill">
            <span class="temp-label">Low</span>
            <span class="temp-value" id="min">--</span>
            <span class="temp-unit">°C</span>
          </div>
        </div>
      </section>
      <section id="hourly">
        <h2>Hourly Temperature</h2>
        <div id="chart">
          <svg id="chart-svg" width="100%" height="100%" viewBox="0 0 1000 260"></svg>
          <div id="tooltip"></div>
        </div>
      </section>
    </div>
  </div>

  <script>
    const svgs = {
      clear: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <defs><radialGradient id="gSun" cx="50%" cy="50%" r="50%"><stop offset="0%" stop-color="#fff7ed"/><stop offset="100%" stop-color="var(--accent)"/></radialGradient></defs>
        <g class="sun-rays" stroke="var(--accent)" stroke-width="6" stroke-linecap="round">
          <line x1="60" y1="8" x2="60" y2="24"/><line x1="60" y1="96" x2="60" y2="112"/>
          <line x1="8" y1="60" x2="24" y2="60"/><line x1="96" y1="60" x2="112" y2="60"/>
          <line x1="23" y1="23" x2="34" y2="34"/><line x1="86" y1="86" x2="97" y2="97"/>
          <line x1="23" y1="97" x2="34" y2="86"/><line x1="86" y1="34" x2="97" y2="23"/>
        </g>
        <circle cx="60" cy="60" r="24" fill="url(#gSun)"/>
      </svg>`,
      partlyCloudy: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="sun-rays" stroke="var(--accent)" stroke-width="5" stroke-linecap="round">
          <line x1="42" y1="10" x2="42" y2="24"/><line x1="10" y1="42" x2="24" y2="42"/><line x1="18" y1="18" x2="28" y2="28"/>
        </g>
        <circle cx="42" cy="42" r="18" fill="var(--accent)"/>
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="65" cy="78" r="20"/><circle cx="85" cy="68" r="24"/><circle cx="105" cy="78" r="18"/><circle cx="85" cy="92" r="18"/>
        </g>
      </svg>`,
      cloudy: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="40" cy="75" r="22"/><circle cx="60" cy="60" r="28"/><circle cx="85" cy="75" r="22"/><circle cx="60" cy="90" r="20"/>
        </g>
      </svg>`,
      fog: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.8">
          <circle cx="40" cy="58" r="20"/><circle cx="60" cy="48" r="24"/><circle cx="85" cy="58" r="20"/><circle cx="60" cy="72" r="18"/>
        </g>
        <g stroke="var(--accent)" stroke-width="5" stroke-linecap="round" opacity="0.7">
          <line x1="20" y1="88" x2="100" y2="88"/><line x1="30" y1="102" x2="90" y2="102"/>
        </g>
      </svg>`,
      drizzle: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="40" cy="55" r="20"/><circle cx="60" cy="42" r="26"/><circle cx="85" cy="55" r="20"/><circle cx="60" cy="70" r="18"/>
        </g>
        <g stroke="var(--accent)" stroke-width="4" stroke-linecap="round">
          <line class="drop" x1="45" y1="78" x2="42" y2="92"/><line class="drop" x1="60" y1="80" x2="57" y2="94"/><line class="drop" x1="75" y1="78" x2="72" y2="92"/>
        </g>
      </svg>`,
      rain: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="40" cy="55" r="20"/><circle cx="60" cy="42" r="26"/><circle cx="85" cy="55" r="20"/><circle cx="60" cy="70" r="18"/>
        </g>
        <g stroke="#60a5fa" stroke-width="4" stroke-linecap="round">
          <line class="drop" x1="42" y1="80" x2="36" y2="102"/><line class="drop" x1="60" y1="82" x2="54" y2="104"/><line class="drop" x1="78" y1="80" x2="72" y2="102"/>
        </g>
      </svg>`,
      snow: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="40" cy="55" r="20"/><circle cx="60" cy="42" r="26"/><circle cx="85" cy="55" r="20"/><circle cx="60" cy="70" r="18"/>
        </g>
        <g fill="#fff" font-size="24" font-weight="bold">
          <text class="drop" x="38" y="98">*</text><text class="drop" x="58" y="104">*</text><text class="drop" x="78" y="98">*</text>
        </g>
      </svg>`,
      showers: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="40" cy="55" r="20"/><circle cx="60" cy="42" r="26"/><circle cx="85" cy="55" r="20"/><circle cx="60" cy="70" r="18"/>
        </g>
        <g stroke="#38bdf8" stroke-width="4" stroke-linecap="round">
          <line class="drop" x1="40" y1="80" x2="34" y2="104"/><line class="drop" x1="52" y1="82" x2="46" y2="106"/>
          <line class="drop" x1="68" y1="82" x2="62" y2="106"/><line class="drop" x1="80" y1="80" x2="74" y2="104"/>
        </g>
      </svg>`,
      thunder: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="40" cy="55" r="20"/><circle cx="60" cy="42" r="26"/><circle cx="85" cy="55" r="20"/><circle cx="60" cy="70" r="18"/>
        </g>
        <polygon class="bolt" points="58,70 48,92 62,92 54,118 80,86 64,86 74,70" fill="var(--accent)"/>
      </svg>`,
      unknown: `<svg viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg">
        <g class="cloud" fill="#fff" fill-opacity="0.95">
          <circle cx="40" cy="60" r="20"/><circle cx="60" cy="48" r="26"/><circle cx="85" cy="60" r="20"/><circle cx="60" cy="74" r="18"/>
        </g>
        <text x="60" y="90" text-anchor="middle" fill="var(--accent)" font-size="34" font-weight="bold">?</text>
      </svg>`
    };

    function getWeatherInfo(code) {
      const base = { color: '#94a3b8', label: 'Unknown', icon: 'unknown' };
      const map = {
        0: { color: '#f59e0b', label: 'Clear sky', icon: 'clear' },
        1: { color: '#fbbf24', label: 'Mainly clear', icon: 'partlyCloudy' },
        2: { color: '#fbbf24', label: 'Partly cloudy', icon: 'partlyCloudy' },
        3: { color: '#94a3b8', label: 'Overcast', icon: 'cloudy' },
        45: { color: '#cbd5e1', label: 'Fog', icon: 'fog' },
        48: { color: '#cbd5e1', label: 'Rime fog', icon: 'fog' },
        51: { color: '#60a5fa', label: 'Light drizzle', icon: 'drizzle' },
        53: { color: '#60a5fa', label: 'Moderate drizzle', icon: 'drizzle' },
        55: { color: '#60a5fa', label: 'Dense drizzle', icon: 'drizzle' },
        56: { color: '#60a5fa', label: 'Freezing drizzle', icon: 'drizzle' },
        57: { color: '#60a5fa', label: 'Heavy freezing drizzle', icon: 'drizzle' },
        61: { color: '#3b82f6', label: 'Slight rain', icon: 'rain' },
        63: { color: '#3b82f6', label: 'Moderate rain', icon: 'rain' },
        65: { color: '#3b82f6', label: 'Heavy rain', icon: 'rain' },
        66: { color: '#3b82f6', label: 'Freezing rain', icon: 'rain' },
        67: { color: '#3b82f6', label: 'Heavy freezing rain', icon: 'rain' },
        71: { color: '#e2e8f0', label: 'Slight snow', icon: 'snow' },
        73: { color: '#e2e8f0', label: 'Moderate snow', icon: 'snow' },
        75: { color: '#e2e8f0', label: 'Heavy snow', icon: 'snow' },
        77: { color: '#e2e8f0', label: 'Snow grains', icon: 'snow' },
        80: { color: '#38bdf8', label: 'Slight showers', icon: 'showers' },
        81: { color: '#38bdf8', label: 'Moderate showers', icon: 'showers' },
        82: { color: '#38bdf8', label: 'Violent showers', icon: 'showers' },
        85: { color: '#e2e8f0', label: 'Snow showers', icon: 'snow' },
        86: { color: '#e2e8f0', label: 'Heavy snow showers', icon: 'snow' },
        95: { color: '#a855f7', label: 'Thunderstorm', icon: 'thunder' },
        96: { color: '#a855f7', label: 'Thunderstorm with hail', icon: 'thunder' },
        99: { color: '#a855f7', label: 'Thunderstorm with heavy hail', icon: 'thunder' }
      };
      return map[code] || base;
    }

    const query = new URLSearchParams(window.location.search);
    const lat = parseFloat(query.get('lat')) || 52.52;
    const lon = parseFloat(query.get('lon')) || 13.405;
    const name = query.get('name') || 'Berlin';
    const today = new Date().toISOString().split('T')[0];
    const date = query.get('date') || today;

    const locationEl = document.getElementById('location');
    const dateEl = document.getElementById('date');
    const conditionTextEl = document.getElementById('condition-text');
    const iconEl = document.getElementById('icon');
    const maxEl = document.getElementById('max');
    const minEl = document.getElementById('min');

    locationEl.textContent = name;
    const dateObj = new Date(date + 'T00:00:00Z');
    dateEl.textContent = isNaN(dateObj) ? date : dateObj.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' });

    const endpoint = date < today ? '/api/om/archive' : '/api/om/forecast';
    const apiParams = new URLSearchParams();
    apiParams.set('latitude', lat);
    apiParams.set('longitude', lon);
    apiParams.set('daily', 'temperature_2m_max,temperature_2m_min,weather_code');
    apiParams.set('hourly', 'temperature_2m');
    apiParams.set('timezone', 'UTC');
    apiParams.set('temperature_unit', 'celsius');
    apiParams.set('start_date', date);
    apiParams.set('end_date', date);

    fetch(`${endpoint}?${apiParams}`)
      .then(r => { if (!r.ok) throw new Error('HTTP ' + r.status); return r.json(); })
      .then(data => {
        if (!data.daily || !data.hourly || !data.daily.time || !data.daily.time.length) {
          throw new Error('Incomplete data');
        }
        const i = data.daily.time.findIndex(t => t.startsWith && t.startsWith(date));
        const idx = i >= 0 ? i : 0;
        const maxTemp = data.daily.temperature_2m_max[idx];
        const minTemp = data.daily.temperature_2m_min[idx];
        const code = data.daily.weather_code[idx];
        const info = getWeatherInfo(code);
        document.documentElement.style.setProperty('--accent', info.color);
        maxEl.textContent = Number(maxTemp).toFixed(1);
        minEl.textContent = Number(minTemp).toFixed(1);
        conditionTextEl.textContent = info.label;
        iconEl.innerHTML = svgs[info.icon];

        const hourly = data.hourly.time.map((t, idx) => ({
          time: t,
          temp: data.hourly.temperature_2m[idx]
        })).filter(h => h.time.startsWith && h.time.startsWith(date));
        drawChart(hourly);
      })
      .catch(() => {
        document.getElementById('content').style.display = 'none';
        document.getElementById('error').style.display = 'block';
      });

    function drawChart(dayData) {
      const svg = document.getElementById('chart-svg');
      const tooltip = document.getElementById('tooltip');
      svg.innerHTML = '';
      if (!dayData || dayData.length < 2) return;

      const W = 1000, H = 260, PL = 56, PR = 24, PT = 30, PB = 48;
      const plotW = W - PL - PR;
      const plotH = H - PT - PB;
      const temps = dayData.map(d => d.temp);
      const minT = Math.min(...temps);
      const maxT = Math.max(...temps);
      const pad = Math.max((maxT - minT) * 0.15, 0.5);
      const yMin = minT - pad;
      const yMax = maxT + pad;
      const x = i => PL + i * (plotW / (dayData.length - 1));
      const y = t => H - PB - ((t - yMin) / (yMax - yMin)) * plotH;

      const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');
      defs.innerHTML = `<linearGradient id="areaGradient" x1="0" y1="0" x2="0" y2="1">
        <stop offset="0%" stop-color="var(--accent)" stop-opacity="0.6"/>
        <stop offset="100%" stop-color="var(--accent)" stop-opacity="0"/>
      </linearGradient>`;
      svg.appendChild(defs);

      const steps = 4;
      for (let s = 0; s <= steps; s++) {
        const t = yMin + (yMax - yMin) * (s / steps);
        const yp = y(t);
        const line = createSVGElement('line', {
          x1: PL, x2: W - PR, y1: yp, y2: yp, class: 'grid-line'
        });
        svg.appendChild(line);
        const text = createSVGElement('text', {
          x: PL - 10, y: yp + 4, 'text-anchor': 'end', class: 'axis'
        });
        text.textContent = Math.round(t) + '°';
        svg.appendChild(text);
      }

      let d = `M ${x(0)} ${y(dayData[0].temp)}`;
      for (let i = 1; i < dayData.length; i++) d += ` L ${x(i)} ${y(dayData[i].temp)}`;
      const area = createSVGElement('path', { d: d + ` L ${x(dayData.length - 1)} ${H - PB} L ${x(0)} ${H - PB} Z`, class: 'area-fill' });
      svg.appendChild(area);
      const line = createSVGElement('path', { d, class: 'temp-line' });
      svg.appendChild(line);

      dayData.forEach((pt, i) => {
        const c = createSVGElement('circle', { cx: x(i), cy: y(pt.temp), r: 4, class: 'data-point' });
        svg.appendChild(c);
      });

      dayData.forEach((pt, i) => {
        if (i % 3 !== 0) return;
        const hour = parseInt(pt.time.split('T')[1].split(':')[0], 10).toString().padStart(2, '0');
        const text = createSVGElement('text', {
          x: x(i), y: H - 16, 'text-anchor': 'middle', class: 'axis'
        });
        text.textContent = hour + ':00';
        svg.appendChild(text);
      });

      const cursorLine = createSVGElement('line', { id: 'cursor-line', y1: PT, y2: H - PB });
      svg.appendChild(cursorLine);

      const overlay = createSVGElement('rect', { x: 0, y: 0, width: W, height: H, fill: 'transparent' });
      svg.appendChild(overlay);

      svg.addEventListener('mousemove', e => {
        const rect = svg.getBoundingClientRect();
        const vx = (e.clientX - rect.left) * (W / rect.width);
        let idx = Math.round((vx - PL) / (plotW / (dayData.length - 1)));
        idx = Math.max(0, Math.min(dayData.length - 1, idx));
        const pt = dayData[idx];
        const px = x(idx);
        const py = y(pt.temp);
        cursorLine.setAttribute('x1', px);
        cursorLine.setAttribute('x2', px);
        cursorLine.style.display = 'block';
        const hour = parseInt(pt.time.split('T')[1].split(':')[0], 10).toString().padStart(2, '0');
        tooltip.textContent = `${hour}:00 — ${pt.temp.toFixed(1)}°C`;
        tooltip.style.left = (px / W * rect.width) + 'px';
        tooltip.style.top = (py / H * rect.height) + 'px';
        tooltip.style.opacity = 1;
      });
      svg.addEventListener('mouseleave', () => {
        cursorLine.style.display = 'none';
        tooltip.style.opacity = 0;
      });
    }

    function createSVGElement(tag, attrs) {
      const el = document.createElementNS('http://www.w3.org/2000/svg', tag);
      for (const [k, v] of Object.entries(attrs)) el.setAttribute(k, v);
      return el;
    }
  </script>
</body>
</html>

L1 — cheap deterministic descriptors

bytes total22,014html / css / js1,608 / 6,074 / 14,332
dom nodes37dom depth8
css rules55js presentyes
brightness38.0contrast23.3
colorfulness13.7whitespace83.4%

This slot's telemetry

prompt tokens40,775completion tokens31,493
total tokens72,268wall189.5 s
costrequest id
config.json563 B
{
  "N": 2,
  "auth": {
    "credential_ref": "WCB_NONE",
    "method": "oauth-login"
  },
  "billing": "plan",
  "config_id": "kimi-k2.7-code--cli--cursor--dev",
  "effort": null,
  "family": "kimi",
  "m": {
    "min": 2,
    "q": 2
  },
  "model_id": "kimi-k2.7-code",
  "protocol": "cli",
  "served_model": "kimi-k2.7-code",
  "telemetry": {
    "completion_tokens": 58029,
    "cost_usd": null,
    "prompt_tokens": 77977,
    "total_tokens": 136006,
    "wall_ms": 360887
  },
  "transport": "cursor-agent-cli-isolated-home",
  "vendor_sanction_ref": null
}
send-log2.5 KB
{
  "N": 2,
  "batch_id": "2026-08-13--cursor-s1",
  "config_id": "kimi-k2.7-code--cli--cursor--dev",
  "positions": [
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T02:10:19.468226+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T02:09:32.797850+00:00"
        }
      ],
      "block_index": 0,
      "model_reaching_attempt_index": 0,
      "slot_index": 0,
      "terminal_state": "valid",
      "variant": "P-min"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T02:13:32.655200+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T02:10:23.151132+00:00"
        }
      ],
      "block_index": 0,
      "model_reaching_attempt_index": 0,
      "slot_index": 0,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T02:14:58.269604+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T02:13:35.811208+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "valid",
      "variant": "P-q"
    },
    {
      "attempts": [
        {
          "attempt_index": 0,
          "backoff_ms": null,
          "charged": true,
          "ended_at": "2026-08-13T02:15:44.158183+00:00",
          "http_status": null,
          "outcome": "valid",
          "reached_model": true,
          "reason": "ok",
          "request_id": null,
          "started_at": "2026-08-13T02:15:01.894521+00:00"
        }
      ],
      "block_index": 1,
      "model_reaching_attempt_index": 0,
      "slot_index": 1,
      "terminal_state": "valid",
      "variant": "P-min"
    }
  ],
  "retry_policy": {
    "max_unreachable_retries": 5,
    "rate_limit_backoff": {
      "max_attempts": 4,
      "max_total_ms": 60000
    }
  }
}