const api = window.kitty; const meshKind = document.querySelector("#mesh-kind"); const contextCount = document.querySelector("#context-count"); const taskCount = document.querySelector("#task-count"); const contexts = document.querySelector("#contexts"); const results = document.querySelector("#results"); let currentContextId = null; function renderSnapshot(snapshot) { meshKind.textContent = snapshot.mesh; contextCount.textContent = String(snapshot.contexts.length); taskCount.textContent = String(snapshot.results.length); currentContextId = currentContextId ?? snapshot.contexts[0]?.id ?? null; contexts.replaceChildren( ...snapshot.contexts.map((context) => { const node = document.createElement("div"); node.className = "item"; node.innerHTML = ` ${context.label}
${context.id}
URL: ${context.url}
VM: ${context.vmTarget} / IDE: ${context.ideTarget}
Entropy: ${context.entropy}
`; node.addEventListener("click", () => { currentContextId = context.id; }); return node; }), ); results.replaceChildren( ...snapshot.results.map((result) => { const node = document.createElement("div"); node.className = "item"; node.innerHTML = ` ${result.status}: ${result.id}
${result.message}
Entropy ${result.entropy}
`; return node; }), ); } async function refresh() { const snapshot = await api.snapshot(); renderSnapshot(snapshot); } document.querySelector("#new-context").addEventListener("click", async () => { const context = await api.createContext({ label: `Agent Context ${Date.now().toString().slice(-4)}`, url: "kitty://task", vmTarget: document.querySelector("#vm-target").value, ideTarget: document.querySelector("#ide-target").value, }); currentContextId = context.id; await refresh(); }); document.querySelector("#run-task").addEventListener("click", async () => { await api.submitTask({ contextId: currentContextId, command: document.querySelector("#command").value, payload: { source: "renderer", pointer: "kitty://task" }, dependencies: [], failRate: Number(document.querySelector("#fail-rate").value), latencyMs: Number(document.querySelector("#latency").value), vmTarget: document.querySelector("#vm-target").value, ideTarget: document.querySelector("#ide-target").value, }); await new Promise((resolve) => setTimeout(resolve, 50)); await refresh(); }); refresh(); setInterval(refresh, 1500);