SML-Tree-Explorer / site /index.html
SMLBuilder's picture
Publish traceable conversation explorer and standalone Python decoder
f425b0b verified
Raw History Blame Contribute Delete
9.37 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Explore SML conversation trees in real time. Follow a response, keep its conversation history, and trace every turn to the original dataset with a lightweight Python decoder.">
<title>SML · Conversation Tree Explorer</title>
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="/style.css">
<script src="/app.js" defer></script>
</head>
<body>
<a class="skip" href="#explorer">Skip to explorer</a>
<header class="topbar wrap">
<a class="brand" href="/" aria-label="SML home"><span class="brand-icon" aria-hidden="true">⌘</span><b>SML</b><span class="brand-caption">CONVERSATION SYSTEMS</span></a>
<nav aria-label="Main navigation">
<a href="https://huggingface.co/datasets/SMLBuilder/SML-Conversation-Trees" target="_blank" rel="noopener noreferrer">Public dataset <span aria-hidden="true">↗</span></a>
<a href="#decoder">Python decoder</a>
<a class="nav-cta" href="#explorer">Explore the trees <span aria-hidden="true">↘</span></a>
</nav>
</header>
<main>
<section class="hero wrap" aria-labelledby="hero-title">
<div class="hero-copy">
<p class="eyebrow"><span class="live-dot"></span> OPEN DATA. VISIBLE REASONING PATHS.</p>
<h1 id="hero-title">Every conversation<br>has a <em>path.</em></h1>
<p class="intro">Follow a reply. See where it leads. Explore recorded conversation trees with their context intact—and trace every turn back to its source.</p>
<div class="hero-tags"><span>Live branch navigation</span><span>Traceable source data</span><span>Lightweight Python</span></div>
</div>
<div class="hero-visual" aria-hidden="true">
<div class="visual-caption">ONE CHOICE. A DIFFERENT CONVERSATION.</div>
<div class="visual-root"><span class="node-dot"></span>A conversation begins</div>
<div class="tree-stem"></div><div class="tree-arms"></div>
<div class="visual-row"><div class="visual-leaf muted">A possible reply</div><div class="visual-leaf chosen">Your chosen reply <span>↗</span></div><div class="visual-leaf muted">Another direction</div></div>
<div class="chosen-stem"></div>
<div class="visual-next"><span class="node-dot"></span>Context comes with you</div>
<div class="visual-foot"><span>ROOT</span><span>BRANCH</span><span>CONTINUATION</span></div>
</div>
</section>
<section class="workspace wrap" id="explorer" aria-labelledby="explorer-heading">
<div class="workspace-heading"><div><p class="eyebrow">THE LIVE EXPLORER</p><h2 id="explorer-heading">Take a conversation somewhere.</h2></div><span class="runtime-badge"><span class="live-dot"></span> Recorded data · no model inference</span></div>
<div id="error" class="error" role="alert" hidden></div>
<div class="explorer-grid">
<aside class="library panel" aria-labelledby="library-heading">
<div class="panel-heading"><h3 id="library-heading"><span class="step">01</span> The library</h3><span id="catalog-count" class="count">…</span></div>
<div class="library-controls">
<label class="search-label" for="search">Find a topic</label>
<input id="search" type="search" placeholder="Friends, Python, stories…" autocomplete="off">
<label class="sr-only" for="category">Collection</label><select id="category"><option value="">All collections</option></select>
<p id="results-caption" class="small muted-text" aria-live="polite">Loading public catalog…</p>
</div>
<div id="library-list" class="library-list" aria-label="Dataset files"></div>
<div class="library-footer">Public files, pinned to source revisions.<br>Includes trees, chats and training tables.</div>
</aside>
<section class="conversation panel" aria-labelledby="conversation-heading">
<div class="panel-heading"><h3 id="conversation-heading"><span class="step">02</span> The conversation</h3><span id="latency" class="small muted-text"></span></div>
<div class="conversation-toolbar"><div><span id="topic-category" class="topic-category">CHILDREN</span><h4 id="topic-title">Loading a conversation…</h4></div><button id="reset" class="icon-button" title="Restart this conversation" aria-label="Restart conversation">↺</button></div>
<div id="conversation-select-wrap" class="root-select" hidden><label for="conversation-select">Conversation</label><select id="conversation-select"></select></div>
<div id="path" class="path" aria-label="Selected branch path"></div>
<div id="loading" class="loading" role="status" hidden>Loading and verifying the source…</div>
<div id="conversation-body" class="conversation-body" aria-busy="true">
<div id="transcript" class="transcript" role="log" aria-label="Recorded conversation"></div>
<div id="choices-heading" class="choices-heading"><span>CHOOSE A REPLY</span><span id="choice-count"></span></div>
<div id="choices" class="choices"></div>
<div id="end" class="end" hidden><span>✓</span><h4>You reached the end of this branch.</h4><p>Go back to any step above to explore another direction.</p></div>
<div id="unsupported" class="unsupported" hidden><h4>This file is a training artifact.</h4><p>No supported conversation tree or message sequence was found. You can inspect the original file, or choose another topic.</p></div>
</div>
<div class="conversation-footer"><button id="back" class="text-button">← Previous choice</button><span id="turn-count" class="small muted-text">0 turns</span></div>
</section>
<aside class="trace panel" aria-labelledby="trace-heading">
<div class="panel-heading"><h3 id="trace-heading"><span class="step">03</span> The trace</h3><span class="trace-mark" aria-hidden="true">⌁</span></div>
<div class="trace-body">
<div id="verified" class="verified">Waiting for source verification</div>
<p class="trace-intro">Every turn points to the original data. Select a turn to inspect its metadata.</p>
<dl class="source-facts"><dt>Collection</dt><dd id="source-repo">—</dd><dt>Format</dt><dd id="schema">—</dd><dt>Recorded branch path</dt><dd id="branch-path" class="mono">root</dd><dt>Revision</dt><dd id="revision" class="mono">—</dd></dl>
<a id="source-link" class="source-link" href="https://huggingface.co/SMLBuilder" target="_blank" rel="noopener noreferrer">Open original source ↗</a>
<div class="trace-divider"></div>
<label class="trace-label" for="turn-select">INSPECT A TURN</label><select id="turn-select"></select>
<p class="trace-label pointer-label">JSON POINTER</p><code id="pointer" class="pointer">—</code>
<p class="trace-label">ORIGINAL TILE METADATA</p><pre id="metadata" tabindex="0">{}</pre>
<details class="hash-details"><summary>Verified content hash</summary><code id="sha256"></code></details>
<a id="export" class="export-button" href="#" download="sml-conversation-trace.json">↓ Download this trace</a>
<button id="share" class="text-button share">Copy a link to this path</button>
</div>
</aside>
</div>
<p class="demo-note">This explorer replays recorded dataset content. It does not generate answers or evaluate their accuracy. Health, emergency and other specialist examples are dataset demonstrations.</p>
</section>
<section class="decoder-section wrap" id="decoder" aria-labelledby="decoder-title">
<div class="decoder-copy"><p class="eyebrow">SMALL ENGINE. COMPLETE CONTEXT.</p><h2 id="decoder-title">Take the decoder<br>with you.</h2><p>One Python file. Standard library only. Walk a single path or export every reachable state with its full conversation history, branch indices and original JSON pointers.</p><div class="decoder-links"><a class="dark-button" href="/tree_decoder.py" download>↓ Download Python decoder</a><a href="/AAC_cli_original.py" download>Original AAC CLI ↗</a></div></div>
<div class="code-card"><div class="code-title"><span class="code-dots">● ● ●</span><span>terminal · Python 3.9+</span></div><pre><span class="code-comment"># Find the conversations in any downloaded tree</span>
python3 tree_decoder.py conversation.json --list
<span class="code-comment"># Follow the exact recorded branches (zero-based)</span>
python3 tree_decoder.py conversation.json \
--conversation 0 --path 0,2,1
<span class="code-comment"># Keep every tree, every path, every turn</span>
python3 tree_decoder.py conversation.json --all \
&gt; conversation-traces.jsonl</pre><div class="code-footer">No model weights. No API key. No inference service.</div></div>
</section>
</main>
<footer class="footer wrap"><div class="brand"><span class="brand-icon" aria-hidden="true">⌘</span><b>SML</b><span>Trace the conversation.</span></div><a href="https://huggingface.co/SMLBuilder" target="_blank" rel="noopener noreferrer">Built by SMLBuilder · Hugging Face ↗</a></footer>
</body>
</html>