aboutsummaryrefslogtreecommitdiff
path: root/test-suite/index.html
diff options
context:
space:
mode:
authorTianren Dong <tianrendong.dtr@gmail.com>2026-05-13 07:29:41 -0400
committerTianren Dong <tianrendong.dtr@gmail.com>2026-05-13 07:29:41 -0400
commit4c54b05dc15b81e449dc8ac53da8bae536fa2798 (patch)
treef81c5e627dcc4dd81d2fe2fd3b2b584e72a73eca /test-suite/index.html
parent5951b3fb04aaf53b875afe265a57a944d6fce641 (diff)
pi-chrome: snapshot pre-migration state
Diffstat (limited to 'test-suite/index.html')
-rw-r--r--test-suite/index.html28
1 files changed, 28 insertions, 0 deletions
diff --git a/test-suite/index.html b/test-suite/index.html
index a4a3c0c..00ef204 100644
--- a/test-suite/index.html
+++ b/test-suite/index.html
@@ -35,6 +35,13 @@
<tbody></tbody>
</table>
+<h2>Long-horizon hermetic tasks</h2>
+<p class="hint">These WebArena/BrowserGym-inspired tasks use deterministic in-page graders and fresh <code>$RUN_ID</code> state. They test multi-step browser work beyond event fidelity.</p>
+<table id="taskTbl">
+ <thead><tr><th>id</th><th>difficulty</th><th>category</th><th>intent</th><th>requires</th><th>open</th></tr></thead>
+ <tbody></tbody>
+</table>
+
<h2>Agent run loop</h2>
<pre class="code">python3 -m http.server 8765
# For each manifest entry:
@@ -46,7 +53,9 @@
</main>
<script>
let manifest = [];
+let taskManifest = [];
const tbody = document.querySelector("#tbl tbody");
+const taskTbody = document.querySelector("#taskTbl tbody");
const modeEl = document.getElementById("mode");
const filterEl = document.getElementById("filter");
@@ -123,9 +132,28 @@ function paint() {
function escapeHtml(s) {
return String(s).replace(/[&<>"']/g, c => ({"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#39;"}[c]));
}
+function paintTasks() {
+ taskTbody.innerHTML = "";
+ const run = "manual-" + new Date().toISOString().slice(0,10);
+ for (const t of taskManifest) {
+ const url = t.startUrl.replaceAll("$RUN_ID", run).replaceAll("$SEED", String(t.seed ?? 0));
+ const tr = document.createElement("tr");
+ tr.innerHTML = `
+ <td><code>${t.taskId || t.id}</code><div class="notes">seed=${t.seed ?? 0} maxSteps=${t.maxSteps ?? "—"}</div></td>
+ <td><span class="pill expected">${t.difficulty}</span></td>
+ <td>${t.category}</td>
+ <td>${escapeHtml(t.goal || t.intent)}</td>
+ <td><div class="notes">${escapeHtml((t.requires || []).join(", "))}</div><div class="notes">actions: ${escapeHtml((t.actionSubsets || []).join(", "))}</div></td>
+ <td><a target="_blank" href="${url}">open</a></td>
+ `;
+ taskTbody.appendChild(tr);
+ }
+}
async function init() {
manifest = await fetch("manifest.json", { cache: "no-store" }).then(r => r.json());
+ taskManifest = await fetch("task-manifest.json", { cache: "no-store" }).then(r => r.json()).catch(() => []);
paint();
+ paintTasks();
}
document.getElementById("refresh").addEventListener("click", paint);
document.getElementById("clear").addEventListener("click", () => {