- Add URL detection, normalization, and direct fetching to web_search tool
(handles standalone URLs, embedded URLs, arxiv PDF→abs conversion)
- Add URL pre-expansion in OpenHands agent to bypass tool loop for URL queries
- Add input truncation (_truncate_if_needed) to prevent context window overflow
- Fix stream_bridge ToolResult field access (content/latency_seconds vs output/latency_ms)
- Add XML tool call format parser alongside Action:/Action Input: format
- Reduce default max_turns from 10→3 to cap worst-case response time
- Add empty response fallback text in frontend useChat hook
- Add channels system, security module, and model catalog updates
- Add 30+ new tests for URL fetching, truncation, and agent behavior
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add React/TypeScript Chat UI frontend with sidebar, conversation management,
model selector, streaming indicator, and savings panel
- Wire up TelemetryStore in `jarvis serve` so TELEMETRY_RECORD events are
persisted to SQLite (matching the pattern from `jarvis ask`)
- Switch agents (orchestrator, react, openhands, openclaw_plugin) and the
direct route handler to use `instrumented_generate()` so token counts are
recorded and the /v1/savings endpoint returns real data
- Restyle savings panel model display with bordered card boxes (green accent
for local, orange for cloud) instead of plain text rows
- Add SGLang engine backend, dashboard routes, savings computation, and
agent-stream bridge for SSE streaming
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>