- SensorNode: 5s tick loop with delta-only emissions (clock, idle, memo changes) - Input reframed as perceiver (describes what it heard, not commands) - Output reframed as voice (acts on perception, never echoes it) - Per-node token budgets: Input 2K, Output 4K, Memorizer 3K - fit_context() trims oldest messages to stay within budget - History sliding window: 40 messages max - Facts capped at 20, trace file rotates at 500KB - /api/send + /api/clear endpoints for programmatic testing - test_cog.py test suite - Listener context: physical/social/security awareness Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
34 lines
760 B
HTML
34 lines
760 B
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="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">
|
|
<div class="panel-header trace-h">Trace</div>
|
|
<div id="trace"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/static/app.js"></script>
|
|
</body>
|
|
</html>
|