{# Cassette table fragment. Rendered standalone on /partials/index_table for HTMX-driven live refresh. Also included in index.html on first paint. #} {% if cassettes %}
{% for c in cassettes %} {% endfor %}
path providers interactions size modified
{{ c.rel }} {% for p in c.providers %}{{ p }}{% endfor %} {% if not c.providers %}-{% endif %} {{ c.interactions }} {{ c.size | bytes_human }} {{ c.modified | since }}
{% else %}
{% if search %}

No cassettes match "{{ search }}"

Try a shorter query, or clear the search.

{% else %}

No cassettes recorded yet under {{ root or "this directory" }}

Record one by wrapping your LLM-calling code with @cuesheet.cassette(...).

# tests/test_summarizer.py
import cuesheet

@cuesheet.cassette("tests/cassettes/test_summarizer.yaml")
def test_summarizer():
    from anthropic import Anthropic
    client = Anthropic()
    r = client.messages.create(
        model="claude-sonnet-4-5",
        messages=[{"role": "user", "content": "..."}],
    )
    assert "key point" in r.content[0].text

First run hits the real API; every run after replays from the YAML. This page updates live as files appear.

{% endif %}
{% endif %}