agent-runtime/static/index.html
Nico b6ca02f864 v0.9.2: dedicated UI node, strict node roles, markdown rendering
6-node pipeline: Input -> Thinker -> Output (voice) + UI (screen) in parallel

- Output: text only (markdown, emoji). Never emits HTML or controls.
- UI: dedicated node for labels, buttons, tables. Tracks workspace state.
  Replaces entire workspace on each update. Runs parallel with Output.
- Input: strict one-sentence perception. No more hallucinating responses.
- Thinker: controls removed from prompt, focuses on reasoning + tools.
- Frontend: markdown rendered in chat (bold, italic, code blocks, lists).
  Label control type added. UI node meter in top bar.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 14:12:15 +01:00

64 lines
2.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>cog</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<div id="top-bar">
<h1>cog</h1>
<div id="status">disconnected</div>
</div>
<div id="node-metrics">
<div class="node-meter" id="meter-input"><span class="nm-label">input</span><div class="nm-bar"><div class="nm-fill"></div></div><span class="nm-text"></span></div>
<div class="node-meter" id="meter-thinker"><span class="nm-label">thinker</span><div class="nm-bar"><div class="nm-fill"></div></div><span class="nm-text"></span></div>
<div class="node-meter" id="meter-output"><span class="nm-label">output</span><div class="nm-bar"><div class="nm-fill"></div></div><span class="nm-text"></span></div>
<div class="node-meter" id="meter-memorizer"><span class="nm-label">memorizer</span><div class="nm-bar"><div class="nm-fill"></div></div><span class="nm-text"></span></div>
<div class="node-meter" id="meter-ui"><span class="nm-label">ui</span><div class="nm-bar"><div class="nm-fill"></div></div><span class="nm-text"></span></div>
<div class="node-meter" id="meter-sensor"><span class="nm-label">sensor</span><span class="nm-text" style="flex:1"></span></div>
</div>
<div id="main">
<div class="panel chat-panel">
<div class="panel-header chat-h">Chat</div>
<div id="messages"></div>
<div id="input-bar">
<input id="input" placeholder="Type a message..." autocomplete="off">
<button onclick="send()">Send</button>
</div>
</div>
<div class="panel awareness-panel">
<div class="panel-header aware-h">Awareness</div>
<div id="awareness">
<section id="awareness-state" class="aw-section">
<h3 class="aw-title">State</h3>
<div class="aw-body" id="aw-state-body"><span class="aw-empty">waiting for data...</span></div>
</section>
<section id="awareness-sensors" class="aw-section">
<h3 class="aw-title">Sensors</h3>
<div class="aw-body" id="aw-sensors-body"><span class="aw-empty">waiting for tick...</span></div>
</section>
<section id="awareness-processes" class="aw-section">
<h3 class="aw-title">Processes</h3>
<div class="aw-body" id="aw-proc-body"><span class="aw-empty">idle</span></div>
</section>
<section id="awareness-controls" class="aw-section">
<h3 class="aw-title">Workspace</h3>
<div class="aw-body" id="aw-ctrl-body"><span class="aw-empty">no controls</span></div>
</section>
</div>
</div>
<div class="panel">
<div class="panel-header trace-h">Trace</div>
<div id="trace"></div>
</div>
</div>
<script src="/static/app.js"></script>
</body>
</html>