agent-runtime/agent/types.py
Nico acc0dff4e5 v0.9.9: deterministic UI — Thinker declares actions, UI renders without LLM
- Thinker emits ACTIONS: JSON line with follow-up buttons
- UI node is now pure code (no LLM call) — renders actions as buttons,
  extracts tables from pipe-separated tool output, labels for single values
- Controls only in workspace panel, not duplicated in chat
- Process cards only in awareness panel, failed auto-remove after 30s
- Auth expiry detection: 403/1006 shows login button, stops reconnect loop
- Sensor timezone fix: zoneinfo.ZoneInfo("Europe/Berlin") for proper DST
- Cache-Control: no-cache on index.html
- Markdown rendering in chat messages

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

30 lines
679 B
Python

"""Message types flowing between nodes."""
from dataclasses import dataclass, field
@dataclass
class Envelope:
"""What flows between nodes."""
text: str
user_id: str = "anon"
session_id: str = ""
timestamp: str = ""
@dataclass
class Command:
"""Input node's perception — describes what was heard."""
instruction: str
source_text: str
metadata: dict = field(default_factory=dict)
@dataclass
class ThoughtResult:
"""Thinker node's output — either a direct answer or tool results."""
response: str
tool_used: str = ""
tool_output: str = ""
actions: list = field(default_factory=list) # [{label, action, payload?}]